数字信号处理--实验五-用DFT(FFT)对信号进行频谱分析 - 图文 联系客服

发布时间 : 星期四 文章数字信号处理--实验五-用DFT(FFT)对信号进行频谱分析 - 图文更新完毕开始阅读3079ffa81be8b8f67c1cfad6195f312b3069eb13

学生实验报告

开课学院及实验室: 电子楼317

2013 年 4 月 29 日

机械与电气工年级、专学院 姓名 学号 程学院 业、班 实验课程名称 数字信号处理实验 成绩 指导实验项目名称 实验五 用DFT(FFT)对信号进行频谱分析 老师 .

一、实验目的 学习DFT的基本性质及对时域离散信号进行频谱分析的方法,进一步加深对频域概念和数字频率的理解,掌握MATLAB函数中FFT函数的应用。 二、实验原理 离散傅里叶变换(DFT)对有限长时域离散信号的频谱进行等间隔采样,频域函数被离散化了,便于信号的计算机处理。 设x(n)是一个长度为M的有限长序列,x(n)的N点傅立叶变换: N?1?j2? X(k)?DFT[x(n)]N??x(n)eNkn0?k?N?1n?0?j2?其中WN?eN,它的反变换定义为: N?1x(n)?1?nkN?X(k)WNk?0 N?1令z?W?kX(z)z?WN?k?n?x(n)WnkNN,则有:?0 ?可以得到,X(k)?X(z)z?WN?k,z?W?kN是Z平面单位圆上幅角为??2Nk的点,就是将单位圆进行N等分以后第K个点。所以,X(K)是Z变换在单位圆上的等距采样,或者说是序列傅立叶变换的等距采样。时域采样在满足Nyquist定理时,就不会发生频谱混叠。DFT是对序列傅立叶变换的等距采样,因此可以用于序列的频谱分析。 如果用FFT对模拟信号进行谱分析,首先要把模拟信号转换成数字信号,转换时要求知道模拟信号的最高截至频率,以便选择满足采样定理的采样频率。一般选择采样频率是模拟信号中最高频率的3~4倍。另外要选择对模拟信号的观测时间,如果采样频率和观测时间确定,则采样点数也确定了。这里观测时间和对模拟信号进行谱分析的分辨率有关,最小的观测时间和分辨率成倒数关系。最小的采样点数用教材相关公式确定。要求选择的采样点数和观测时间大于它的最小值。 如果要进行谱分析的模拟信号是周期信号,最好选择观测时间是信号周期的整数倍。如果不知道.

信号的周期,要尽量选择观测时间长一些,以减少阶段效应的影响。 用FFT对模拟信号作谱分析是一种近似的谱分析,首先一般模拟信号(除周期信号以外)的频谱是连续谱,而用FFT作谱分析得到的是数字谱,因此应该取FFT的点数多一些,用它的包络作为模拟信号的近似谱。另外,如果模拟信号不是严格的带限信号,会因为频谱混叠现象引起谱分析的误差,这种情况下可以预先将模拟信号进行滤波,或者尽量采样频率取高一些。 一般频率混叠发生在折叠频率附近,分析时要注意因频率混叠引起的误差。最后要注意一般模拟信号是无限长的,分析时要截断,截断的长度和分辨率有关,但也要尽量取长一些,取得太短会截断引起的误差会很大。举一个极端的例子,一个周期性正弦波,如果所取观察时间太短,例如取小于一个周期,它的波形和正弦波相差太大,肯定误差很大,但如果取得长一些,即使不是周期的倍数,这种截断效应也会小一些。 如同理论课教材所讨论的,在运用DFT进行频谱分析的时候可能有三种误差,即: (1)混叠现象 当采样率不满足Nyquist定理,经过采样就会发生频谱混叠。这导致采样后的信号序列频谱不能真实的反映原信号的频谱。所以,在利用DFT分析连续信号频谱的时候,必须注意这一问题。避免混叠现象的唯一方法是保证采样的速率足够高,使频谱交叠的现象不出现。这告诉我们,在确定信号的采样频率之前,需要对频谱的性质有所了解。在一般的情况下,为了保证高于折叠频率的分量不会出现,在采样之前,先用低通模拟滤波器对信号进行滤波。 (2)泄漏现象 实际中的信号序列往往很长,甚至是无限长。为了方便,我们往往用截短的序列来近似它们。这样可以使用较短的DFT来对信号进行频谱分析。这种截短等价于给原信号序列乘以一个矩形窗函数。值得一提的是,泄漏是不能和混叠完全分离开的,因为泄漏导致频谱的扩展,从而造成混叠。为了减少泄漏的影响,可以选择适当的窗函数使频谱的扩散减到最小。 (3)栅栏效应 .

