离散傅里叶变换(DFT)
9
在截取16点时,得到的是完整的余弦波形;而截取8点时, 得到的是半截的余弦波形,当然有大量的谐波成分。
10
例7.16 验证N点DFT的物理意义
j 4 1 e j x ( n ) R ( n ), 求得 X ( e ) FT [ x(n)] , (1) 4 j 1 e
这种方法计算DFT概念清楚、编程简单,但占用内存大、运行 速度低,所以不实用。MATLAB基础部分提供了fft、ifft、fft2、 ifft2等等快速计算傅里叶变换的函数,使DFT的运算速度量提高了 若干数量级,在后面的例题中均直接调用这些函数。
6
例7.15 序列的离散傅立叶变换
求复正弦序列 x1 (n) e 余弦序列
13
结论:若序列长度为L,频域采样点数(DFT的长度) 为N,且L≤N,则频域采样后可不失真地恢复原序 列 x ( n) ;但若L>N,则频域采样后不能不失真地恢复 原序列 x ( n) 。
图3-3-1 时域恢复示意图
14
例7.17 频域与时域采样对偶性
(1)产生三角波序列
n x(n) M n 0 n M /2 M /2 n M
j n 8
RN ( n)
x2 ( n) cos n RN ( n) 8
正弦序列
x3 ( n) sin n RN ( n) 8
的离散傅立叶变换,分别按N =16和N =8进行计算。 绘出幅频特性曲线, 进行比较讨论。 解:直接产生序列x1n、x2n和x3n,调用fft函数求解
绘出幅频曲线和相频曲线。
(2)计算并图示x(n)的8点DFT。 (3)计算并图示x(n)的16点DFT。
j 解: 序列x(n)的N点DFT的物理意义是 X (e )在[0,2]上进行 N点等间隔采样。
程序先密集采样,绘制出幅频曲线图。然后再分别做8点和16 点DFT来验证这个采样关系。 程序略。
n 0 kn X ( k ) DFT [ x( n)] x( n)W N n 0 N 1 N 1
0 k N-1
比较上面二式可得关系式
X (k ) X ( z )
ze
j 2 k N
, ,
0 k N -1 0 k N -1
(3.1.3) (3.1.4)
X ( k ) X (e j )
2 k N
(3.1.3)式表明序列x(n)的N点DFT是x(n)的Z变换在单位圆上 的N点等间隔采样; (3.1.4)式则说明X(k)为x(n)的傅里叶变 2 换X(ejω)在区间[0,2π] 上的N点等间隔采样。
三、DFT的隐含周期性
k ( k mN ) WN WN ,
7
• • • • • • • • • • • • • • • •
%第七章例7.15程序q715 % DFT计算 clear;close all N=16;N1=8; %产生序列x1(n),计算DFT[x1(n)] n=0:N-1; x1n=exp(j*pi*n/8); %产生x1(n) X1k=fft(x1n,N); %计算N点DFT[x1(n)] Xk1=fft(x1n,N1); %计算N1点DFT[x1(n)] %产生序列x2(n),计算DFT[x2(n)] x2n=cos(pi*n/8); X2k=fft(x2n,N); %计算N点DFT[x2(n)] Xk2=fft(x2n,N1); %计算N1点DFT[x1(n)] %产生序列x3(n),计算DFT[x3(n)] x3n=sin(pi*n/8); X3k=fft(x3n,N); %计算N点DFT[x3(n)] Xk3=fft(x3n,N1); %计算N1点DFT[x1(n)]
7.3 离散傅里叶变换(DFT)
一、DFT的定义
设x(n)是一个长度为M的有限长序列, 则定义x(n) 的N点离散傅里叶变换为
kn X ( k ) DFT [ x(n)] x(n)WN , k=0, 1, n 0 N 1
, N-1 (3.1.1)
X(k)的离散傅里叶逆变换为
1 x( n) IDFT [ X ( k )] N
8
• • • • • • • • • • • • • • • • • • • •
%绘图 subplot(2,3,1);stem(n,abs(X1k),'.'); title('16点 DFT[x1(n)]'); xlabel('k');ylabel('|X1(k)|') subplot(2,3,2);stem(n,abs(X2k),'.'); title('16点 DFT[x2(n)]'); xlabel('k');ylabel('|X2(k)|') subplot(2,3,3);stem(n,abs(X3k),'.'); title('16点 DFT[x3(n)]'); xlabel('k');ylabel('|X3(k)|') k=0:N1-1; subplot(2,3,4);stem(k,abs(Xk1),'.'); title('8点 DFT[x1(n)]'); xlabel('k');ylabel('|X1(k)|') subplot(2,3,5);stem(k,abs(Xk2),'.'); title('8点 DFT[x2(n)]'); xlabel('k');ylabel('|X2(k)|') subplot(2,3,6);stem(k,abs(Xk3),'.'); title('8点 DFT[x3(n)]'); xlabel('k');ylabel('|X3(k)|')
k 0
N 1
kn X ( k )WN , n 0, 1,
, N -1 (3.1.2)
式中, W e N
j
2 N
,N称为DFT变换区间长度, N M
1
二、DFT和Z变换的关系
设序列x(n)的长度为N, 其Z变换和DFT分别为:
X ( z ) ZT [ x( n)] x( n) z n
x1 (n) IDFT[ X1 (k )] ,n = 0, 1, ,31
15
(5)绘出 x1 (( n))32 的波形图,评述它与x(n)的关系。
% 第七章例7.17程序q717 % 时域与频域采样的对偶性验证 clear;close all M=40;N=64;n=0:M; %产生M长三角波序列x(n) xa=0:floor(M/2); xb= ceil(M/2)-1:-1:0; xn=[xa,xb]; Xk=fft(xn,64);%64点FFT[x(n)] X1k=Xk(1:2:N);%隔点抽取Xk得到X1(K) x1n=ifft(X1k,N/2);%32点IFFT[X1(k)]得到x1(n) nc=0:3*N/2; % 取97点为观察区 xc=x1n(mod(nc,N/2)+1);%x1(n)的周期延拓序列 subplot(3,2,1);stem(n,xn,'.') title('40点三角波序列x(n)');xlabel('n');ylabel('x(n)')
19
用DFT计算线性卷积
如果
y(n) x1 (n)
x2 (n) x1 (m ) x2 ((n m )) L RL ( n)
m0
L 1
X1 (k ) DFT [ x1 (n)] X 2 (k ) DFT [ x2 (n)]
则由时域循环卷积定理有 Y(k)=DFT[y(n)]=X1(k)X2(k),
(2)对M = 40,计算x(n)的64点DFT,并图示x(n)和 X(k) = DFT[x(n)],k = 0, 1, …, 63。 (3)对(2)中所得X(k)在 [0,2] 上进行32点抽样得
X1 (k ) X (2k ),k 0, 1, , 31
(4)求 X1 (k ) 的32点IDFT,即
k, m, N 均为整数
实际上, 任何周期为N的周期序列 x( n) 都可以看 作长度为N的有限长序列x(n)的周期延拓序列, 即
x ( n)
m
x( n mN )
(3.1.5) (3.1.6)
x( n) x( n) RN ( n)
为了以后叙述方便, 将(3.1.5)式用如下形式表示:
16
k=0:N-1; subplot(3,2,3);stem(k,abs(Xk),'.') title('64点DFT[x(n)]');xlabel('k');ylabel('|X(k)|') k=0:N/2-1; subplot(3,2,4);stem(k,abs(X1k),'.') title('X(k)的隔点抽取');xlabel('k');ylabel('|X1(k)|') n1=0:N/2-1; subplot(3,2,2);stem(n1,x1n,'.') title('32点IDFT[X1(k)]');xlabel('n');ylabel('x1(n)') subplot(3,1,3);stem(nc,xc,'.') title('x1(n)的周期延拓序列');xlabel('n');ylabel('x(mod(n,32))') set(gcf,'color','w')