实验五实验项目名称:用FFT作谱分析实验日期:2015.05.13实验学时:2实验地点:S1-326姓名:秦显富学号:1201100118实验成绩:指导教师签字:一、实验目的和要求(1)进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的性质)(2)熟悉FFT算法原理及子程序的应用。(3)掌握用FFT对连续信号和时域离散信号进行频谱分析的基本方法。了解可能出现的分析误差和原因,以便在实际中正确应用FFT。二、实验内容与原理1.如果用FFT对模拟信号进行谱分析,首先要把模拟信号转换成数字信号,转换时要求知道模拟信号的最高截止频率,以便选择满足采样定理的采样频率。一般选择采样频率是模拟信号中最高频率的3~4倍。另外要选择对模拟信号的观测时间,如果采样频率和观测时间确定,则采样点数也确定了。这里观测时间和对模拟信号进行谱分析的分辨率有关,最小的观测时间和分辨率成倒数关系。要求选择的采样点数和观测时间大于它的最小值。用FFT作谱分析时,要求做FFT的点数服从2的整数幂,这一点在上面选择采样点数时可以考虑满足,即使满足不了,可以通过在序列尾部加0完成。如果要进行谱分析的模拟信号是周期信号,最好选择观测时间是信号周期的整数倍。如果不知道信号的周期,要尽量选择观测时间长一些,以减少截断效应的影响。用FFT对模拟信号作谱分析是一种近似的谱分析。首先一般模拟信号(除周期信号外)的频谱是连续频谱,而用FFT作谱分析得到的是数字谱,因此应该取FFT的点数多一些,用它的包络作为模拟信号的近似谱。另外,如果模拟信号不是严格的带限信号,会因为频谱混叠现象引起谱分析的误差,这种情况下可以预先将模拟信号进行预滤,或者尽量将采样频率取高一些。一般频率混叠发生在折叠频率附近,分析时要注意因频率混叠引起的误差。最后要注意一般模拟信号是无限长的,分析时要截断,截断的长度和分辨率有关,但也要尽量取长一些,取得太短因截断引起的误差会很大。举一个极端的例子,一个周期性正弦波,如果所取观察时间太短,例如取小于一个周期,它的波形和正弦波相差太大,肯定误差很大,但如果取得长一些,即使不是周期的整倍数,这种截断效应也会小一些。2.实验内容(1)复习DFT的定义、性质和用DFT作谱分析的有关内容。(2)复习FFT算法原理与编程思想。(3)编制信号产生程序,产生以下典型信号供谱分析用:)()(41nRnx,0,8,1)(2nnnxnnn其他7430,0,3,4)(3nnnxnnn其他7430nnx4cos)(4)8/2sin()(5fttx式中频率f自己选择;)20cos()16cos()8cos()(6ttttx(4)分别以变换区间8N,16,32,对)(1nx进行FFT,画出相应的幅频特性曲线。(5)分别以变换区间8N,16,对)(2nx,)(3nx进行FFT,画出相应的幅频特性曲线。(6)分别以变换区间4N,8,16,对)(4nx进行FFT,画出相应的幅频特性曲线。(7)分别对模拟信号)()(65txtx和选择采样频率和采样点数。对)8/2sin()(5fttx,周期fT/1,频率f自己选择,采样频率ffs4,观测时间TTp5.0,T,T2,采样点数用spfT计算。对)20cos()16cos()8cos()(6ttttx,选择采样频率Hzfs64,采样点数为16,32,64。(8)分别将模拟信号)()(65txtx和转换成序列,用)(5nx,)(6nx表示,再分别对它们进行FFT,并画出相应的幅频特性曲线。三、实验软硬件环境计算机一台、MATLAB2014a仿真软件四、实验编程及调试4.x1=[1,1,1,1];nx1=0:3;figure;stem(nx1,x1,'.');title('x1序列');4.1x1=[1,1,1,1];nx1=0:3;X1=fft(x1,8);nX1=0:7;figure(1),stem(nX1,abs(X1));title('N=8幅度谱');4.2x1=[1,1,1,1];nx1=0:3;X1=fft(x1,16);nX1=0:15;figure(1),stem(nX1,abs(X1));title('N=8幅度谱');4.3x1=[1,1,1,1];nx1=0:3;X1=fft(x1,32);nX1=0:31;figure(1),stem(nX1,abs(X1));title('N=32幅度谱');5.1n=0:7;x=[1,2,3,4,4,3,2,1,];stem(n,x);title('x2序列');5.2x2=[1,2,3,4,4,3,2,1];nx2=0:7;X2=fft(x2,8);nX2=0:7;figure(1),stem(nX2,abs(X2));title('N=8幅度谱');5.3x2=[1,2,3,4,4,3,2,1];nx2=0:7;X2=fft(x2,16);nX2=0:15;figure(1),stem(nX2,abs(X2));title('N=16幅度谱');5.4x3=[4,3,2,1,1,2,3,4];nx3=0:7;X3=fft(x3,8);nX3=0:7;figure(1),stem(nX3,abs(X3));title('N=8幅度谱');x3=[4,3,2,1,1,2,3,4];nx3=0:7;X3=fft(x3,16);nX3=0:15;figure(1),stem(nX3,abs(X3));title('N=16幅度谱');6nx4=0:3;x4=cos(nx4*pi/4);X4=fft(x4,4);nX4=0:3;figure(1),stem(nX4,abs(X4));title('N=4幅度谱');nx4=0:7;x4=cos(nx4*pi/4);X4=fft(x4,8);nX4=0:7;figure(1),stem(nX4,abs(X4));title('N=8幅度谱');nx4=0:15;x4=cos(nx4*pi/4);X4=fft(x4,16);nX4=0:15;figure(1),stem(nX4,abs(X4));title('N=16幅度谱');7.n=0:1;x5=sin(pi*n/2+pi/8);X5=fft(x5,2);nX5=0:1;figure(1),stem(nX5,abs(X5));title('N=2幅度谱');n=0:3;x5=sin(pi*n/2+pi/8);X5=fft(x5,4);nX5=0:3;figure(1),stem(nX5,abs(X5));title('N=4幅度谱');n=0:7;x5=sin(pi*n/2+pi/8);X5=fft(x5,8);nX5=0:7;figure(1),stem(nX5,abs(X5));title('N=8幅度谱');n=0:15;x6=cos(n*pi/8)+cos(n*pi/4)+cos(5*pi*n/16);X6=fft(x6,16);nX6=0:15;figure(1),stem(nX6,abs(X6));title('N=16幅度谱');n=0:31;x6=cos(n*pi/8)+cos(n*pi/4)+cos(5*pi*n/16);X6=fft(x6,32);nX6=0:31;figure(1),stem(nX6,abs(X6));title('N=32幅度谱');n=0:63;x6=cos(n*pi/8)+cos(n*pi/4)+cos(5*pi*n/16);X6=fft(x6,64);nX6=0:63;figure(1),stem(nX6,abs(X6));title('N=64幅度谱');五、实验结果及分析567六、提问及思考(1)在N=8时,)(2nx和)(3nx的幅频特性会相同吗?为什么?N=16呢?答:在N=8时,)(2nx和)(3nx的幅频特性会相同吗?为什么?N=16呢?在N=8时,)(2nx和)(3nx的幅频特性不相同,在N=16时,)(2nx和)(3nx的幅频特性相同(2)如果周期信号的周期预先不知道,如何用FFT进行谱分析?答:如果周期信号x(n)的周期预先不知道,可先截取M点进行DFT,得到XM(k),再将截取长度扩大1倍截取,得到X2M(k),比较XM(k)和X2M(k),如果二者的主谱差别满足分析误差要求,则以XM(k)或X2M(k)近似表示x(n)的频谱,否则,继续将截取长度加倍,直至前后两次分析所得主谱频率差别满足误差要求。