%FFT快速计算方法 close all;clear all;clc; x=[2,1,-1,2,3]; nx=0:4; K=128; dw=2*pi/K; k=floor((-K/2+0.5):(K/2-0.5)); X=x*exp(-j*dw*nx'*k); figure('position',[800,300,700,200]); m=1;n=3; subplot(m,n,1);plot(k*dw,abs(X)); title('5点序列的DTFT和FFT');xlabel('\omega');ylabel('幅度响应'); Xd=fft([2,1,-1,2,3]); hold on; plot([0:4]*2*pi/5,abs(Xd),'.');grid on; Xd1=fftshift(Xd); subplot(m,n,2);plot(k*dw,abs(X));grid on; xlabel('\omega');ylabel('幅度响应');title('FFT移位后'); hold on; plot([-2:2]*2*pi/5,abs(Xd1),'.'); subplot(m,n,3); plot(k*dw,angle(X));grid on; title('FFT移位后');xlabel('\omega');ylabel('相位响应');根据程序写出这段程序使用的技术流程
时间: 2024-04-03 21:35:18 浏览: 110
这段程序使用的技术流程如下:
1. 定义输入序列x及其对应的离散时间序列nx;
2. 定义K值、dw值和k序列,其中K为FFT计算时使用的点数,dw为离散角频率间隔,k为频率序列;
3. 利用矩阵计算(x*exp(-j*dw*nx'*k))计算x序列的DFT(即DTFT采样值),并将结果赋值给X;
4. 绘制DTFT采样值的幅度响应图,并标注横轴和纵轴的含义;
5. 利用MATLAB自带的fft函数计算输入序列x的FFT结果Xd,并绘制其幅度响应图,并用小圆点标记采样点;
6. 在第4步的图上叠加绘制第5步计算得到的FFT结果Xd的幅度响应图,用小圆点标记采样点;
7. 利用fftshift函数将Xd结果移位,得到Xd1结果;
8. 绘制移位后的FFT结果Xd1的幅度响应图,并在第4步的图上叠加绘制,用小圆点标记采样点;
9. 绘制移位后的FFT结果Xd1的相位响应图,并标注横轴和纵轴的含义;
10. 程序执行完毕。
阅读全文