http://www.chinavib.com/forum/thread-81324-1-7.html
原帖由 lzh19840809 于 2009-5-9 21:28 发表
一直有个问题不太明白,直接调用fft画出来的频谱图是左右对称的,因此还要调用fftshift函数,移动零頻的位置。
但是我也看到有人使用这种方法,不调用fftshift,直接plot(f(1:N/2),mag(1:N/2));(这里我不知道为什么不能是0:N/2-1)
使用这种方法也可以实现fftshift的效果。
另外使用fftshift我的为什么不能去掉负半轴呢?
大家看看我的代码:
y=fftshift(fft(x,N));%进行fft变换
mag=abs(y);%求幅值
n=-(N-1)/2N-1)/2
f=n*fs/length(y);%进行对应的频率转换
plot(f,mag);%做频谱图
如果我换成n=0:N/2-1,就不行,因为mag的长度是两倍的n,如果把输出改成plot(f,mag(1:N/2)),则画出的跟上面的那种方法是相反的。如果要获取正半轴的,该怎么修改呢?
所以,我觉得使用fftshift函数还不如直接使用plot(f(1:N/2),mag(1:N/2));方便又快捷,不知道我的看法是否正确,欢迎大家指正
文章评论(0条评论)
登录后参与讨论