clear;
load('HA3_signal.mat')
load('Notch_filter.mat')

% colors
grey = [0.651 0.651 0.651];

nfft  = length(signal); % Anzahl Messwerte
fa = sampling_rate; % Abtastfrequenz 200 Hz des Signals

%% Filterung
Fg = 20;
Fn = 0.5*fa;
[B,A] = butter(10,Fg/Fn,'low'); % IIR Tiefpassfilter
signal_filt = filter(B,A,signal);

% Notchfilter
signal_filt2 = filter(Hd_notch,signal_filt);
signal_filt = signal_filt2;



%% idealisiertes EGK signal
x = 2000*ecg(fa).';
y = repmat(sgolayfilt(x,0,21),[1 200]);
signal_ideal = y(1:nfft);


%% Frequenzbereich
win = hann(nfft)'; % Hanning Fensterfunktion
signal_win = signal .* win * nfft / sum(win); % Fensterung mit Amplitudenkorrektur

% Funktion aufrufen
[~, mag_dB, fv] = FFT_betragsspektrum( signal_win, 2^nextpow2( nfft ), fa, 0) ;

% Amplitude in dB
figure(1)
plot(fv,mag_dB,'Color',grey);
grid on;
hold on;

% Funktion aufrufen
signal_win = signal_ideal .* win * nfft / sum(win); % Fensterung mit Amplitudenkorrektur
[~, mag_dB, fv] = FFT_betragsspektrum( signal_win, 2^nextpow2( nfft ), fa, 0) ;

plot(fv,mag_dB,'b');

hold on;

% Funktion aufrufen
signal_win = signal_filt .* win * nfft / sum(win); % Fensterung mit Amplitudenkorrektur
[~, mag_dB, fv] = FFT_betragsspektrum( signal_win, 2^nextpow2( nfft ), fa, 0) ;

plot(fv,mag_dB,'r');
legend('original','ideal','gefiltert')
xlabel('Frequenz in Hz');
ylabel('Amplitude dB');

%% Zeitbereich

N = 1:length(signal);
figure(2)
plot(N,signal,'Color',grey);
hold on;
plot(N,signal_ideal,'b','Linewidth',1.5);
hold on;
plot(N,signal_filt,'r','Linewidth',1.5);
legend('original','ideal','gefiltert')
xlabel('Sample N')
ylabel('Amplitude')
xlim([1 1200]) % nur Ausschnitt darstellen (wenige Perioden)
grid on;