实 验 报 告
院系
实验四:DFS、DFT与FFT
一、实验内容
2、已知某周期序列的主值序列为x(n)=[0,1,2,3,2,1,0],编程显示2个周期的序列波形。要求:
① 用傅里叶级数求信号的幅度谱和相位谱,并画出图形 ② 求傅里叶级数逆变换的图形,并与原序列进行比较。
N=7;
xn=[0,1,2,3,2,1,0]; xn=[xn,xn]; n=0:2*N-1; k=0:2*N-1;
Xk=xn*exp(-j*2*pi/N).^(n'*k); x=(Xk*exp(j*2*pi/N).^(n'*k))/N; subplot(2,2,1);stem(n,xn);
title('x(n)');axis([-1,2*N,1.1*min(xn),1.1*max(xn)]); subplot(2,2,2);stem(n,abs(x));
title('IDFS|X(k)|');axis([-1,2*N,1.1*min(x),1.1*max(x)]); subplot(2,2,3),stem(k,abs(Xk));
title('|X(k)|');axis([-1,2*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,2*N,1.1*min(angle(Xk)),1.1*max(angle(Xk))]);
x(n)3102105IDFS|X(k)|05|X(k)|10005arg|X(k)|10151050510210-1-20510
3、已知有限长序列x(n)=[1,0.5,0,0.5,1,1,0.5,0],要求: ① 求该序列的DFT、IDFT的图形;
xn=[1,0.5,0,0.5,1,1,0.5,0]; N=length(xn); n=0:N-1; k=0:N-1;
Xk=xn*exp(-1i*2*pi/N).^(n'*k); x=(Xk*exp(1i*2*pi/N).^(n'*k))/N; subplot(2,2,1);stem(n,xn);
title('x(n)');axis([-1,N,1.1*min(xn),1.1*max(xn)]); 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))]);
x(n)11IDFT|X(k)|0.50.50024|X(k)|680024arg|X(k)|68432102468210-1-202468
② 用FFT算法求该序列的DFT、IDFT的图形;
xn=[1,0.5,0,0.5,1,1,0.5,0]; N=length(xn);
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)');
x(n)10.80.60.40.200246810.80.60.40.2002x(n)=IDFT(Xk)468Xk=DFT(xn)54321001234567
③ 假定采用频率Fs=20Hz,序列长度N分别取8、32和64,用FFT计算其幅度谱和相位谱。
Ts=0.05;C=[32,64,8];
for r=0:2; N=C(r+1); n=0:N-1;
xn=[1,0.5,0,0.5,1,1,0.5,0,zeros(1,N-8)]; 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
645020-10064020-10064020-100-50050-5-100-50050-50050100-5-1005-50050100-50050100-5-1005-50050100
4、已知一个无限长序列x(n)=0.5n(n≥0),采样周期Ts=0.2s,要求序列长度分别取8、32和64,用FFT求其频谱。
Ts=0.2;C=[8,32,64];
for r=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)); axis([-80,80,0,3]);
subplot(3,2,2*r+2);stairs(k*D,angle(X)); axis([-80,80,-1,1]); end
3210103201032010-50050-1-50050-50050-11-50050-50050-11-50050
二、思考题答案
① 离散傅里叶级数与连续性周期信号的傅里叶级数有何不同?周期序列的频谱有何特点?
答:傅里叶级数仅有N个独立的谐波分量,展成离散傅立叶级数时,只能取k=0~N-1的N个独立的谐波分量,而连续性周期信号的傅里叶级数由无穷多个与基波频率成整数倍的谐波分量叠加而成。
周期序列的频谱特点:以N为周期的周期序列的频谱X(k)也是一个以N为周期的周期序列。
② DFS、DFT、FFT有何联系?
答:DFS是求周期序列(周期为N)的离散傅里叶级数X(k),X(k)也是一个以N为周期的周期序列,DFT是求有限长序列的离散傅立叶变换X(k),而X(k)是X(k)的主值序列,也就是说对DFS的变换结果只取0~N-1的序列值就得到DFT的变换。FFT只是DFT的一种快速高效的算法,它适用序列长度很大时,使用其可以大大缩短运算时间。
三、实验总结
1、周期序列的离散傅里叶级数(DFS) (1)DFS的基本概念: (2)周期序列的DFS和IDFS (3)周期重复次数对序列频谱的影响 2、离散傅里叶变换(DFT) (1)DFT与IDFT (2)DFT与DFS的联系 (3)DFT与DTFT的联系 (4)MATLAB提供的FFT函数 (5)用FFT进行频谱分析
因篇幅问题不能全部显示,请点此查看更多更全内容