caolizhong 发表于 2009-3-6 09:11

FFT时频图纵坐标幅值为什么不对

做一个5,35,75,150次的谐波检测
用FFT分析后,为什么他的纵坐标幅值那样大啊.我看别人做出的.其幅值都是在0-1之间.,可是我的在0-1200之间.,
我觉得原因是在FFT计算后,fa1(1:1024)的值的问题,
请大家给分析一下吧
程序如下:
n=1:2048;
%采样频率不明白
t=(n-1)/400;
x1=sin(10*pi*t);
x2=sin(70*pi*t);
x3=sin(150*pi*t);
x4=sin(300*pi*t);
s=x1+x2+x3+x4;
fa1=fft(s);
fa1=abs(fa1);
f=0:200/1024:200-200/1024;
plot(f,fa1(1:1024));
得到的图形如图

songzy41 发表于 2009-3-6 10:22


fa1=abs(fa1);
改为
fa1=abs(fa1)/1024;
就能得幅值都在0-1之间.

ChaChing 发表于 2009-3-6 11:59

f已经对应实际频率了5,35,75,150HZ

caolizhong 发表于 2009-3-6 17:55

回复 沙发 songzy41 的帖子

谢谢你啊大哥,又是你帮我解答
我还问清楚下,为什么要除1024呢?
是不是对N个点进行FFT.得到的值最大就为N呢

ChaChing 发表于 2009-3-6 18:49

sorry! 刚才看清楼主问的是幅值, 误以为是normal frequency!
fa1=abs(fa1)*2/2048;

Ref: http://forum.vibunion.com/forum/viewthread.php?tid=23614&highlight=fft

songzy41 发表于 2009-3-6 20:39

可看下列帖子:
http://forum.vibunion.com/forum/thread-23665-1-1.html

caolizhong 发表于 2009-3-7 15:41

回复 6楼 songzy41 的帖子

可是如果我把其中的一个信号的幅值改为不是1后,比如把X1的幅值改为10000后,纵坐标幅值在0-8000间,这是为什么呢

songzy41 发表于 2009-3-7 17:22

在你的“时频图”上,可以看到x1在该图上就不是1,这主要原因信号x1的频率是5Hz,而频率分辨率是0.19531,5Hz在谱图中是在两条谱线的中间,所以当然无法显示出5Hz的幅值。

aini2009 发表于 2009-3-13 17:32

我什么我下载下来了打不开说无效的文件名
页: [1]
查看完整版本: FFT时频图纵坐标幅值为什么不对