Matlab做快速傅里叶变换
2016-02-26 01:29
246 查看
快速傅里叶变换(Fast Fourier Transform)是信号处理与数据分析领域里最重要的算法之一。傅里叶变换在物理学、数论、组合数学、信号处理、概率、统计、密码学、声学、光学等领域都有着广泛的应用。
那么如何用Matlab实现快速傅里叶变换呢?直接上代码。
结果如下:
我们眼中的世界就像皮影戏的大幕布,幕布的后面有无数的齿轮,大齿轮带动小齿轮,小齿轮再带动更小的。在最外面的小齿轮上有一个小人——那就是我们自己。我们只看到这个小人毫无规律的在幕布前表演,却无法预测他下一步会去哪。而幕布后面的齿轮却永远一直那样不停的旋转,永不停歇。这样说来有些宿命论的感觉。说实话,这种对人生的描绘是我一个朋友在我们都是高中生的时候感叹的,当时想想似懂非懂,直到有一天我学到了傅里叶变换……
那么如何用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偏最小二乘法及其检验
- 对于灰度图像中同一个像素,MATLAB和Photoshop的灰度值不同
- MATLAB GUI 数据传递方法
- Matlab连接Sql server数据库
- Sam版Matlab粒子群PSO工具已经更新
- VS与Matlab混合编译 - mexw64
- 1.1 Built-in Distributions In Matlab
- matlab 中的矩阵分解
- MATLAB 解不等式组
- VS2010和matlab2010混合编程中char16_t重定义的问题
- Matlab中的静态(持久)变量和全局变量
- Matlab显示图像问题,double处理后,图像变白
- C/C++与Matlab混合编程初探
- Matlab灰色预测和统计分析
- LaTeX 嵌入MATLAB 绘图的字体
- matlab plot一点小细节
- matlab color_rain colorbar
- MatLab归一化说明
- matlab strel函数用法
- [matlab]向量复制成矩阵