1、实验二 应用 FFT 对信号进行频谱分析220090401310074 海南大学实验二 应用 FFT 对信号进行频谱分析 一、实验目的1、进一步加深 DFT 算法原理和基本性质的理解(因为 FFT 只是 DFT 的一种快速算法, 所以 FFT 的运算结果必然满足 DFT 的基本性质)。2、学习用 FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用 FFT。二、实验原理i. 模拟信号频率 和采样得到的数字信号频率 的关系:/sTfii. DTFT 与对应的理想采样信号的频谱之间的对应关系为: |()()jwaTXje即 DTFT 与 FT 的关
2、系为: 12()()j arejrT就是说,只要知道了采样序列的频谱,就可以得到相应的连续信号的频谱。(满足耐奎斯特采样定理)iii. DFT 是对离散时间序列的频域采样,是对 ZT 上单位圆上的均匀采样,或者是DTFT 上 的等间距采样。当满足频域的采样定理时,便可以由频域的采样值恢0,2复 ZT 或者是 DTFT。所以能用 DFT 对信号进行频谱分析。当采样的点数足够时,便能用它的包络作为模拟信号的近似谱。近似的过程中,可能会有混叠现象,泄露现象和栅栏效应这三种误差。iv. 离散傅立叶变换 DFT: 10()(),01,2.NnknXkxWN10()()(),.1nkNnxnIDFTX实验
3、二 应用 FFT 对信号进行频谱分析3反变换与正变换的区别在于 变为 ,并多了一个 的运算。因为 和NW1N1NW对于推导按时间抽取的快速傅立叶变换算法并无实质性区别,因此借助 FFT 来实现1NWIFFT.三、实验内容和结果:1. 高斯序列的时域和频域特性:高斯序列的时域表达式: 2(),015()npqaex其 它i. 固定参数 p=8,改变参数 q 的值,记录时域和频域的特性如下图。图 1结论:从时域图中可以看到,q 参数反应的是高斯序列能量的集中程度:q 越小,能量越集中,序列偏离中心衰减得越快,外观上更陡峭。同时,随着 q 的增大,时域序列总的能量是在增大的。频域上,对应的,随着 q
4、 的增加,由于时域序列偏离中心的衰减的缓慢,则高频分量也就逐渐减,带宽变小:时域上总的能量增大,故也可以看到低频成分的幅度都增大。实验二 应用 FFT 对信号进行频谱分析4ii. 固定参数 q,改变参数 p,记录时域和频域的特性如下图 2.图 2结论:p 是高斯序列的对称中心,p 的变化在时域表现为序列位置的变化。由于选取的矩形窗函数一定,p 值过大时,会带来高斯序列的截断。并且随着 p 的增大,截断的越来越多。对应地,看频域上的变化:截断的越多,高频的成分也在增多,以至发生谱间干扰,泄露现象变得严重。从图中可以看到,在 p=13 时,已经有混叠存在。当p=14 时,混叠进一步加大,泄露变得更
5、明显。2. 衰减正弦序列的时域和幅频特性: sin(2),015()0,befx其 它改变参数 f,记录时域和幅频特性如下图 3.实验二 应用 FFT 对信号进行频谱分析5图 3结论:随着 f 的增大,时域上可以看到,序列的变化明显快多了。从幅度谱上看,序列的高频分量逐渐增多,低频分量逐渐减小,以至于发生严重的频谱混叠。当 f 增大到一定的程度,从图中可以看到,f=0.4375 和 f=0.5625 时的幅度谱是非常相似的,此时已经很难看出其幅度谱的区别。3. 三角序列的时域表达式和对应的时域和幅频特性如图 4: c1,03()847,nx其 它图 4结论:随着 fft 取点数的增多,能够看到
6、的幅度谱的频率分量变得丰富,得到的是高密度更高的谱,也就是减轻了栅栏效应。但是这种截断后补零的方法不能提高物理频率的分辨率。因为截断已经使频谱变模糊,补零后使采样间隔减小,但得到的频谱采样的包络任然是已经变模糊的频谱,所以频谱的分辨率没有提高。因此,要提到频率的分辨率,就必须对原始信号截取的长度加长,也就是增加采样时间 的长度。0T另外,可以看到,三角序列的频谱几乎集中在低频区,旁瓣的幅度非常小。4. 反三角序列的时域表达式和对应的时域和频域特性如图 5: 4,03()7,dnx其 它实验二 应用 FFT 对信号进行频谱分析6图 5结论:同样,随着 fft 取点数的增多,能够看到的幅度谱的频率
7、分量变得丰富,得到的是高密度更高的谱,减轻了栅栏效应。另外,可以看到,求 8 点的 fft 时,三角序列和反三角序列的幅频特性是一样的。原因在于:反三角序列 可以看成是三角序列 的 4 点圆周移位,即()dxnx()cn,根据 DFT 的圆周移位性质,则有 .由x()4)dcNnR 4()()kdNcXW于 ,所以 ,即 ,故 .=8kkW-( 1) ()1()kdcX不过,当补零之后,能够看到的频率成分增多,可以发现,反三角序列的频谱较宽,旁瓣的分量很多。四、调用 fft 函数计算 ifft 的函数原理: 10x()(k)()NnkkniftXW变换上式有: 1*0()()NnkNkxn于是
8、,可以调用 fft 模块,即实验二 应用 FFT 对信号进行频谱分析7*1()()xnftXk相应的程序清单如下:function x=myifft(y)N=length(y);y1=conj(y);x1=fft(y1);x=conj(x1)/N;验证: x=1 2 3 5 7x =1 2 3 5 7 y=fft(x,6)y =Columns 1 through 418.0000 -8.0000 + 1.7321i 0 - 5.1962i 4.0000 Columns 5 through 60 + 5.1962i -8.0000 - 1.7321i a=myifft(y)a =1 2 3 5
9、7 0可以看到,a 只是在 x 的末尾补了一个 0,原因在于在 y 是 x 的 6 点 fft,即在调用 fft的过程中有给 x 的末尾补 0 的过程。所以,在回调的过程中,补充的 0 还在。五、思考题1、在 N=8 时, 和 的 DFT 幅频特性会相同吗? 为什么? N=16 呢?c()xnd在 N=8 时, 和 的幅频特性相同。N=16 时不同。原因如下:当 N=8 时,c c1,03()847()1,234,1,nxxn, 即其 它实验二 应用 FFT 对信号进行频谱分析8,d d4,03()7,xn4,321,4,nx即 ( ) =其 它谱分析时, ,其中 。当 N=8 时,10)()
10、()(NnknWFTkX Nje2,此时 ,代入,有:4jNeW70470)()()( knjnkNexx(1012345674444444()12+3+2jkjkjkjkjkjkjkjkcXeee)(2012345674444444() 13jkjkjkjkjkjkjkjkd e)调整顺序,有(345670124444444()123+3+jkjkjkjkjkjkjkjkdXeeee)(1)式和(3)式相对照,且 ,故有21jk,即有 。故 N=8 时,x2(n)和 x3(n)的幅频特kkdcX( ) =(-)( ) cdX( ) ( )性相同。或者像在实验结论中运用 DFT 圆周移位的性质
11、来说明,不再重复。而当 N=16 时, 。此时 ,易知8jNeW70n8150)()()( knjnkNexWxk。即 N=16 时, 和 的幅频特性不同。)()(32kXcX( ) d( )2、实验中的信号序列 和 ,在单位圆上的 Z 变换频谱 和c()xnd ejcX( )会相同吗?哪一个的低频分量多,说明原因?jd( e)和 是不同的,三角序列 的低频分量更多。可以这样解释:jcX( ) jd( e) ejcX( ),并且频谱的分布反映时域变化的快慢程度。()=()j jnneDTFxe( )就是说,时域信号变化的越剧烈,频域的高频分量便较多,对应的,时域的信号较平缓,实验二 应用 FF
12、T 对信号进行频谱分析9则频域的低频分量较多。可以看到,在 和 的非零域内, 和 的变换c()xndc()xnd程度是相当的,变化量都是 1(增加 1 或者减小 1) 。不过在零域和非零域的分界处,的变化量是 1,而 的变化量是 4,要大得多,也就是变化的剧烈的多,就不奇c()xnd()xn怪 的高频分量要多了。d3、对于一个有限长序列进行离散傅里叶变换(DFT)时,等价于将该序列周期延拓后进行傅里叶级数(DFS)展开。因为 DFS 也只是取一个周期来运算,所以 FFT 在一定的条件下也可以用以分析周期信号序列。如果实正信号 ,用 16 点的 FFT 来做sin(2),0.1fDFS 运算,得
13、到的频谱是信号的真实谱吗?不是的,该实正信号的周期 N=10,只有当进行 N 的整数倍的 FFT 时,才能得到真实的频谱。六、实验总结数字低频是 ,数字高频是 .当满足耐奎斯特采样定理: 时, 02scf,当且仅当 时, .也就是说,数字频率中的高频 对的是cs2/cf2scfc模拟频率 .当在 DTFT 的 的 内采样 N 个点时,第 N/2 条谱线就代表着数1sejX( ) 0字最高频率 ,也即代表着模拟频率 。一般的小于 的频率 ,可以用1/fs1f2sf来计算对应的谱线位置。所以,看 DFT 幅频特性的第 N/2 条谱线附近的幅0fsfkFN值就可以知道,频谱间的干扰和混叠程度。同时,
14、若采样频率 越高,频谱能分析的1/fs范围自然就越广。对信号进行谱分析的重要问题是频谱物理分辨率 和误差分析。频谱分辨率直接和0FFFT 的变换区间 N 有关,因为 FFT 能够实现的频率分辨率是 (N 是实际采样点数) 。/sf因此,可以在保持采样频率的前提下,增加采样的点数能增加分辨率。误差主要来自于用FFT 作频谱分析时,抽样的过程;从无限的离散序列中截取有限个序列的过程;频谱是离散的等,而模拟信号(周期信号除外)的频谱是连续谱,只有当 N 较大时离散谱的包络才能逼近于连续谱。所以,还是要求 N 要适当选择大一些。不过,N 的增大,最直接带来的,就是运算量的增大。实验二 应用 FFT 对
15、信号进行频谱分析10需要注意的是,在有效的采样序列后补零增大 N 值不能提高物理分辨率,此种方法只是“搬移了栅栏的位置” ,使原来看不到的频率不再被遮挡了。只有实际记录的数据长度越大,频率的分辨率能力才越强。对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。附录,部分 matlab 程度代码n=0:15; %q=8,p=8,13,14p=8;q=8;x=exp(-1*(n-p).2/q);close all;subplot(3,2,1);stem(n,x);xlabel(n);tit
16、le(时域);subplot(3,2,2);stem(n,abs(fft(x);title(频域 p=8 q=8);xlabel(k);p=13;q=8;x=exp(-1*(n-p).2/q);subplot(3,2,3);stem(n,x);xlabel(n);subplot(3,2,4);stem(n,abs(fft(x);title(p=13 q=8);xlabel(k);subplot(3,2,5);stem(n,x);xlabel(n);p=14;q=8;x=exp(-1*(n-p).2/q);subplot(3,2,6);stem(n,abs(fft(x);title(p=14 q=8);xlabel(k);