声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5755|回复: 15

[FFT] fft采用不同分析点数为什么幅值会不一样呢?

[复制链接]
发表于 2008-12-12 19:12 | 显示全部楼层 |阅读模式

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

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

x
同一采样率
M=fft(Y,256);
M=fft(Y,512);
M=fft(Y,1024);
采用不同的点数,应该只是分辨率不同而已啊,怎么结果用1024点明显比256点,512点小呢?多谢!
回复
分享到:

使用道具 举报

发表于 2008-12-12 21:38 | 显示全部楼层
你的信号是平稳信号吗?
发表于 2008-12-15 14:35 | 显示全部楼层
同问!我也有这个问提,就是采样点数不一样,为什么fft后的幅值是不一样的呢?
 楼主| 发表于 2008-12-15 17:29 | 显示全部楼层
谢谢!我的信号只是一般的正弦信号,就导致了这样的结果!能将一下或指导一下方向,平稳和非平稳,为什么会导致采样点数不一样,FFT后幅值不同呢?多谢!
 楼主| 发表于 2008-12-15 17:41 | 显示全部楼层
还有一个问题,不同的采样率,fft后频率也不一样?比如50Hz的正弦信号,fs=1000时,50Hz处有峰值,fs=500时,25Hz有峰值,fs=2000时,100Hz处有峰值。就是出现峰值处在x轴上位置不变,但是采用不同采样率,x轴刻度在变,所以导致不同采样率,出现峰值的频率点不同。
回复 支持 1 反对 0

使用道具 举报

发表于 2008-12-15 18:07 | 显示全部楼层
不同的采样率,相同的点数的fft,会导致频率分辨率不一样,
会出现频谱栏栅效应,和频谱泄漏,会导致峰值出现的位置和幅度不一样.
建议论坛里面搜寻一下频率补偿,以及看看数字信号处理里面的频谱栏栅效应,和频谱泄漏的相关知识
 楼主| 发表于 2008-12-18 15:10 | 显示全部楼层
这是我的程序
N=128 或256 或512 或1024
x=0:.001:1;
y=sin(2*pi*50*x);
M=fft(y,N);
Py=abs(M)*2/N;
f=fs*(0:N/2)/N; %fs采样率
plot(f,Py(1:N+1));
请麻烦试验一下,不同的N,fft幅值结果相差较大。
不同的fs,fft后幅值处频率值也随fs差异成倍。多谢!
那么在这里大概怎么进行频率补偿呢?希望在matlab里面给指个方向就行。多谢啊!
发表于 2008-12-18 16:18 | 显示全部楼层
本帖最后由 VibInfo 于 2016-10-20 16:34 编辑
原帖由 kmkeke 于 2008-12-18 15:10 发表
这是我的程序
N=128 或256 或512 或1024
x=0:.001:1;
y=sin(2*pi*50*x);
M=fft(y,N);
Py=abs(M)*2/N;
f=fs*(0:N/2)/N; %fs采样率
plot(f,Py(1:N+1));
请麻烦试验一下,不同的N,fft幅值结果相差较大。
不同的fs,fft后幅值处频率值也随fs差异成倍。多谢!
那么在这里大概怎么进行频率补偿呢?希望在matlab里面给指个方向就行。多谢啊!

楼主的主要问题是泄漏的问题,楼主的信号是50,但是在FFT变换后,没有一根谱线落在50上,所以看到的只是泄漏出来的部分(可以从下图中看到)。同时在1024时,信号长只有1001,所以Py=abs(M)*2/N;中除1024也是不合适的。我把程序稍改一下,得到的图如下。
x=0:.001:1; fs=1000;
y=sin(2*pi*50*x);
N=64;
for k=1 : 4
    N=N*2;
    M=fft(y,N);
    Py=abs(M)*2/N;
    f=fs*(0:N/2)/N; %fs采样率
    subplot (4,1,k);
    stem(f,Py(1:N/2+1));
    xlim([0 100]);
    title(['N=' num2str(N)]);
end
km2a.jpg
 楼主| 发表于 2008-12-19 19:04 | 显示全部楼层
太感谢了!请问该怎么修正呢?希望能指导个方向!多谢!
发表于 2008-12-19 19:29 | 显示全部楼层
可以用修正法,求出在50处的幅值。
 楼主| 发表于 2008-12-19 20:53 | 显示全部楼层
请问大概怎么修正法啊!不好意思!这个没知道怎么弄?查资料好像有用窗函数的?但是不知道从哪里开始。
发表于 2008-12-19 21:01 | 显示全部楼层
本帖最后由 VibInfo 于 2016-10-20 16:34 编辑
原帖由 songzy41 于 2008-12-19 19:29 发表
可以用修正法...

频谱校正方法吗? 谢谢!

http://www.chinavib.com/forum/viewthread.php?tid=46940&highlight=%C6%B5%C6%D7%D0%A3%D5%FD ?

[ 本帖最后由 ChaChing 于 2008-12-19 21:05 编辑 ]
发表于 2008-12-20 10:17 | 显示全部楼层
对,是频谱校正方法。在本论坛上有不少讨论。版主yangzj曾给过一个MATLAB校正的程序,同时zhwang554也用全相位的校正法给出了相应的程序。可在论坛上找一下。
发表于 2011-8-9 13:28 | 显示全部楼层
困惑ing,求解
发表于 2012-3-6 14:49 | 显示全部楼层
你的x=0:0.001:1;就决定了你的采样率fs=1000,请问你改变采样率的时候,是不是也改变采样的时间间隔,如果你的采样时间间隔随着你的fs同步变化的话,那么你的峰值就会一直出现在50Hz左右了!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-18 10:35 , Processed in 0.074387 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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