一,实验名称:      DFT 的频谱分析 二,实验目的:
1. 加深对 DFT 原理的理解,熟悉DFT 的性质。
2.  掌握离散傅里叶变换的有关性质,利用Matlab 实现DFT 变换
3. 深刻理解利用 DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法
三,实验原理:
所谓信号的频谱分析就是计算信号的傅里叶变换。连续信号与系统的傅里叶分析显然不便于直接用计算机进行计算,使其应用受到限制,而DFT 是一种时域和频域均离散化的变换,适合数值运算,成为分析离散信号和系统的有力工具。工程实际中,经常遇到的连续信号Xa(t),其频谱函数Xa(jW)也是连续函数。数字计算机难于处理,因而我们采用DFT 来对连续时间信号的傅里叶变换进行逼近,进而分析连续时间信号的频谱。
离散傅里叶变换是有限长序列的傅里叶变换,它相当于把信号的
傅里叶变换进行等频率间隔采样,并且有限长序列的离散傅里叶变换和周期序列的离散傅里叶级数本质是一样的。快速傅里叶变换(FFT )并不是一种新的变换,它是离散傅里叶变换的一种快速算法,并且主要
是基于这样的思路而发展起来的:(1)把长度为N 的序列的DFT 逐次分解成长度较短的序列的DFT 来计算。(2)利用WN(nk)的周期性和对称性,在DFT 运算中适当的分类,以提高运算速度。(对称性
nk
N
nk N
W W N
-=+2
,12-=N
N W ;周期性nk N nk N nrN N k rN n N W W W W ---==)(,r 为任意整数
,1=nrN
N
W ) 离散傅里叶变换的推导:
离散傅里叶级数定义为    nk j N k p p e
k x N
n x N
21
)(1
)(π∑-==        (1-1)                          将上式两端乘以nm j N
e π2-并对n 在0~N-1
求和可得 ⎥⎦
⎤⎢⎣⎡==∑∑∑∑∑-=---=-=-=---=-10)(11
0101
)(1
0N
2N
2N
2
)()(1)(N n m k n j N N k p N n N k m k n j p
N n nm j p e k X e
短时傅里叶变换matlab程序
k X
N
e
n x πππ 因为{
m k    1m
k    0)
(N )(1
)
(N 2N
2N
2-1-1N 11
=≠---=-==
∑m k j m k j N n m k n j
e e
e
N
π
ππ
所以∑∑-=-=--=1
1
)()()(N
2N k p N n nm j p m k k X e
n x δπ  这样∑-=-=10
N
2
)()(N n nm j p p e
n x m X π用k
代替m 得      ∑-=-=10
N
2)()(N n nk j p P e n x k X π                      (1-2)
令N
2πj N e
W -=,则(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 nk
N
p
p p W k X
N
n 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 是等价的,因此在主值区计算D
FS 和DFT 是相等的,所以DFT 计算公式形式与DFS 基本相同。其关系为
)()()(n R n x n x N p =  )()()(k R k X k X N p =,所以离散傅里叶正变换
()()[]()W nk
N N n n x n x DFT k X ∑-===1
0≤k ≤N-1
离散傅里叶变换(DFT)定义:设有限长序列x (n) 长为N (0≤n ≤N-1),其离散傅里叶变换是一个长为N 的频率有限长序列(0≤k ≤N-1),其正变换为
()()[]()W nk
N N n n x n x DFT k X ∑-===1
0  0≤k ≤N-1  (
W
e
N
j
N π
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');