实验四MATLAB在离散傅立叶变换(DFT)中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);