加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转]matlab中fft的应用:画频谱图

(2012-05-15 17:31:03)
标签:

杂谈

matlab中fft的应用:画频谱图
2008-11-16 14:02

 

(本人原创:http://hi.baidu.com/工程师笔记)

 

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')

结果如下图:

http://hiphotos.baidu.com/%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%CA%A6%EF%BF%BD%CA%BC%EF%BF%BD/pic/item/771959cfcda88b25b700c8e9.jpg

 

图中红色是没经过fftshift处理的频谱图,蓝色是经过处理之后的。结合程序,显然x的频谱应该位于200Hz处,经过fftshift处理的蓝色频谱是正确的。注意:红色和蓝色的曲线在两边分别关于-250Hz250Hz对称。这并不是偶然。

以下是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处理后的频谱:

http://hiphotos.baidu.com/%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%CA%A6%EF%BF%BD%CA%BC%EF%BF%BD/pic/item/6f3beb87946c212266096ee8.jpg



Original source:http://hi.baidu.com/imheaventian/item/a006c84670cb3333fb8960ef

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有