ocean105 发表于 2006-4-21 09:19

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

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

lxinghan 发表于 2006-4-21 12:55

先告诉你,你的例子f=(0:length(n)-1)*2*pi/length(n);
是错误的,根本没有对频率进行正确定位。只是将频率整合到0:2pi之间;
正确的应该是:
Fs=1/dt;
f=Fs*(0:length(n)-1)/length(n);
这个时候对应的频谱峰值线会有两根,这是由于FFT本身计算得到的
但这个时候频率定位是准确的,取频谱上的前20个数
plot(f(1:20),mag(1:20);
可以看得清楚:40000多(42971)

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

ocean105 发表于 2006-4-21 16:01

多谢,受益匪浅!
再请教一下,既然画1024个点就行了,为什么变换的时候要用2048个点呢?

AaronSpark 发表于 2006-4-23 16:42

多谢,受益匪浅!
再请教一下,既然画1024个点就行了,为什么变换的时候要用2048个点呢?
如果你取1024个点那就只用花512个点就行了
应为前后是对称的

醉忘寒砂 发表于 2015-12-1 20:32

{:{39}:}学习了
页: [1]
查看完整版本: [求助]FFt分析时频率f的范围和间隔怎么取