LMS算法滤除心电工频干扰.docx
文本预览下载声明
信号处理基础ECG心电图信号干扰消除实验报告姓名:xxxxxx班级:xx班学号:xxxxxxxxxx实验要求interference cancellationGiven a received signal r(k) which consist of a source signal s(k) and a sinusoidal interference with known frequency. The task is to extract s(k) from r(k). Notice that the amplitude and phase of the sinusoid is unknown. A well-known application is to remove 50/60 Hz power line interference in the recording of the electrocardiogram (ECG).Matlab仿真结果结果分析维纳滤波器参数是固定的,适合于平稳随机信号。卡尔曼滤波器参数是时变的,适合于非平稳随机信号。然而,只有在信号和噪声的统计特性先验已知的情况下,这两种滤波技术才能获得最优滤波。在实际应用中,常常无法得到信号和噪声统计特性的先验知识。在这种情况下,自适应滤波技术能够获得极佳的滤波性能,因而具有很好的应用价值。本程序是基于LMS算法的自适应滤波,从上图可以看出,滤波效果也是很不错的。源代码av=1;f0=0.2;[s,d]=generateDemoECG(av,f0);% 生成模拟ECG信号;N=length(s);f0=50;fs=500;t=[1:N];n1=100*sin(2*pi*f0*t/fs+20);d=n1+s; % 生成加50HZ干扰模拟ECG信号;%*************************LMS算法滤波*******************************x1=sin(2*pi*f0*t/fs);x2=cos(2*pi*f0*t/fs);t=(0:0.001:1);w0(1)=0;w1(1)=0;mu=0.007;y(1)=w0(1)*x1(1)+w1(1)*x2(1);e(1)=d(1)-y(1);w0(2)=w0(1)+2*mu*e(1)*x1(1);w1(2)=w1(1)+2*mu*e(1)*x2(1);for n=2:Ny(n)=w0(n)*x1(n)+w1(n)*x2(n);e(n)=d(n)-y(n);w0(n+1)=w0(n)+2*mu*e(n)*x1(n);w1(n+1)=w1(n)+2*mu*e(n)*x2(n);endr=d-w0(600)*x1-w1(600)*x2; %滤波后心电信号er=e.*e;%误差功率figure(1)subplot(2,1,1)plot(s((1:2000)))title(模拟ECG信号);xlabel(时间t/ms);ylabel(电压 );subplot(2,1,2)plot(r(1:2000))title(滤波后模拟ECG信号);xlabel(时间t/ms);ylabel(电压 );figure(2)subplot(2,1,1)plot(w0(1:1000))title(w0 逼近曲线);subplot(2,1,2)plot(w1(1:1000))title(w1 逼近曲线);figure(3)subplot(1,1,1)semilogy(er(1:2000));title(误差功率);generateDemoECG.mECG信号产生文件,将本文件代码放到MATLAB工作路径下function [x2,x3]=generateDemoECG(av,af)pv=0.1*208;qv=0.1*208;rv=1*208;sv=0.2*208;tv=0.2*208;st=0.1*208;x2(1:100)=0;x2(101:150)=pv-pv*cos([0:49] * 2*pi/50);x2(151:170)=0;x2(171:175) = -[1:5]*qv/5;x2(176:190)=-qv+[1:15]*(rv+qv)/15;x2(191:210)=rv- [1:20]*(rv+sv)/20;x2(210:219)=-sv + [1:10]*(sv+st)/10;x2(220:259)=st;x2(260:359)=tv-tv*cos([1:100]*2*pi/100) + st- [1:100]*st/100;x2(360:500)=0;x2(501:1000)=x2(1:500);x2(1001:2000)=x2(1:1000);x2(2001:
显示全部