实验三 用FFT进行谱分析
一、实验要求
进一步加深DFT 算法原理和基本性质的理解;熟悉FFT 算法原理和FFT 子程序的应 用;学习用FFT 对连续信号和时域离散信号进行谱分析的方法,以便在实际中正确应用FFT。
二、实验原理
如果用FFT对模拟信号进行谱分析,首先要把模拟信号转换成数字信号,转换时要求知道模拟信号的最高截止频率,以便选择满足采样定理的采样频率。一般选择采样频率是模拟信号中最高频率的3~4倍。另外要选择对模拟信号的观测时间,如果采样频率和观测时间确定,则采样点数也确定了。这里观测时间和对模拟信号进行谱分析的分辨率有关,最小的观测时间和分辨率成倒数关系。要求选择的采样点数和观测时间大于它的最小值。
用FFT作谱分析时,要求做FFT的点数服从2的整数幂,这一点在上面选择采样点数时可以考虑满足,即使满足不了,可以通过在序列尾部加0完成。如果要进行谱分析的模拟信号是周期信号,最好选择观测时间是信号周期的整数倍。如果不知道信号的周期,要尽量选择观测时间长一些,以减少截断效应的影响。
用FFT对模拟信号作谱分析是一种近似的谱分析。首先一般模拟信号(除周期信号外)的频谱是连续频谱,而用FFT作谱分析得到的是数字谱,因此应该取FFT的点数多一些,用它的包络作为模拟信号的近似谱。另外,如果模拟信号不是严格的带限信号,会因为频谱混叠现象引起谱分析的误差,这种情况下可以预先将模拟信号进行预滤,或者尽量将采样频率取高一些。
一般频率混叠发生在折叠频率附近,分析时要注意因频率混叠引起的误差。最后要注意一般模拟信号是无限长的,分析时要截断,截断的长度和分辨率有关,但也要尽量取长一些,取得太短因截断引起的误差会很大。举一个极端的例子,一个周期性正弦波,如果所取观察时间太短,例如取小于一个周期,它的波形和正弦波相差太大,肯定误差很大,但如果取得长一些,即使不是周期的整倍数,这种截断效应也会小一些。
三、主要实验仪器及材料
微型计算机、Matlab6.5 教学版、TC 编程环境。
四、实验内容
(1)用Matlab或C语言编制信号产生子程序,产生典型信号供谱分析用;
(2)对给出信号逐个进行谱分析,绘出序列和幅频特性曲线;
(3)设计利用快速傅里叶变换FFT 计算序列频谱程序;
(4)对结果进行分析;
(5)完成实验报告。
五、实验结果
1. 常用的数字频率范围为
,相应地有
,而DFT即X(k)表示的频率范围为
,相应地有
,其抽样值k的范围为
。
若要用X(k)表示的抽样,可将频率中心移到
处,因而用到fftshift语句。移位后频率范围为
,抽样值存在的k的范围为
,用MATLAB语句表示则为k=floor(-(N-1)/2, (N-1)/2)(floor表示向-∞方向取整)。
DFT的抽样频率点为