声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2826|回复: 4

[FFT] [求助]FFt分析时频率f的范围和间隔怎么取

[复制链接]
发表于 2006-4-21 09:19 | 显示全部楼层 |阅读模式

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

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

x
用fft作频谱分析的时候,不知道频率f的范围和间隔怎么取,望高手能给指点一下!以下面例子帮分析一下:
  1. n=1:3000;
  2. dt=7.5076e-008;
  3. t=n*dt;
  4. freq=42971;
  5. s=10*sin(2*pi*freq*t).*exp(-1.0e-4*(2*pi*freq*t).^2);
  6. y=fft(s);
  7. f=(0:length(n)-1)*2*pi/length(n);
  8. mag=abs(y);
  9. plot(f,mag);
复制代码

回复
分享到:

使用道具 举报

发表于 2006-4-21 12:55 | 显示全部楼层
先告诉你,你的例子f=(0:length(n)-1)*2*pi/length(n);
是错误的,根本没有对频率进行正确定位。只是将频率整合到0:2pi之间;
正确的应该是:
  1. Fs=1/dt;
  2. f=Fs*(0:length(n)-1)/length(n);
复制代码

这个时候对应的频谱峰值线会有两根,这是由于FFT本身计算得到的
但这个时候频率定位是准确的,取频谱上的前20个数
  1. plot(f(1:20),mag(1:20);
复制代码

可以看得清楚:40000多(42971)

更合理的做法是:
dt别取得那么小,只要保证1/dt(FS)大于2倍的最高频率(这里指42971)
通常取10倍足够了
  1. n=1:3000;
  2. dt=7.5076e-006;
  3. t=n*dt;
  4. freq=42971;
  5. s=10*sin(2*pi*freq*t).*exp(-1.0e-4*(2*pi*freq*t).^2);
  6. y=fft(s,2048);
  7. f=1/dt*(0:2047)/2048;
  8. mag=abs(y);
  9. plot(f(1:1024),mag(1:1024));
复制代码

这个时候就很清楚了
 楼主| 发表于 2006-4-21 16:01 | 显示全部楼层
多谢,受益匪浅!
再请教一下,既然画1024个点就行了,为什么变换的时候要用2048个点呢?
发表于 2006-4-23 16:42 | 显示全部楼层
多谢,受益匪浅!
再请教一下,既然画1024个点就行了,为什么变换的时候要用2048个点呢?

如果你取1024个点那就只用花512个点就行了
应为前后是对称的
发表于 2015-12-1 20:32 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-3 23:18 , Processed in 0.108785 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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