当前位置:文档之家› DFT信号频谱分析

DFT信号频谱分析

一,实验名称: DFT 的频谱分析 二,实验目的:1. 加深对 DFT 原理的理解,熟悉DFT 的性质。

2. 掌握离散傅里叶变换的有关性质,利用Matlab 实现DFT 变换3. 深刻理解利用 DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法三,实验原理:所谓信号的频谱分析就是计算信号的傅里叶变换。

连续信号与系统的傅里叶分析显然不便于直接用计算机进行计算,使其应用受到限制,而DFT 是一种时域和频域均离散化的变换,适合数值运算,成为分析离散信号和系统的有力工具。

工程实际中,经常遇到的连续信号Xa(t),其频谱函数Xa(jW)也是连续函数。

数字计算机难于处理,因而我们采用DFT 来对连续时间信号的傅里叶变换进行逼近,进而分析连续时间信号的频谱。

离散傅里叶变换是有限长序列的傅里叶变换,它相当于把信号的傅里叶变换进行等频率间隔采样,并且有限长序列的离散傅里叶变换和周期序列的离散傅里叶级数本质是一样的。

快速傅里叶变换(FFT )并不是一种新的变换,它是离散傅里叶变换的一种快速算法,并且主要是基于这样的思路而发展起来的:(1)把长度为N 的序列的DFT 逐次分解成长度较短的序列的DFT 来计算。

(2)利用WN(nk)的周期性和对称性,在DFT 运算中适当的分类,以提高运算速度。

