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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

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

hn=0.9.^n2.*(n2>=0 &n2

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);

相关文档
最新文档