matlab用滤波器滤波后的幅度谱,应用matlab对人体的心电信号进行滤波

41528d3028836879cd698677c3999917.gif应用matlab对人体的心电信号进行滤波

1应用 Matlab 对人体的心电信号进行滤波实验目的综合应用信号频谱分析和数字滤波器设计的知识,实现心电信号的滤波。加深理解信号时域和频域分析的物理概念,理解设计指标的工程概念,认识不同类型滤波器的特性和适用范围。实验环境1. 微型电子计算机(PC) ;2. 安装 Windows10 操作系统,MATLAB 等开发工具。实验原理首先对待滤波的心电信号进行频谱分析,观察信号频率分布的规律,从而确定数字滤波器的类型(FIR 滤波器、IIR 滤波器、自适应滤波器、小波滤波器等) 。在加性噪声的情况下,若信号的频谱与噪声的频谱基本不重叠,可以采用频率选择滤波器(FIR 滤波器、 IIR 滤波器) 。 若信号的频谱与噪声的频谱重叠较多,可以采用自适应滤波、小波滤波等。若为乘性噪声,可以根据同态滤波的原理对信号进行预处理,然后再按照加性噪声的情况处理。在确定了数字滤波器的类型后,还需要根据信号时域特性、频域特性、或时频特性确定滤波器的设计参数,设计出相应的数字滤波器。最后,利用该数字滤波器对信号进行滤波,在时域和频域观察信号滤波的主观及客观效果。若主观及客观效果满足要求,说明分析过程和滤波方法正确有效,若不满足要求,需要重新分析和设计。实验内容和任务要求人体的心电信号通常分布在 200Hz 的范围内,在测量过程中往往会受到工业高频噪声的干扰,所以必须经过低通滤波处理后,才能作为判断心脏功能的有用信息。若已知一个实际心电信号的采样序列样本如下:x(n)={-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0}其中存在高频干扰。要求:(1) 设计一个合适的滤波器,对上述心电信号的采样序列进行滤波处理,滤除其中的干扰成分,画出滤波器的幅频响应和相频响应曲线。(2) 分别显示滤波前后心电信号的时域波形和幅度谱,观察总结滤波作用与效果。2实验分析本题综合应用信号频谱分析和数字滤波器设计的知识,实现心电信号的滤波。首先,我们通过查资料得到心电图的抽样频率一般为 1000Hz。对于任务 1。我们从带噪心电图的频谱出发(进行 FFT 运算) ,观察其幅度谱,从而确定应该使用低通滤波器进行滤波,于是我们设计了巴特沃斯低通滤波器。然后利用 filter()函数对原始信号进行滤波,从而消除高频噪音;对于任务 2。我们利用 FFT 对滤波前后信号分别进行离散傅里叶变幻,然后对结果进行分析。Matlab 代码clc;close all;clear all;%%生成原始信号并作频谱分析fs=1000;T=1/fs;x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];N=length(x);L=1024;t=(0:N-1)/fs;n=0:L-1;f=(n/L-1/2)*fs;X=fftshift(fft(x,L));%%设计 IIR 滤波器并对相关指标进行分析wp=160*2/fs;ws=180*2/fs;Rp=3;Rs=15;[N,wc]=buttord(wp,ws,Rp,Rs);[b,a]=butter(N,wc);H=freqz(b,a,f*2*pi/fs);mag=abs(H);mag_dB=20*log10((mag+eps)/max(mag));pha=angle(H);%%对带躁信号进行滤波并作频谱分析x1=filter(b,a,x);X1=fftshift(fft(x1,L));%%绘制图像figure(1)subplot(2,2,1);plot(t,x);title( 原始心电图时域波形 );xlabel( t/s );ylabel( xt );grid;subplot(2,2,2);plot(f,abs(X)*2/N);title( 原始心电图幅度谱 );xlabel( f/Hz );ylabel( 幅度 );grid;subplot(2,2,3);plot(t,x1);title( 滤波后心电图时域波形 );xlabel( t/s );ylabel( xt );grid;subplot(2,2,4);plot(f,abs(X1)*2/N);title( 滤波后心电图幅度谱 );xlabel( f/Hz );ylabel( 幅度 );grid;figure(2)subplot(3,1,1);plot(f,mag);title( 滤波器幅度谱 );xlabel( f/Hz );ylabel( 幅度 );grid;subplot(3,1,2);plot(f,mag_dB);title( 滤波器幅度谱(dB) );xlabel( f/Hz );ylabel( 幅度 );grid;3subplot(3,1,3);plot(f,pha);title( 滤波器相位谱 );xlabel( f/Hz );ylabel( 相位 );grid;实验结果以及分析实验结果分析从实验结果来看,滤波后的效果还是不错的,从滤波前的信号幅度谱来看,高频噪音主要集中在 200Hz 以上,于是利用低通滤波器将其去除。滤波后的心电图更加符合心脏跳动的规律(P 波,QRS 波,T 波,U 波) 。4实验总结通过本次实验,加深了我们对信号频谱分析和数字滤波器设计的知识的理解,并对滤波器有了更进一步的认识,掌握了利用滤波器处理图片的方法,理解了设计指标的工程概念,认识到了不同类型滤波器的特性和适用范围。实验中,我们对Matlab 中一些函数的用法还不清楚,后面经过查资料以及尝试后均得到了解决。总的来说,本次实验基本上达到了预期的实验效果,是一次比较成功的实验。

你可能感兴趣的:(matlab用滤波器滤波后的幅度谱,应用matlab对人体的心电信号进行滤波)