第一次作业——Matlab编程实现DFT实验
题目:用Matlab实现以下3个信号的DFT分析,具体要求:画出对应信号的时域波形及其振幅、相位谱。(画出物理坐标)
解答:
代码如下:
(1) N=64;
%生成delata函数,并对其做64点的采样
y1=zeros(1,N);
y1(1)=1;
i=0:N-1;
subplot(3,3,1);
stem(i,y1);
xlabel('n');
title('delta函数做64点采样');
Y1=fft(y1,N);%delta函数做64点采样图
mag=abs(Y1);
subplot(3,3,2);
stem(i,mag);%delta函数做64点FFT
xlabel('K');
title('delta函数的64点DFT');
ang=angle(Y1)*180/pi;%求DFT的相位,并把弧度转化为角度
subplot(3,3,3);
plot(i,ang);
xlabel('K');
ylabel('角度');
title('delta函数的64点DFT相位图');
(2)
%令A1=1;
A1=1;
t=0:1/N:1-1/N;
f0=50;
y2=A1*sin(2*pi*f0*t); %做64点采样
i=0:N-1;
subplot(3,3,4);
stem(i,y2);
xlabel('n');
title('A1*sin(2*pi*f0*t)函数做64点采样 f0=50');
Y2=fft(y2,N);
mag=abs(Y2);
subplot(3,3,5);
stem(i,mag);
xlabel('K');
title('A1*sin(2*pi*f0*t)函数的64点DFT f0=50');
ang=angle(Y2)*180/pi;
subplot(3,3,6);
plot(i,ang);
xlabel('K');
ylabel('角度');
title('A1*sin(2*pi*f0*t)函数的64点DFT相位图');
(3)
%令A2=1;
A2=1;
t=0:1/N:1-1/N;
f0=50;
y3=A2*sin(2*pi*f0*t.*t); %做64点采样
i=0:N-1;
subplot(3,3,7);
stem(i,y3);
xlabel('n');
title('A2*sin(2*pi*f0*t*t)函数做64点采样 f0=50');
Y3=fft(y3,N);
mag=abs(Y3);
subplot(3,3,8);
stem(i,mag);
xlabel('K');
title('A2*sin(2*pi*f0*t*t)函数的64点DFT f0=50');
ang=angle(Y3)*180/pi;
subplot(3,3,9);
plot(i,ang);
xlabel('K');
ylabel('角度');
title('A2*sin(2*pi*f0*t*t)函数的64点DFT相位图');
实验结果
截图: