MATLAB实现离散信号的DTFT 和DFT

2022-08-03 18:35:35 浏览数 (1)

一、实验目的 加深对离散信号的DTFT和DFT的及其相互关系的理解。 二、实验原理及方法         在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使用离散Fouier变换(DFT)。这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现。         DTFT和DFT的主要区别就是DFT在时域和频域都是离散的,它带来的最大好处就是适合于数值计算,适合于计算机处理,DTFT和DFT有许多相似的性质。         利用MATLAB工程计算语言按要求编写程序算法,实现对有限长序列的离散时间傅立叶变换(DTFT)和离散傅立叶变换(DFT)的求解。 三、实验内容 1.     已知序列:         x(n) = cos

 n,0 ≤ n ≤ 15         1) x(n) 的 16 点和 32 点 DTFT,绘出 X (e ʲw) 幅度谱图形;

        2) x(n) 的 16 点和 32 点 DFT,绘出 X (k ) 幅度谱图形; 讨论对正弦信号抽样及DTFT 和 DFT 之间的相互关系,试说明实验产生的现象的原因。 2.     已知序列: x(n)={1,2,3,4,5,6,6,5,4,3,2,1}         1) 计算 x(n) 的 DFT 为 X (k ) ,绘出它的幅度和相位图;

        2) 计算 x(n) 的 DTFT 为 X (e ʲw ) ,绘出它的幅度和相位图;

        3) 利用 hold 函数,比较并验证 X (k ) 是 X (e ʲw ) 的采样。 参考流程图:

 五、实验报告要求 1.简述实验原理及目的. 2.写出实验程序,绘制实验结果. 3.总结实验结论.

代码语言:javascript复制
9.1:
for N=16:16:32
n=0:15;
x1=cos(5*n*pi/16);
n=0:N-1;k=n;
x=zeros(1,N);
x(find(n<=15))=x1;
y=x*exp(-j*2*pi/N).^(n'*k);
w=linspace(-2*pi,2*pi,500);
y1=x*exp(-j*n'*w);
figure;
subplot(3,1,1);stem(n,x,'.');ylabel('x(n)');
subplot(3,1,2);plot(w/pi,abs(y1));xlabel('X pi');ylabel('X(w)');
subplot(3,1,3);stem(k,abs(y),'.');ylabel('mag X(k)');
end
9.2:
n=0:11;
x=[1,2,3,4,5,6,6,5,4,3,2,1];
k=n;
N=length(n);
y=x*exp(-j*2*pi/N).^(n'*k);�T
w=linspace(-2*pi,2*pi,500);
y1=x*exp(-j*n'*w);%DTFT
figure;
subplot(4,1,1);stem(n,x,'.');ylabel('x(n)');
subplot(4,2,3);stem(k,abs(y),'.');ylabel('mag X(k)');
subplot(4,2,4);stem(k,angle(y),'.');ylabel('ang X(k)');
subplot(4,1,3);plot(w/pi,abs(y1));xlabel('X pi');ylabel('X(jw)');
subplot(4,1,4);plot(w/pi,angle(y1));xlabel('X pi');ylabel('arg(jw)');
figure;%mag
stem(2*k/N,abs(y),'filled');
hold on;
plot(w/pi,abs(y1));xlabel('X pi');title('mag');
figure;%arg
stem(2*k/N,angle(y),'filled');
hold on;
plot(w/pi,angle(y1));xlabel('X pi');title('arg');

0 人点赞