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做快速傅里叶变换_第2张图片

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

你可能感兴趣的:(Matlab做快速傅里叶变换)