kmkeke 发表于 2008-12-12 19:12

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

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

vican_lee 发表于 2008-12-12 21:38

你的信号是平稳信号吗?

luver 发表于 2008-12-15 14:35

同问!我也有这个问提,就是采样点数不一样,为什么fft后的幅值是不一样的呢?

kmkeke 发表于 2008-12-15 17:29

谢谢!我的信号只是一般的正弦信号,就导致了这样的结果!能将一下或指导一下方向,平稳和非平稳,为什么会导致采样点数不一样,FFT后幅值不同呢?多谢!

kmkeke 发表于 2008-12-15 17:41

还有一个问题,不同的采样率,fft后频率也不一样?比如50Hz的正弦信号,fs=1000时,50Hz处有峰值,fs=500时,25Hz有峰值,fs=2000时,100Hz处有峰值。就是出现峰值处在x轴上位置不变,但是采用不同采样率,x轴刻度在变,所以导致不同采样率,出现峰值的频率点不同。

vican_lee 发表于 2008-12-15 18:07

不同的采样率,相同的点数的fft,会导致频率分辨率不一样,
会出现频谱栏栅效应,和频谱泄漏,会导致峰值出现的位置和幅度不一样.
建议论坛里面搜寻一下频率补偿,以及看看数字信号处理里面的频谱栏栅效应,和频谱泄漏的相关知识

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里面给指个方向就行。多谢啊!

songzy41 发表于 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();
    title(['N=' num2str(N)]);
end

kmkeke 发表于 2008-12-19 19:04

太感谢了!请问该怎么修正呢?希望能指导个方向!多谢!

songzy41 发表于 2008-12-19 19:29

可以用修正法,求出在50处的幅值。

kmkeke 发表于 2008-12-19 20:53

请问大概怎么修正法啊!不好意思!这个没知道怎么弄?查资料好像有用窗函数的?但是不知道从哪里开始。

ChaChing 发表于 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 编辑 ]

songzy41 发表于 2008-12-20 10:17

对,是频谱校正方法。在本论坛上有不少讨论。版主yangzj曾给过一个MATLAB校正的程序,同时zhwang554也用全相位的校正法给出了相应的程序。可在论坛上找一下。

guohugang 发表于 2011-8-9 13:28

困惑ing,求解

ckakaqiang 发表于 2012-3-6 14:49

你的x=0:0.001:1;就决定了你的采样率fs=1000,请问你改变采样率的时候,是不是也改变采样的时间间隔,如果你的采样时间间隔随着你的fs同步变化的话,那么你的峰值就会一直出现在50Hz左右了!!!!!!!!!!!
页: [1] 2
查看完整版本: fft采用不同分析点数为什么幅值会不一样呢?