当前位置:首页 > 数字信号处理实验指导书(带源程序)
实验二 用FFT作谱分析 一. 实验目的
1. 进一步加深DFT算法原理和基本性质的理解(FFT是DFT的一种快速算法,FFT的运算结果必然满足DFT的基本性质)。
2. 熟悉FFT算法原理和FFT 函数的应用。
3. 学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因。
二. 实验步骤
1. 复习DFT的定义、性质和用 DFT作谱分析的有关容。
2. 复习FFT算法原理与编程思想。熟悉FFT算法的MATLAB实现。
注:MATLAB提供fft函数来计算x?n?的DFT,fft函数是用机器语言,而不是以MATLAB指令写成的,因此执行速度快。
格式(1): y=fft(x) 计算x的FFT变换y。当x为矩阵,计算x中每一列信号的离散傅氏变换。当x的长度为2的幂时,采用基2算法,否则采用分裂基算法。
格式(2): y=fft(x,n) 计算x的n点FFT,当x长度大于n时,截断x,否则补零。 Plot线性绘图函数。stem:绘制离散序列图。subplot:多坐标设置与定位当前坐标系。figure:创建新的图形窗口(用于输出图形的窗口)。
3. 产生下列信号并进行谱分析。
(1)x1?n??R4?n?
?n?1,0?n?3?(2)x2?n???8?n4?n?7
?0其他n??4?n,0?n?3?(3)x3?n???n?34?n?7
?0其他n?(4)x4?n??cos(5)x5?n??sin?48n n
?(6)x6?t??cos8?t?cos16?t?cos20?t 4. 编写程序
5. 输出结果,总结结论,按要求写出实验报告。 三. 实验容
1. 对上述6个信号,逐个进行谱分析
对于x1?n?,x2?n?,x3?n?,x4?n?,x5?n? :N?8,16。对于x6?n? :在一个周期取N?8,16点抽样,做频谱分析。
(参考)每个信号谱分析的流程设计为:
开
读入长度N
产生实验信号
绘制时间波形图 用fft函数进行谱分
曲线绘制X?k?
结
程序: % fft figure(1);
n1=0:3;x1=[1,1,1,1];subplot(221);stem(n1,x1);title('x1序列');
k1=0:7;y11=fft(x1,8);magy11=[abs(y11)];subplot(222);stem(k1,magy11);title('x1的8点FFT');
k2=0:15;y12=fft(x1,16);magy12=[abs(y12)];subplot(224);stem(k2,magy12);title('x1的16点FFT');
%x2 figure(2);
n2=0:7;x2=[1,2,3,4,4,3,2,1];subplot(221);stem(n2,x2);title('x2序列');
k1=0:7;y21=fft(x2,8);magy21=abs(y21);subplot(222);stem(k1,magy21);title('x2的8点FFT');
k2=0:15;y22=fft(x2,16);magy22=abs(y22);subplot(224);stem(k2,magy22);title('x2的16
点FFT');
%x3 figure(3);
n3=0:7;x3=[4,3,2,1,1,2,3,4];subplot(221);stem(n3,x3);title('x3序列');
k1=0:7;y31=fft(x3,8);magy31=abs(y31);subplot(222);stem(k1,magy31);title('x3的8点FFT');
k2=0:15;y32=fft(x3,16);magy32=abs(y32);subplot(224);stem(k2,magy32);title('x3的16点FFT');
%x4 figure(4);
n41=0:7;x41=cos((pi/4)*n41);subplot(221);stem(n41,x41);title('x4的8点序列');
k1=0:7;y41=fft(x41,8);magy41=abs(y41);subplot(222);stem(k1,magy41);title('x4的8点FFT');
n42=0:15;x42=cos((pi/4)*n42);subplot(223);stem(n42,x42);title('x4的16点序列');
k2=0:15;y42=fft(x42,16);magy42=abs(y42);subplot(224);stem(k2,magy42);title('x4的16点FFT');
%x5 figure(5);
n51=0:7;x51=sin((pi/8)*n51);subplot(221);stem(n51,x51);title('x5的8点序列');
k1=0:7;y51=fft(x51,8);magy51=abs(y51);subplot(222);stem(k1,magy51);title('x5的8点FFT');
n52=0:15;x52=sin((pi/8)*n52);subplot(223);stem(n52,x52);title('x5的16点序列');
k2=0:15;y52=fft(x52,16);magy52=abs(y52);subplot(224);stem(k2,magy52);title('x5的16点FFT');
%x6 figure(6);
f1=4;f2=8;f3=10;t=0:0.01:1;
x6=cos(f1*2*pi*t)+cos(f2*2*pi*t)+cos(f3*2*pi*t);subplot(221);plot(t,x6);title('x6模拟信号');
%x61 8 T=0.5/8; t=0:T:0.5;
x6=cos(f1*2*pi*t)+cos(f2*2*pi*t)+cos(f3*2*pi*t); k61=0:7;
y61=fft(x6,8);magy61=abs(y61);subplot(222);stem(k61,magy61);title('x6的8点FFT'); %x62 16 T=0.5/16; t=0:T:0.5;
共分享92篇相关文档