因为DFT是对单位圆上Z变换的均匀采样,所以它不可能将频谱视为一个连续函数。这样就产生了栅栏效应,从某种角度看, 用DFT来观看频谱就好像通过一个栅栏来观看一幅景象,只能在离散点上看到真实的频谱。这样的话就会有一些频谱的峰点或谷点被“栅栏”挡住,不能被我们观察到。减小栅栏效应的一个方法是在源序列的末端补一些零值,从而变动DFT的点数。这种方法的实质是改变了真是频谱采样的点数和位置,相当于搬动了“栅栏”的位置,从而使得原来被挡住的一些频谱的峰点或谷点显露出来。注意,这时候每根谱线所对应的频和原来的已经不相同了。 从上面的分析过程可以看出,DFT可以用于信号的频谱分析,但必须注意可能产生的误差,在应用过程中要尽可能减小和消除这些误差的影响。 DFT运算量较大,快速离散傅里叶变换算法FFT是解决方案。FFT并不是DFT不相同 的另一种变换,而是为了减少DFT运算次数的一种快速算法。它是对变换式进行一次次的分解,使其成为若干小点数DFT的组合,从而减小运算量。常用的FFT是以2为基数的,其长度为N?2M。它的运算效率高,程序比较简单,使用也十分的方便。当需要进行变换的序列的长度不是2的整数次方的时候,为了使用以2为基的FFT,可以用末尾补零的方法,使其长度延长至2的整数次方。IFFT一般也可以通过FFT程序来完成。 三、使用仪器、材料 1、硬件:计算机 2、软件:Matlab 四、实验步骤 (一) 离散信号 给定参考实验信号如下: .

x(n)3(n):用x1(n)?R4以8为周期进行周期性延拓形成的周期序列。 (1) 分别以变换区间N=8,16,32,对x1(n)?R4(n)进行DFT(FFT),画出相应的幅频特性曲线; (2) 分别以变换区间N=4,8,16,对x2(n)分别进行DFT(FFT),画出相应的幅频特性曲线; (3) 对x3(n)进行频谱分析,并选择变换区间,画出幅频特性曲线。 (二)连续信号 1. 实验信号: x1(t)?R?(t) 选择??1.5ms,式中R?(t)的波形以及幅度特性如图7.1所示。 x2(t)?sin(2?ft??/8) 式中频率f自己选择。 x3(t)?cos8?t?cos16?t?cos20?t 2. 分别对三种模拟信号选择采样频率和采样点数。 对x1(t)?R?(t),选择采样频率fs?4kHz,8kHz,16kHz,采样点数用?.fs计算。 对x2(t)?sin(2?ft??/8),周期T?1/f,频率f自己选择,采样频率fs?4f,观测时间Tp?0.5T,T,2T,采样点数用Tpfs计算。 图5.1 R(t)的波形及其幅度特性 .

对x3(t)?cos8?t?cos16?t?cos20?t,选择采用频率fs?64Hz,采样点数为16,32,64。 3. 分别对它们转换成序列,按顺序用x1(n),x2(n),x3(n)表示。 4. 分别对它们进行FFT。如果采样点数不满足2的整数幂,可以通过序列尾部加0满足。 5. 计算幅度特性并进行打印。 五、实验过程原始记录(数据、图表、计算等) (一) 离散信号 %x1(n)?R4(n) n=0:1:10; xn=[ones(1,4),zeros(1,7)]; %输入时域序列向量xn=R4(n) Xk8=fft(xn,8); %计算xn的8点DFT Xk16=fft(xn,16); %计算xn的16点DFT Xk32=fft(xn,32); %计算xn的32点DFT k=0:7;wk=2*k/8; %产生8点DFT对应的采样点频率(关于π归一化值) subplot(2,2,1);stem(n,xn,'.'); title('(a) x_1 (n)');xlabel('n');ylabel('x_1 (n)'); subplot(2,2,2);stem(wk,abs(Xk8),'.'); %绘制8点DFT的幅频特性图 title('(b) 8点DFT的幅频特性图');xlabel('\\omega/\\pi');ylabel('幅度'); k=0:15;wk=2*k/16; %产生16点DFT对应的采样点频率(关于π归一化值) subplot(2,2,3);stem(wk,abs(Xk16),'.'); %绘制16点DFT的幅频特性图 title('(c) 16点DFT的幅频特性图');xlabel('\\omega/\\pi');ylabel('幅度'); k=0:31;wk=2*k/32; %产生32点DFT对应的采样点频率(关于π归一化值) subplot(2,2,4);stem(wk,abs(Xk32),'.'); %绘制32点DFT的幅频特性图 title('(d) 32点DFT的幅频特性图'); .

xlabel('\\omega/\\pi'); ylabel('幅度'); 运行结果: %x2(n) n=0:50; xn=cos(pi/4*n); %输入时域序列向量cos(pi/4*n) Xk4=fft(xn,4); %计算xn的4点DFT Xk8=fft(xn,8); %计算xn的8点DFT Xk16=fft(xn,16); %计算xn的16点DFT k=0:3;wk=2*k/4; %产生4点DFT对应的采样点频率(关于π归一化值) subplot(2,2,1);stem(n,xn,'.'); %绘制4点DFT的幅频特性图 title('(a) x_2 (n)'); .

xlabel('n'); ylabel('x_2 (n)'); subplot(2,2,2);stem(wk,abs(Xk4),'.'); %绘制4点DFT的幅频特性图 title('(b) 4点DFT的幅频特性图');xlabel('\\omega/\\pi');ylabel('幅度');axis([0,2,0,2]) k=0:7;wk=2*k/8; %产生8点DFT对应的采样点频率(关于π归一化值) subplot(2,2,3);stem(wk,abs(Xk8),'.'); %绘制8点DFT的幅频特性图 title('(c) 8点DFT的幅频特性图'); xlabel('\\omega/\\pi'); ylabel('幅度'); k=0:15;wk=2*k/16; %产生32点DFT对应的采样点频率(关于π归一化值) subplot(2,2,4);stem(wk,abs(Xk16),'.'); %绘制16点DFT的幅频特性图 title('(d) 16点DFT的幅频特性图'); xlabel('\\omega/\\pi'); ylabel('幅度'); 运行结果: .