实验二 用DFT及FFT进行谱分析 (2学时)
1.目的要求
进一步加深DFT算法原理和基本性质的理解;熟悉FFT算法原理和FFT子程序的应用;学习用FFT对连续信号和时域离散信号进行谱分析的方法,以便在实际中正确应用FFT。
2.方法原理
参考《数字信号处理》教材的快速傅立叶变换一章。
3.主要实验仪器及材料
微型计算机、Matlab6.5教学版、TC编程环境。
4.掌握要点
结合实验中获得的序列幅频特性曲线,分析所得的图形,说明用FFT作谱分析时有关参数的选择方法。
5.实验内容
(1)用Matlab或C语言编制信号产生子程序, 产生典型信号供谱分析用;
例如1:(1)产生一个三角波序列,长度为M=40;
(2)计算N=64时的,并图示和;
(3)对在[0,2π]上进行32点抽样,得到,k=0,1,…,31
(4)求的32点IDFT,即
(5)绘制的波形图,观察和的关系,并加以说明。
2 设为长度的矩形序列,用MATLAB程序分析FFT取不同长度时的频谱变化。
(2)画对给出信号逐个进行谱分析,绘出序列和幅频特性曲线;
(3)设计利用快速傅里叶变换FFT计算序列频谱程序;
(4)对结果进行分析;
(5)完成实验报告。
解:时的FFT MATLAB实现程序如下
x=[1,1,1,1,1,1];
N=8;
y1=fft(x,N);
n=0:N-1;
subplot(3,1,1);stem(n,abs(y1),'.k');axis([0,9,0,6]);
N=32;
y2=fft(x,N);
n=0:N-1;
subplot(3,1,2);stem(n,abs(y2),'.k');axis([0,40,0,6]);
N=64;
y3=fft(x,N);
n=0:N-1;
subplot(3,1,3);stem(n,abs(y3),'.k');axis([0,80,0,6]);
运行结果的频谱如图4.15所示
图不同长度时的频谱图