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

内容发布更新时间 : 2024/5/20 8:28:01星期一 下面是文章的全部内容请认真阅读。

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

一、序列的移位和周期延拓运算。

n已知x(n)?(0.8)R8(n),利用MATLAB生成并图示序列x(n),x(n?m),x((n))8RN(n)和

x((n?m))8RN(n),其中N?24,0?m?N,x((n))8表示x(n)以8为周期的延拓。

解:MATLAB程序清单如下: N=24; M=8;

m=3;% 设移位值为3 n=0:N-1;

xn=0.8.^n.*(n>=0 & n

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的物理意义。

已知有限长序列x(n)?R4(n),其离散时间傅立叶变换(DTFT)1?e?j4?X(e)?DFT[x(n)]?1?e?j?jw

试绘制出X(ej?) 幅度频谱和相位频谱,并分别计算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

1 / 3

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点的离散序列x(n)?{1,2,3,4,5,6,6,5,4,3,2,1},要求:

(1) 利用MATLAB 计算序列的12点离散傅立叶变换(DFT)X(k),并绘出它的幅度和相

位图;

(2) 利用MATLAB计算序列的离散时间傅立叶变换(DTFT)X(e位图;

(3) 利用MATLAB的hold命令,将上述两张幅度频谱图合成一张,进行比较,以验证X(k)是X(ej?j?),并绘出它的幅度和相

)的抽样。

三、验证DFT 的共轭对称性

分别以x1(n)?[1,2?j,?1?2j,1?3j,0,1?3j,?1?2j,2?3j],x2(n)?[0,1,2,3,4,5]两个

2 / 3

序列为例,验证序列的DFT的对称性质。 程序略。

四、利用MATLAB 验证两个序列的线性卷积和圆周卷积的关系 已知两个有限长序列:

x(n)??(n)?2?(n?1)?3?(n?2)?4?(n?3)?5?(n?4) h(n)??(n)?2?(n?1)??(n?2)?2?(n?3)

编写一个计算两个任意有限长序列的圆周卷积matlab 程序,计算这两个序列以下几种情况的圆周卷积,并与这两个序列的线性卷积结果相比较:

①x(n)⑤h(n) ②x(n)⑥h(n) ②x(n)⑨h(n) ③x(n)⑩h(n) 程序略。

五、利用快速卷积法计算两个序列的卷积

n已知序列x(n)?sin(0.4n)R15(n),h(n)?0.9R20(n)?试利用快速卷积法计算这两个序列的

卷积y(n)?x(n)*h(n)。?

解:快速卷积法的计算框图如下所示:?

?x(n) L点FFT ?

??y(n) L点IFFT ?

?h(n) L点FFT ?

?

???L??程序清单如下:?Nx=15;Nh=20;

n1=1:Nx-1;n2=0:Nh-1;

xn=sin(0.4*n1).*(n1>=0 &n1=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);

3 / 3