Matlab做快速傅里叶变换

快速傅里叶变换(Fast Fourier Transform)是信号处理与数据分析领域里最重要的算法之一。傅里叶变换在物理学、数论、组合数学、信号处理、概率、统计、密码学、声学、光学等领域都有着广泛的应用。
那么如何用Matlab实现快速傅里叶变换呢?直接上代码。

tp=0:2048;                              % 时域数据点数N
yt=sin(0.08*pi*tp).*exp(-tp/80);        % 生成正弦衰减函数
plot(tp,yt), axis([0,400,-1,1]),        % 绘正弦衰减曲线
t=0:800/2048:800;                       % 频域点数Nf
f=0:1.25:1000;
yf=fft(yt);                             % 快速傅立叶变换
ya=abs(yf(1:801));                      % 幅值
yp=angle(yf(1:801))*180/pi;             % 相位
yr=real(yf(1:801));                     % 实部
yi=imag(yf(1:801));                     % 虚部
figure
subplot(2,2,1)
plot(f,ya),axis([0,200,0,60])        % 绘制幅值曲线
title('幅值曲线')
subplot(2,2,2)
plot(f,yp),axis([0,200,-200,10])    % 绘制相位曲线
title('相位曲线')
subplot(2,2,3)
plot(f,yr),axis([0,200,-40,40])     % 绘制实部曲线
title('实部曲线')
subplot(2,2,4)
plot(f,yi),axis([0,200,-60,10])     % 绘制虚部曲线
title('虚部曲线')

结果如下:

Matlab做快速傅里叶变换_第1张图片

我们眼中的世界就像皮影戏的大幕布,幕布的后面有无数的齿轮,大齿轮带动小齿轮,小齿轮再带动更小的。在最外面的小齿轮上有一个小人——那就是我们自己。我们只看到这个小人毫无规律的在幕布前表演,却无法预测他下一步会去哪。而幕布后面的齿轮却永远一直那样不停的旋转,永不停歇。这样说来有些宿命论的感觉。说实话,这种对人生的描绘是我一个朋友在我们都是高中生的时候感叹的,当时想想似懂非懂,直到有一天我学到了傅里叶变换……

你可能感兴趣的:(matlab,fft)