(2) 比较两种方法的优缺点;
(3) 利用y=filter(b,a,x)函数观察对实际心电图信号的滤波效
果。
人体心电图信号在测量过程中往往受到工业高频干扰,所以必须经过低通滤波器处理。已知某一实际心电图信号的采样序列如下:
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],共56点
13
实验四 FFT频谱分析及应用
一、实验目的: 1. 2.
通过实验加深对FFT的理解;
熟悉应用FFT对典型信号进行频谱分析的方法。
二、实验原理与方法:
在各种信号序列中,有限长序列占重要地位。对有限长序列可以利用离散傅立叶变换(DFT)进行分析。DFT不但可以很好的反映序列的频谱特性,而且易于用快速算法(FFT)在计算机上进行分析。
有限长序列的DFT是其z变换在单位圆上的等距离采样,或者说是序列傅立叶的等距离采样,因此可以用于序列的普分析。FFT是DFT的一种快速算法,它是对变换式进行一次次分解,使其成为若干小数据点的组合,从而减少运算量。
在matlab信号处理工具箱中的函数fft(x,n),可以用来实现序列的N点快速傅立叶变换。
经函数fft求得的序列一般是复序列,通常要求出其幅值和相位。MATLAB中提供了求复数的幅值和相位的函数:abs、angle,这些函数一般和fft同时使用。 三、实验内容
14
1.模拟信号x(t)?2sin(4?t)?5cos(8?t),以t?0.01n(n?0:N?1)进行采样,求:
(1)N=40点FFT的幅度频谱,从图中能否观察出信号的2个频谱分量?
(2)提高采样点数,如N=128,再求该信号的幅度频谱,此时幅度频谱发生了什么变化?信号的2个模拟频率和数字频率各为多少?FFT频谱分析结果与理论上是否一致? 2.一个连续信号含三个频谱分量,经采样得以下序列:
x(n)?sin(2??0.15n)?cos(2??(0.15?df)n)?cos(2??(0.15?2df)n)
(1)N=64,df分别为116、1/64,观察其频谱;
(2)N=64、128,df为1/64,做128点得FFT,其结果有何不同? 3.
被噪声污染得信号,比较难看出所包含得频率分量,如一
个由50Hz和120Hz正弦信号
构成的信号,受零均值随机噪声的干扰,数据采样率为1000Hz,试用FFT函数来分析其信号频率成分,要求:(1)画出时域波形;(2)分析信号功率谱密度。
注:在MATLAB中,可用函数rand(1,N)产生均值为0,方差为1,长度为N的高斯随机序列。
四、实验程序
15
程序1: N=40;n=0:N-1; t=0.01*n;
x=2*sin(4*pi*t)+5*cos(8*pi*t); k=0:N/2;w=2*pi/N*k; X=fft(x,N);
magX=abs(X(1:N/2+1));
subplot(2,1,1);stem(n,x,'.');title('signal x(n)'); subplot(2,1,2);plot(w/pi,magX);title('FFT N=40'); xlabel('f (unit :pi)');ylabel('|X|');grid
N=40 N=128
signal x(n)1050-5-10signal x(n)1050-5-1005101520FFT N=4025303540020406080100120140FFT N=128400300100|X||X|50200100000.10.20.30.40.50.6f (unit :pi)0.70.80.91000.10.20.30.40.50.6f (unit :pi)0.70.80.91
程序2: N=128;n=0:N-1; t=n; df=1/64;
x=sin(2*pi*0.15*t)+cos(2*pi*(0.15+df)*t)+cos(2*pi*(0.15+2*df)*t);
16