当前位置:文档之家› 实验四MATLAB在离散傅立叶变换(DFT)中的应用

实验四MATLAB在离散傅立叶变换(DFT)中的应用

MATLAB 在离散傅立叶变换(DFT)中的应用
一、序列的移位和周期延拓运算。

已知)()8.0()(8n R n x n =,利用MATLAB 生成并图示序列),(),(m n x n x -和)())((8n R n x N ),())((8n R m n x N -其中为周期的延拓。

以表示8)())((,0,248n x n x N m N <<= 解:MATLAB 程序清单如下:
N=24;
M=8;
m=3;% 设移位值为3
n=0:N-1;
xn=0.8.^n.*(n>=0 & n<M); % 产生序列x(n)
subplot(3,1,1);stem(n,xn,'.');grid;
axis([0 length(xn),0 1]);title('序列x(n)');
xc=xn(mod(n,8)+1); % 产生序列x(n)的周期延拓,求余后加1是因为 % MATLAB 矢量的下标从1开始
subplot(3,1,2);stem(n,xc,'.');grid;
axis([0 length(xc),0 1]);title('序列x(n)的周期延拓序列');
xm=[xn(m+1:M) xn(1:m)]; % 产生圆周移位序列xm=x((n+m))NRN (n)
xm=[xm zeros(1,N-length(xm))];
subplot(3,1,3);stem(n,xm,'.');grid;
axis([0 length(xm),0 1]);title('圆周移位序列x(n+m)');
二、利用MATLAB 验证N 点DFT 的物理意义。

ωω
j j jw e e n x DFT e X DTFT n R n x ----===11)]([)()
(),()(44其离散时间傅立叶变换已知有限长序列
试绘制出)(ωj e X 幅度频谱和相位频谱,并分别计算N=8和N=16时的DFT 。

解:MATLAB 程序清单如下:
clf % 清除所有的图形窗口
N1=8;N2=16; % 设置两种DFT 的长度
n=0:N1-1;
k1=n;k2=0:N2-1;
w=(0:2047)*2*pi/2048;
Xw=(1-exp(-j*4*w))./(1-exp(-j*w)); % 对x(n)的频谱采样2048点
xn=[n>=0 & n<4]; % 产生序列x(n)
Xk1=fft(xn,N1); % 计算序列x(n)的8点DFT
Xk2=fft(xn,N2); % 计算序列x(n)的16点DFT
subplot(3,1,1);
plot(w/pi,abs(Xw)); % 绘制序列x(n)的DTFT 的幅频曲线
grid;title('序列x(n)的幅频曲线|X(e^{j\omega})|');
subplot(3,1,2);
stem(k1*2/N1,abs(Xk1),'.');
grid;title('序列x(n)的8点DFT');
subplot(3,1,3);stem(k2,abs(Xk2),'.');
grid;title('序列x(n)的16点DFT');
% 也可以利用MATLAB 中的hold 命令,将上述3个图形绘制在一个图中,程序如下: clf % 清除所有的图形窗口
N1=8;N2=16; % 设置两种DFT 的长度
n=0:N1-1;
k1=n;k2=0:N2-1;
w=(0:2047)*2*pi/2048;
Xw=(1-exp(-j*4*w))./(1-exp(-j*w)); % 对x(n)的频谱采样2048点
xn=[n>=0 & n<4]; % 产生序列x(n)
Xk1=fft(xn,N1); % 计算序列x(n)的8点DFT
Xk2=fft(xn,N2); % 计算序列x(n)的16点DFT
plot(w/pi,abs(Xw)); % 绘制序列x(n)的DTFT 的幅频曲线
hold % 保持当前的图形窗口
H1=stem(k1*2/N1,abs(Xk1),'o');
set(H1,'color','r')
H2=stem(k2*2/N2,abs(Xk2),'*');
set(H2,'color','k');
% legend('|X(e^{j\omega})|','X_1(k)','X_2(k)');
上机练习题:
已知一个12点的离散序列}1,2,3,4,5,6,6,5,4,3,2,1{)(=n x ,要求:
(1) 利用MATLAB 计算序列的12点离散傅立叶变换(DFT ))(k X ,并绘出它的幅度和相
位图;
(2) 利用MATLAB 计算序列的离散时间傅立叶变换(DTFT )),(ωj e
X 并绘出它的幅度和相位图;
(3) 利用MATLAB 的hold 命令,将上述两张幅度频谱图合成一张,进行比较,以验证)
(k X 是)(ωj e X 的抽样。

三、验证DFT 的共轭对称性
分别以]5,4,3,2,1,0[)(],32,21,31,0,31,21,2,1[)(21=----++-+=n x j j j j j j n x 两个
序列为例,验证序列的DFT 的对称性质。

程序略。

四、利用MATLAB 验证两个序列的线性卷积和圆周卷积的关系
已知两个有限长序列:
()()2(1)3(2)4(3)5(4)x n n n n n n δδδδδ=+-+-+-+-
()()2(1)(2)2(3)h n n n n n δδδδ=+-+-+-
编写一个计算两个任意有限长序列的圆周卷积matlab 程序,计算这两个序列以下几种情况的圆周卷积,并与这两个序列的线性卷积结果相比较:
①()x n ⑤()h n ②()x n ⑥()h n ②()x n ⑨()h n ③()x n ⑩()h n
程序略。

五、利用快速卷积法计算两个序列的卷积
已知序列)(9.0)(),()4.0sin()(2015n R n h n R n n x n ==,试利用快速卷积法计算这两个序列的
卷积)(*)()(n h n x n y =。

解:快速卷积法的计算框图如下所示:
MAT L AB 程序清单如下:
Nx=15;Nh=20;
n1=1:Nx-1;n2=0:Nh-1;
xn=sin(0.4*n1).*(n1>=0 &n1<Nx); % 产生序列x(n)
hn=0.9.^n2.*(n2>=0 &n2<Nh); % 产生序列h(n)
L=pow2(nextpow2(Nx+Nh-1)); % 计算对序列x(n)和h(n) 卷积后得到序列yn 的长度 Xk=fft(xn,L); % 对序列x(n)作L 点DFT
Hk=fft(hn,L); % 对序列h(n)作L 点DFT
yn=ifft(Xk.*Hk);。

相关主题