爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 23216|回复: 13

[程序设计] matlab中应用fft求傅立叶变换并画频谱图

[复制链接]

新浪微博达人勋

发表于 2013-7-28 19:41:36 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x

在matlab中应用fft求傅立叶变换后,如果想画出频谱图,必须用fftshift命令处理变换的结果。例子如下:


clear;

clc;

t=0:0.001:2;

n=2001;

Fs=1000;

Fc=200;

x=cos(2*pi*Fc*t);

y1=fft(x);

y2=fftshift(y1);

f=(0:2000)*Fs/n-Fs/2;

hold on;

plot(f,abs(y1),'r')

plot(f,abs(y2),'b')

结果如下图:

0.jpeg


图中红色是没经过fftshift处理的频谱图,蓝色是经过处理之后的。结合程序,显然x的频谱应该位于200Hz处,经过fftshift处理的蓝色频谱是正确的。注意:红色和蓝色的曲线在两边分别关于-250Hz和250Hz对称。这并不是偶然。以下是Matlab的帮助文件中对fftshift的说明:Y = fftshift(X) rearranges the outputs of fft, fft2, and fftn by moving the zero-frequency component to the center of the array. It is useful for visualizing a Fourier transform with the zero-frequency component in the middle of the spectrum. For vectors, fftshift(X) swaps the left and right halves of X.由此可见,fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称。将信号频率Fc改为100Hz后的频谱如下,蓝色是fftshift处理后的频谱: 1.jpeg


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-12 11:21:47 | 显示全部楼层
请教一下楼主,程序里面的t,n,fs,fc分别是什么意义呢?
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2013-7-29 12:29:08 | 显示全部楼层
太给力了,非常喜欢,收下了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-7-29 12:51:06 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-10 09:41:37 | 显示全部楼层
非常感谢,学习学习
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-10-14 11:00:56 | 显示全部楼层
谢谢!非常感谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-23 22:12:40 | 显示全部楼层
试了一下,果然。不过这其中有什么物理意义吗?纯数学处理?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-23 22:25:22 | 显示全部楼层
学习了,好东西
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-12 11:22:39 | 显示全部楼层
其实我就是想知道怎么确定的,采样频率什么的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-12-7 11:21:30 | 显示全部楼层
{:eb513:}学习了。。。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表