声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5053|回复: 30

[FFT] 请教一个FFT横纵坐标显示问题

[复制链接]
发表于 2007-6-26 09:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
大家好!我做了一个FFT变换程序,但是横纵坐标显示有点不对劲,请各位高手执教一下。
程序如下:
这里N表示采样点数即y的点数,fs为采样频率。这里y是一个5Hz的正弦信号y=sin(2*pi*5*t)。
y=abs(y);
y=abs(fft(y));
plot((0:N/2-1)/N*fs,y(1:N/2));
本来应该画出5Hz,但是现在画出的是10Hz,不知道是为什么?还有FFT的纵坐标表示什么意思啊,如何控制才合理呢?
回复
分享到:

使用道具 举报

发表于 2007-6-26 09:58 | 显示全部楼层

回复 #1 yhc310 的帖子

以前本版大版主yangzj和大牛eight专门对FFT做过总结,你可以找找他们的帖子。
我在他们的基础之上稍做了修改,主要差别在没有体现负频率,做的是单边的。
N=1024;
fs=120;
t=(0:N-1)/fs;        % 时间序列
x=2*sin(2*pi*15*t);
figure(1)
subplot(2,1,1);
plot(t, x);
xlabel('t/s');
a=abs(fft(x));     

df = fs/N;            %频域分辨率 Hz
f = (0:N/2-1)*df;       %频域序列
subplot(2,1,2);
plot(f, 2*a(0:N/2-1)/N);
xlabel('f/Hz');
希望指正:@)

[ 本帖最后由 zhangnan3509 于 2007-6-26 15:58 编辑 ]

评分

1

查看全部评分

发表于 2007-6-26 10:01 | 显示全部楼层

回复 #1 yhc310 的帖子

我的问题是在第一行,和第二行,不知道你要干什么,为什么要这样用两次abs,你想得到什么结果?

[ 本帖最后由 zhangnan3509 于 2007-6-26 10:10 编辑 ]
 楼主| 发表于 2007-6-26 10:42 | 显示全部楼层

回复 #1 yhc310 的帖子

不好意思,问题没有说的太明白,其实这段程序是截下来的,其实y以前是复数,中间加了改动。第一个abs(y)可以不看,看下面两行就可以了。
y=abs(fft(y));
plot((0:N/2-1)/N*fs,y(1:N/2));
 楼主| 发表于 2007-6-26 10:51 | 显示全部楼层

回复 #1 yhc310 的帖子

zhangnan3509 兄弟,请问一下你是怎么请教的这两位大牛啊?我刚来这里不久还不是很明白。还有这个版的小波分析大牛是谁啊?
发表于 2007-6-26 11:07 | 显示全部楼层

回复 #5 yhc310 的帖子

我不是专门请教的,而是他们曾经在帖子上总结过,我又根据自己需要修改了一下。但是我想如果你不清楚的说明自己的意图,仅靠这两行程序是找不到原因的。小波方面,版里有yangzj,zhlong,破凰,以及songzy41 ,还有VibrationMaster博导等等很多人都会给你提出建议的。


但是如果你要发贴求助资料请在置顶贴求助区,按要求发贴,如果是想讨论问题,那在讨论区就没问题了

[ 本帖最后由 zhangnan3509 于 2007-6-26 11:09 编辑 ]
发表于 2007-6-26 11:33 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-8 13:51 编辑
原帖由 yhc310 于 2007-6-26 09:43 发表
大家好!我做了一个FFT变换程序,但是横纵坐标显示有点不对劲,请各位高手执教一下。
程序如下:
这里N表示采样点数即y的点数,fs为采样频率。这里y是一个5Hz的正弦信号y=sin(2*pi*5*t)。
y=abs(y);
y=abs( ...

在这个程序不能不看笫1行。y是一个5Hz的正弦信号y=sin(2*pi*5*t),而取了y=abs(y)后,便没有负值了,全是正值,不是一个标准的正弦信号,对应的频谱中有主要频率为10Hz。
楼主为什么要在笫1行取绝对值,如果是复数,可用real或imag取实部/虚部。

评分

1

查看全部评分

发表于 2007-6-26 12:04 | 显示全部楼层

回复 #7 songzy41 的帖子

还是您把问题看得透彻!
发表于 2007-6-26 14:02 | 显示全部楼层
由于取绝对值,这种非线性操作,使得原来的正弦信号,变成半波信号。相应的周期也缩短了一半,这样信号中就出现了非常强的10Hz成分。
发表于 2007-6-26 14:19 | 显示全部楼层
zhangnan的程序是单边幅值谱的话,是不是少乘以个2?就是a=abs(fft(x))*2;:loveliness:
发表于 2007-6-26 14:24 | 显示全部楼层

回复 #10 wy558558558 的帖子

你好好看看倒数第二行:@)
发表于 2007-6-26 14:56 | 显示全部楼层
2写前面了没看见不好意思:loveliness:
发表于 2007-6-26 15:12 | 显示全部楼层
还有请问zhangnan你的频率序列中1:N/2和0:N/2-1.是把0频率去掉的意思吗?
发表于 2007-6-26 15:30 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-8 13:53 编辑
原帖由 zhangnan3509 于 2007-6-26 09:58 发表
以前本版大版主yangzj和大牛eight专门对FFT做过总结,你可以找找他们的帖子。
我在他们的基础之上稍做了修改,主要差别在没有体现负频率,做的是单边的。
N=1024;
fs=120;
t=(0:N-1)/fs;        % 时间序列 ...


版主应该把f改成 f=(0:N/2-1)*df
另外有个大家可能都没留意的问题,就是做双边谱的时候直流量是不用乘2的.
发表于 2007-6-26 15:32 | 显示全部楼层

回复 #14 yangzj 的帖子

因为直流量的频率在0点,刚好在正负的中间,没有被分为两半,可以这样理解么?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-6 19:21 , Processed in 0.096012 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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