华拓科技网
您的当前位置:首页西电dsp实验2报告

西电dsp实验2报告

来源:华拓科技网
实验二:用FFT作谱分析

一、实验目的

(1) 进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)。 (2) 熟悉FFT算法原理和FFT子程序的应用。

(3) 学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。

二、实验步骤

(1) 复习DFT的定义、性质和用DFT作谱分析的有关内容。 (2) 复习FFT算法原理与编程思想,并对照DIT-FFT运算流图和程序框图,读懂本实验提供的FFT子程序。

(3) 编制信号产生子程序,产生以下典型信号供谱分析用:

x1(n)R4(n)n1,0n3x2(n)8n4n704n0n3x3(n)n34n70x4(n)cosx5(n)sin4nn8x6(n)cos8tcos16tcos20t(4) 编写主程序。

下图给出了主程序框图,供参考。本实验提供FFT子程序和通用绘图子程序。

(5) 按实验内容要求,上机实验,并写出实验报告。

开始

读入长度N

调用信号产生子程序产生实验信号调用绘图子程序(函数)绘制时间序列波形图调用FFT子程序(函数)计算信号的DFT调用绘图子程序(函数)绘制 X(k) 曲线结束三、实验内容

(1) 对二中所给出的信号逐个进行谱分析。

(2) 令x(n)=x4(n)+x5(n),用FFT计算8 点和16 点离散傅里叶变换, X(k)=DFT[x(n)] (3) 令x(n)=x4(n)+jx5(n),重复(2)。

四、实验结果

(1)

functionxn=xulie(n,num) t=0:1/1000:1; switchnum case 1,

xn=[ones(1,4),zeros(1,n-4)] case 2,

xn=[1,2,3,4,4,3,2,1,zeros(1,n-8)] case 3,

xn=[4,3,2,1,1,2,3,4,zeros(1,n-8)] case 4,

xn=cos(pi/4)*[0:n-1] case 5,

xn=sin(pi/8)*[0:n-1] case 6,

xn=cos(8*pi*t)+cos(16*pi*t)+cos(20*pi*t) otherwise, xn=zeros(1,n) end end

====================================================================================================================== n=10; x1=xulie(10,1); x2=xulie(10,2); x3=xulie(10,3); x4=xulie(10,4); x5=xulie(10,5); x6=xulie(10,6); X1=fft(x1); X2=fft(x2); X3=fft(x3); X4=fft(x4);

X5=fft(x5); X6=fft(x6); subplot(6,2,1); stem([0:9],x1);

title('序列x1的时间序列波形'); subplot(6,2,2); plot(abs(X1)); title('序列x1的频谱'); subplot(6,2,3); stem([0:9],x2);

title('序列x2的时间序列波形'); subplot(6,2,4); plot(abs(X2)); title('序列x2的频谱'); subplot(6,2,5); stem([0:9],x3);

title('序列x3的时间序列波形'); subplot(6,2,6); plot(abs(X3)); title('序列x3的频谱'); subplot(6,2,7); stem([0:9],x4);

title('序列x4的时间序列波形'); subplot(6,2,8); plot(abs(X4)); title('序列x4的频谱'); subplot(6,2,9); stem([0:9],x5);

title('序列x5的时间序列波形'); subplot(6,2,10); plot(abs(X5)); title('序列x5的频谱'); subplot(6,2,11); plot(x6);

title('序列x6的时间序列波形'); subplot(6,2,12); plot(abs(X6)); title('序列x6的频谱'); (2)

n=10;

xn=xulie(n,4)+xulie(n,5); X1=fft(xn,8); X2=fft(xn,16); subplot(211); plot(abs(X1));

title('8点离散傅里叶变换频谱图'); subplot(212); plot(abs(X2));

title('16点离散傅里叶变换频谱图');

(3)

n=10;

xn=xulie(n,4)+j*xulie(n,5); X1=fft(xn,8); X2=fft(xn,16); subplot(211); plot(abs(X1));

title('8点离散傅里叶变换频谱图'); subplot(212); plot(abs(X2));

title('16点离散傅里叶变换频谱图');

五、思考题

(1) 在N=8时,x2(n)和x3(n)的幅频特性会相同吗? 为什么? N=16呢? 答:N=8时,相同,因为两序列前8点是右移4位的相同序列。N=16时,不同。

(2) 如果周期信号的周期预先不知道,如何用FFT进行谱分析? 答:周期信号的周期预先不知道时,可先截取M点进行DFT,再将截取长度扩大1倍截取,比较结果,如果二者的差别满足分析误差要求,则可以近似表示该信号的频谱,如果不满足误差要求就继续将截取长度加倍,重复比较,直到结果满足要求。

因篇幅问题不能全部显示,请点此查看更多更全内容