实验4DFS与DFT与FFT.docx
《实验4DFS与DFT与FFT.docx》由会员分享,可在线阅读,更多相关《实验4DFS与DFT与FFT.docx(10页珍藏版)》请在冰豆网上搜索。
实验4DFS与DFT与FFT
subplot(2,2,2);stem(n,abs(x));
title('IDFT|X(k)|');axis([-1,N,1.1*min(x),1.1*max(x)]);
subplot(2,2,3),stem(k,abs(Xk));
title('|X(k)|');axis([-1,N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]);
subplot(2,2,4),stem(k,angle(Xk));
title('arg|X(k)|');axis([-1,N,1.1*min(angle(Xk)),1.1*max(angle(Xk))]);
用FFT算法求该序列的DFT、IDFT,程序如下:
xn=[1,0.5,0,0.5,1,1,0.5,0];
N=length(xn);
n=0:
N-1;
subplot(2,2,1);stem(n,xn);
title('x(n)');
k=0:
N-1;
Xk=fft(xn,N);
subplot(2,1,2);stem(k,abs(Xk));
title('Xk=DFT(xn)');
xn1=ifft(Xk,N);
subplot(2,2,2);stem(n,xn1);
title('x(n)=IDFT(Xk)');
Fs=20;
xn=[1,0.5,0,0.5,1,1,0.5,0];
N=length(xn);
D=2*pi*Fs/N;
k=floor(-(N-1)/2:
(N-1)/2);
X=fftshift(fft(xn,N));
subplot(1,2,1);plot(k*D,abs(X),'o:
');
title('幅度频谱');xlabel('rad/s');
subplot(1,2,2);plot(k*D,angle(X),'o:
');
title('相位频谱');xlabel('rad/s');
Fs=10;N=32;
xn=[1,0.5,0,0.5,1,1,0.5,0];
Nx=length(xn);
xn=[1,0.5,0,0.5,1,1,0.5,0,zeros(1,N-Nx-1)];
D=2*pi*Fs/N;
k=floor(-(N-1)/2:
(N-1)/2);
X=fftshift(fft(xn,N));
subplot(1,2,1);plot(k*D,abs(X),'o:
');
title('幅度频谱');xlabel('rad/s');
subplot(1,2,2);plot(k*D,angle(X),'o:
');
title('相位频谱');xlabel('rad/s');
Fs=10;N=64;
xn=[1,0.5,0,0.5,1,1,0.5,0];
Nx=length(xn);
xn=[1,0.5,0,0.5,1,1,0.5,0,zeros(1,N-Nx-1)];
D=2*pi*Fs/N;
k=floor(-(N-1)/2:
(N-1)/2);
X=fftshift(fft(xn,N));
subplot(1,2,1);plot(k*D,abs(X),'o:
');
title('幅度频谱');xlabel('rad/s');
subplot(1,2,2);plot(k*D,angle(X),'o:
');
title('相位频谱');xlabel('rad/s');
Ts=20;C=[8,32,64];
forr=0:
2;
N=C(r+1);
n=0:
N-1;
xn=0.5.^n;
D=2*pi/(N*Ts);
k=floor(-(N-1)/2:
(N-1)/2);
X=fftshift(fft(xn,N));
subplot(3,2,2*r+1);plot(k*D,abs(X));
subplot(3,2,2*r+2);stairs(k*D,angle(X));
end;
二、思考题:
1、离散傅里叶级数与连续性周期信号的傅里叶级数有何不同,周期序列的频谱有何特点?
DFS、DFT、FFT有何联系?
答:
连续周期信号的傅里叶级数由无穷个与基波频率成整数倍的谐波分量叠加而成,而周期为N的周期序列的傅里叶级数仅有N个独立的谐波分量;周期序列的频谱X(k)也是一个以N为周期的周期序列。
DFT与FFT是一个本质,FFT是DFT的一种算法,DFS是对离散周期信号进行级数展开,DFT是将DFS取主值,DFS是DFT的周期延拓。
2、DFS、DFT、FFT有何联系?
答:
DFS和DFT的联系:
将周期序列的傅里叶级数变换对和有限长序列的离散傅里叶级数变换对进行比较可见,有限长序列可以看成周期序列的一个周期;反之,周期序列可以看成有限长序列以N为周期的周期延拓。
DFT和FFT的联系:
快速傅里叶变换FFT是用于DFT运算的高效快速算法的统称,FFT只是其中一种,大大缩短了DFT的时间。
实验报告思考题:
列出本实验提出有关MATLAB函数在调用时应注意哪些问题?
1、用fft函数求离散傅里叶变换DFT和用ifft函数求离散傅里叶逆变换IDFT时:
适用于长度为2的指数幂的序列
2、用ones函数和zeros函数形成的是一行n列的矩阵
三、实验总结:
(10分)
通过DFS、DFT与FFT实验使我对周期序列DFS、有限长序列DFT和FFT理解更加深入;更进一步了解周期序列的重复周期数对序列频谱的影响。
(1)遇到问题及解决方法
遇到问题:
我在做第4题时,程序写的正确,但在调用运行时出现错误提示:
xn=0.5^n有错误
解决方法:
在0.5与之间^n加个点即把0.5^n改写为0.5.^n,再运行程序
MATLAB中调用运行
(2)学到的新的函数及其用法,注意事项等,
学到的新的函数:
①:
用fft函数求离散傅里叶变换DFT
②:
用ifft函数求离散傅里叶逆变换IDFT
③:
用ones函数和zeros函数形成行列式
注意事项:
①:
用fft函数求离散傅里叶变换DFT和用ifft函数求离散傅里叶逆变换IDFT时:
适用于长度为2的指数幂的序列
②:
用ones函数和zeros函数形成的是一行n列的矩阵