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