Tôi sẽ đề nghị bạn sử dụng bộ lọc thích ứng để loại bỏ nhiễu cơ sở 50Hz. một bộ lọc thích ứng lms sẽ làm tốt:
xk = sin(2*pi*50*t1);
dk = ecg1;
bk = [0 0 0]; %Gewichteter Vektor (FIR Koefizienten mit Anfangswert 0)
%Die Werte ändern sich ständig bis sich
%das System adaptiert hat
mu = .1; %Konvergenzgeschwindigkeit des Algorithmes.
%( 0 < mu < 1/(20*(L+1)*Potenz_xk); L Filterorder)
Pot_x=mean(xk.*xk);
%mu=1/(100*(L+1)*Pot_x); % Konvergenzgeschwindigkeit des Algorithmus.
% Bei den Prädiktiven Adaptiven filter
% gilt die Potenz nicht
yk=zeros(size(xk)); % Ausgangssignal zum Zeitpunkt t=0 von der FIR.
ek=zeros(size(xk)); % Fehlersignal zum ZEitpunkt t=0.
%Algorithmus für FIR Adaptiven Filter:
for n = 3:(punkte - 1) %Arranca en 3 porque tiene que almacenar las dos muestras anteriores y la actual (FIR de 2 coeficientes)
xkn = [xk( n ) xk( n - 1 ) xk( n - 2 )]; %Vector niésimo (2 posiciones porque son dos coeficientes).
yk(n) = xkn * bk'; %Resultado parcial de la salida por el vector bk traspuesto.
ek(n) = dk(n) - yk(n); %Señal de error parcial.
bk = bk + 2*mu*ek(n)*xkn; %Actualización instante a instante del vector de pesos.
end %Ende des adaptiven Algorithmes.
Eje1 = figure(1);
set(Eje1,'name','Übung 1: FIR Adaptive Filter','position',[10 10 900 650]);
subplot( 2, 1, 1 );
plot( t1, xk, 'r');
xlabel('n');
ylabel('EKG mit Rauschen');
title('Eingangssignal: Bewegungsartifakt zu filtern');
subplot( 2, 1, 2 );
plot( t1, ek, '-k');
xlabel('n');
ylabel('d[k] - y[k]');
title('Ausgangssignal: EKG ohne Rauschen');