(对称性nkNnk NW W N-=+2,12-=NN W ;周期性nk N nk N nrN N k rN n N W W W W ---==)(,r 为任意整数,1=nrNNW )离散傅里叶变换的推导:离散傅里叶级数定义为 nk j N k p p ek x Nn x N21)(1)(π∑-==(1-1) 将上式两端乘以nm j Ne π2-并对n 在0~N-1求和可得 ⎥⎦⎤⎢⎣⎡==∑∑∑∑∑-=---=-=-=---=-10)(110101)(10N2N2N2)()(1)(N n m k n j N N k p N n N k m k n j pN n nm j p e k X ek XNen x πππ 因为{mk 1mk 0)(N)(1)(N 2N2N2-1-1N 11=≠---=-==∑m k j m k j N n m k n jee eNπππ所以∑∑-=-=--=110)()()(N2N k p N n nm j p m k k X en x δπ 这样∑-=-=10N2)()(N n nm j p p en x m X π用k代替m 得 ∑-=-=10N2)()(N n nk j p P e n x k X π (1-2)令N2πj N eW -=,则(1-2)成为DFS []∑-===10)()()(N n nk N p p p W n x k X n x (1-3)(1-1)成为 IDFS []∑-=-==1)(1)()(N n nkN pp p W k XNn x k X (1-4)式(1-3)、(1-4)式构成周期序列傅里叶级数变换关系。

其中)()(k X n x p p 、都是周期为N 的周期序列,DFS[·]表示离散傅里叶级数正变换,IDFS[·]表示离散傅里叶级数反变换。

习惯上,对于长为N 的周期序列,把0≤n ≤N-1区间称为主值区,把)1(~)0(-N x x p p 称为)(n x p 的主值序列,同样也称)1(~)0(-N X X p p 为)(k X p 的主值序列。

由于)()()(n R n x n x N p =,对于周期序列)(n x p 仅有N个独立样值,对于任何一个周期进行研究就可以得到它的全部信息。

在主值区研究)(n x p 与)(n x 是等价的,因此在主值区计算DFS 和DFT 是相等的,所以DFT 计算公式形式与DFS 基本相同。

其关系为)()()(n R n x n x N p = )()()(k R k X k X N p =,所以离散傅里叶正变换()()[]()W nkN N n n x n x DFT k X ∑-===10≤k ≤N-1离散傅里叶变换(DFT)定义:设有限长序列x (n) 长为N (0≤n ≤N-1),其离散傅里叶变换是一个长为N 的频率有限长序列(0≤k ≤N-1),其正变换为()()[]()W nkN N n n x n x DFT k X ∑-===10 0≤k ≤N-1 (WeNjN π2-=)离散傅里叶变换的实质是:把有限长序列当做周期序列的主值序列进行DFS 变换,x(n)、X(k)的长度均为N ,都是N 个独立值,因此二者具有的信息量是相等的。

已知x(n)可以唯一确定X(k),已知X(k)可以唯一确定x(n)。

虽然离散傅里叶变换是两个有限长序列之间的变化,但它们是利用DFS 关系推导出来的,因而隐含着周期性四,实验内容与程序:1,对离散确定信号 ()cos(0.48)cos(0.52)x n n n ππ=+ 作如下谱分析: 截取()x n 使()x n 成为有限长序列N(0≤≤n N -1),(长度N 自己选)写程序计算出()x n 的N 点DFT ()X k ,画出时域序列图xn ~n 和相应的幅频图()~X k k 。

解:1)求x(n)的前10点数据对应的X(ejw)、X(k)。

MATLAB 程序: N=10; n=0:1:N-1;xn=cos(0.48*pi*n)+cos(0.52*pi*n);Xk=dft(xn,N);subplot(3,1,1)stem(n,xn,'.k');title('时域序列图xn');xlabel('n');axis([0,10,-2.5,2.5]);w=2*pi*(0:1:2047)/2048;Xw=xn*exp(-j*n'*w);subplot(3,1,2);plot(w/pi,abs(Xw));title('幅频特性曲线X(ejw)');xlabel('w');axis([0,1,0,10]);subplot(3,1,3)k1=0:1:9;w1=2*pi/10*k1;stem(w1/pi,abs(Xk),'.k');title('频域序列图Xk');xlabel('频率(单位:pi)');axis([0,1,0,10]);x(n)的前10点数据对应的x(n)、X(ejw)、X(k)如图1-1所示。

图1-1 x(n)的前10点数据对应的x(n)、X(ejw)、X(k) 2)将x(n)补零至100点,求N=100点的X(ejw)、X(k)。

MATLAB主要程序如下:N=10;n=0:N-1;xn=cos(0.48*pi*n)+cos(0.52*pi*n);N1=100;n1=0:N1-1;x1=[xn(1:10) zeros(1,90)];subplot(3,1,1)stem(n1,x1,'.k');title('时域序列图x1');xlabel('n');axis([0,100,-2.5,2.5]);w=2*pi*(0:2047)/2048;X1=x1*exp(-j*n1'*w);subplot(3,1,2);plot(w/pi,abs(X1));title('幅频特性曲线X(ejw)');xlabel('w');axis([0,1,0,10]);subplot(3,1,3)Xk=dft(x1,N1);k1=0:1:49;w1=2*pi/100*k1;stem(w1/pi,abs(Xk(1:1:50)),'.k');title('频域序列图Xk');xlabel('频率(单位:pi)');axis([0,1,0,10]);x(n)补零至100点对应的x(n)、X(ejw)、X(k)如图1-2所示。

图1-2 x(n)补零至100点对应的x(n)、X(ejw)、X(k)x(n)补零至100点对应的x(n)、X(ejw)、X(k)如图1-2所示。

由图可见,x(n)补零至100点,只是改变X(k)的密度,截断函数的频谱混叠作用没有改变,这时的物理分辨率使X(k)仍不能正确分辨w1=0.48π、w2=0.52π这两个频率分量。

这说明,补零仅仅是提高了计算分辨率,得到的是高密度频谱,而得不到高分辨率谱。

3)求x(n)的前100点数据,求N=100点的X(ejw)、X(k)。

MATLAB主要程序如下:N=100;n=0:1:N-1;xn=cos(0.48*pi*n)+cos(0.52*pi*n);Xk=dft(xn,N);subplot(3,1,1)stem(n,xn,'.k');title('时域序列图xn');xlabel('n');axis([0,100,-2.5,2.5]);w=2*pi*(0:1:2047)/2048;Xw=xn*exp(-j*n'*w);subplot(3,1,2);plot(w/pi,abs(Xw));title('幅频特性曲线X(ejw)');xlabel('w');axis([0,1,0,50]);subplot(3,1,3);k1=0:1:49;w1=2*pi/100*k1;stem(w1/pi,abs(Xk(1:1:50)),'.k');title('频域序列图Xk');xlabel('频率(单位:pi)');axis([0,1,0,50]);100点x(n)对应的x(n)、X(ejw)、X(k)如图1-3所示图1-3 100点x(n)对应的x(n)、X(ejw)、X(k)由图可见,截断函数的加宽且为周期序列的整数倍,改变了频谱混叠作用,提高了物理分辨率,使X(k)能正确分辨w1=0.48π、w2=0.52π这两个频率分量。

这说明通过增加数据的记录长度Tp来提高物理分辨率可以得到分辨率谱。

2,离散序列x (n ) = cos(0 .48πn ) + cos(0 .52πn )1)0 ≤ n ≤ 10时,用 DFT 估计 x (n )的频谱;将 x (n )补零加长到长度为 100点序列用 DFT估计 x (n )的频谱。

要求画出相应波形。

2)0 ≤ n ≤ 100时,用 DFT 估计 x (n )的频谱,并画出波形MATLAB 程序:n=[0:10];x=cos(0.48*pi*n)+cos(0.52*pi*n);y=fft(x);subplot(3,1,1);stem(n,y,'filled');xn=[x,zeros(1,90)];yn=fft(xn);hold on;nn=[0:100];subplot(3,1,2);stem(nn,yn,'filled');n1=[0:100];x1=cos(0.48*pi*n1)+cos(0.52*pi*n1); y1=fft(x1);subplot(3,1,3);stem(n1,y1,'filled');运行结果:五,实验结果思考分析:1,将实验内容的1中(1)(2) (3)的图,说明补零DFT的作用。

相关主题