DSP

matlab在DSP中的应用(五)---离散傅里叶变换DFT

2019-07-13 17:31发布

一、实验目的 (1)加深对离散傅里叶变换(DFT)基本概念的理解 (2)了解有限长序列傅里叶变换(DFT)与离散时间傅里叶变换(DTFT)的联系 (3)掌握用MATLAB语言进行离散傅里叶变换和逆变换的方法 二、实验原理 1.有限长序列的傅里叶变换(DFT)和逆变换(IDFT) 在实际中常常使用有限长序列。如果有限长序列信号为x(n),则该序列的离散傅里叶变换对可以表示为: 这里写图片描述 从离散傅里叶变换定义式可以看出,有限长序列在时域上是离散的,在频域上也是离散的。式中这里写图片描述 ,即仅在单位圆上N个等间距的点上取值,这为使用计算机进行处理带来了方便。 由有限长序列的傅里叶变换和逆变换定义可知,DFT和DFS的公式非常相似,因此在程序编写上也基本一致。 例1:已知x(n)=[0,1,2,3,4,5,6,7],求x(n)的DFT和IDFT。要求: (1)画出序列傅里叶变换对应的|X(k)|和arg[X(k)]图形。 (2)画出原信号与傅里叶逆变换IDFT[X(k)]图形进行比较。 代码: xn=0:7;%信号 N=length(xn); n=0:N-1; k=0:N-1; Xk=xn*exp(-1j*2*pi/N).^(n'*k);%DFT x=(Xk*exp(1j*2*pi/N).^(n'*k))/N;%IDFT subplot(4,1,1),stem(n,xn);%显示原序列 title('x(n)') subplot(4,1,2),stem(n,abs(x));%显示逆变换结果 title('IDFT|X(k)|') subplot(4,1,3),stem(n,abs(Xk));%显示|X(k)| title('X(k)') subplot(4,1,4),stem(k,angle(Xk));%显示显示arg|X(k)| title('arg|X(k)|') 输出:
这里写图片描述 2.有限长序列DFT与离散时间傅里叶变换DTFT的联系 离散时间傅里叶变换(DTFT)是指信号在时域上为离散的,而在频域上则是连续的。 如果离散时间非周期信号为x(n),则它的离散傅里叶变换对(DTFT)表示为: 这里写图片描述 与有限长序列相比,X(e^(jw))仅在单位圆上取值,X(k)是在单位圆上N个等间距的点上取值。因此,连续谱X(e^(jw))可以由离散谱X(k)经插值后得到。 例2:求x(n)=[0,1,2,3,4,5,6,7],0≤n≤7的DTFT,将(-2pi,2pi)区间分成500份。
 (1)画出原信号。
 (2)画出由离散时间傅里叶变换求得的幅度谱X(ejw)和相位谱arg[X(e^(jw))]图形。 代码: xn=0:7; n=0:length(xn)-1; w=linspace(-2*pi,2*pi,500);%将[-2*pi,2*pi]频率区间分割为500份 X=xn*exp(-1j*n'*w);%离散时间傅里叶变换,这里的1j也为i或j subplot(3,1,1),stem(n,xn);%显示原序列 ylabel('x(n)') subplot(3,1,2),plot(w,abs(X));%显示序列幅度谱 axis([-2*pi 2*pi 1.1*min(abs(X)) 1.1*max(abs(X))]) ylabel('幅度谱') subplot(3,1,3),plot(w,angle(X));%显示序列相位谱 axis([-2*pi 2*pi 1.1*min(angle(X)) 1.1*max(angle(X))]) ylabel('相位谱') 输出:
这里写图片描述 比较例1和例2,两者图像有一定差别。 主要原因在于,该例进行DTFT时,X(e^(jw))在单位圆上取250个点进行分割; 而进行DFT时,X(k)是在单位圆上N=8的等间距点上取值,X(k)的序列长度与X(ejw)相比不够长。 那么仍用x(n)=[0,1,2,3,4,5,6,7],将x(n)的有限长序列后面补足0至N=100,看其DFT: 代码: xn=0:7;%信号 N=100; xn=[xn zeros(1,N-8)]; n=0:N-1; k=0:N-1; Xk=xn*exp(-1j*2*pi/N).^(n'*k);%DFT x=(Xk*exp(1j*2*pi/N).^(n'*k))/N;%IDFT subplot(4,1,1),stem(n,xn);%显示原序列 axis([0 7 0 10]) title('x(n)') subplot(4,1,2),stem(n,abs(x));%显示逆变换结果 axis([0 7 0 10]) title('IDFT|X(k)|') subplot(4,1,3),stem(k,abs(Xk));%显示|X(k)| axis([0 7 0 40]) title('X(k)') subplot(4,1,4),stem(k,angle(Xk));%显示显示arg|X(k)| axis([0 10 -5 5]) title('arg|X(k)|') 输出:
这里写图片描述 三、实验任务 1.已知有限长序列x(n)=[7,6,5,4,3,2],求x(n)的DFT和IDFT。要求: ①画出序列傅里叶变换对应的|X(k)|和arg[X(k)]的图形。 ②画出原信号与傅里叶逆变换IDFT[X(k)]的图形进行比较。 代码: xn=[7 6 5 4 3 2];%信号 N=length(xn); n=0:N-1; k=0:N-1; Xk=xn*exp(-1j*2*pi/N).^(n'*k);%DFT x=(Xk*exp(1j*2*pi/N).^(n'*k))/N;%IDFT subplot(4,1,1),stem(n,xn);%显示原序列 title('x(n)') subplot(4,1,2),stem(n,abs(x));%显示逆变换结果 title('IDFT|X(k)|') subplot(4,1,3),stem(k,abs(Xk));%显示|X(k)| title('|X(k)|') subplot(4,1,4),stem(k,angle(Xk));%显示显示arg|X(k)| title('arg|X(k)|') 输出:
这里写图片描述 2.求x(n)=[7,6,5,4,3,2],0≤n≤5的DTFT,将(-2p,2p)区间分成500份。要求: ①画出原信号。 ②画出由离散时间傅里叶变换求得的幅度谱X(ejw)和相位谱arg[X(ejw)]的图形。 ③求有限长序列x(n)=[7,6,5,4,3,2],N=100时的DFT,并与DTFT的结果进行比较。 代码: xn=[7 6 5 4 3 2]; n=0:length(xn)-1; w=linspace(-2*pi,2*pi,500);%将[-2*pi,2*pi]频率区间分割为500份 X=xn*exp(-1j*n'*w);%离散时间傅里叶变换,这里的1j也为i或j N=100; xn1=[xn zeros(1,N-length(xn))]; n1=0:N-1; k=0:N-1; Xk=xn1*exp(-1j*2*pi/N).^(n1'*k);%DFT subplot(3,2,[1 2]),stem(n,xn);%显示原序列 title('x(n)') subplot(3,2,3),plot(w,abs(X));%显示序列幅度谱 title('DTFT 幅度谱') subplot(3,2,4),plot(w,angle(X));%显示序列相位谱 title('DTFT 相位谱') subplot(3,2,5),stem(k,abs(Xk));%显示|X(k)| title('DFT |X(k)|') subplot(3,2,6),stem(k,angle(Xk));%显示显示arg|X(k)| title('DFT arg|X(k)|') 输出:
这里写图片描述 3.求x(n)=[0,1,2,3,4,5,6,7,8,9],0≤n≤9 的DFT,将(0,2pi)区间分成4份。要求: ①画出原信号。 ②画出由DFT求得的幅度谱X[k]和相位谱arg X[k], k=0,1,2,3的图形。 ③对上述X[k]求IDFT,将其结果与原信号x(n) 进行比较。 代码: xn=0:9;%信号 N=length(xn); n=0:N-1; k=0:4; Xk=xn*exp(-1j*2*pi/N).^(n'*k);%DFT x=(Xk*exp(1j*2*pi/N).^(k'*n))/N;%IDFT subplot(4,1,1),stem(n,xn);%显示原序列 title('x(n)') subplot(4,1,2),stem(n,abs(x));%显示逆变换结果 title('IDFT|X(k)|') subplot(4,1,3),stem(k,abs(Xk));%显示|X(k)| title('X(k)') subplot(4,1,4),stem(k,angle(Xk));%显示显示arg|X(k)| title('arg|X(k)|') 输出: 这里写图片描述 4.思考题:
4.1**有限长序列的离散傅里叶变换(DFT)与周期序列的傅里叶级数(DFS)有何联系与区别**? 答:时域周期序列可看作是有限长序列x(n)的周期延拓;同理把频域周期序列这里写图片描述也看作是有限长序列X(k)的周期延拓。这样我们只要把DFS的定义式两边取主值区间,就得到了一个关于有限长序列的时频域对应的变换对——DFT。 这里写图片描述 4.2有限长序列的离散傅里叶变换(DFT)有何特点? 答:
(1)适用于有限长序列
(2)遵循循环移位定理
(3遵循循环卷积定理
(4) 具有对称性。 3**有限长序列的离散傅里叶变换(DFT)与 离散时间傅里叶变换(DTFT)** 有何 联系与区别? 答:X(k)是x(n)的离散时间傅立叶变换X(e^(jw))在区间[0,2π]上的N点等间隔采样。 DFT的变换区间长度N不同,对X(e^(jw))在[0,2π]区间上的采样间隔和采样点数也会不同,从而不同的N对应的DFT的变换结果不同。 参考资料:http://wlsyzx.yzu.edu.cn/kcwz/szxhcl/kechenneirong/jiaoan/jiaoan3.htm