声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 10874|回复: 21

[其他相关] FFT变换时,为什么不同的采样点数会导致不同的振幅?

[复制链接]
发表于 2008-4-25 14:26 | 显示全部楼层 |阅读模式

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

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

x
对一组离散数据进行FFT变换,采样频率一定(满足采样定理),当采样点数不同时,得到的幅频曲线中的幅值是不同的,这是为什么?如何理解呢?如下例:
j将由两个频率为60HZ和150HZ的时域正玄叠加信号进行FFT变换。

fs=1000;                           %采样频率
N=500;                             %采样点数
t=(0:N-1)/fs;
f1=60;
f2=150;
s1=sin(2*pi*f1*t)+sin(2*pi*f2*t);

x=s1;
subplot(2,1,1);
plot(t,x);
y=fft(x);
z=abs(y);
f=(0:N/2-1)*fs/N;
subplot(2,1,2);
plot(f(1:N/2),z(1:N/2));

得到的幅频图为
1.jpg
若程序中采样点数N=1000;则幅频图为:
2.jpg
对于不同的采样点数N,为什么振幅不一样了?请赐教

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2008-4-25 14:36 | 显示全部楼层
当FFT结果表示频谱时,要除以N/2。
使用任何别人的程序,哪怕是最经典的软件,也要经过验证了才能用。

[ 本帖最后由 hcharlie 于 2008-4-25 14:38 编辑 ]
发表于 2008-4-25 15:14 | 显示全部楼层
fft得到的并不是实际幅值,只是一个相对值
发表于 2008-5-25 20:09 | 显示全部楼层
这个问题非常的好!!!,这就是能量泄漏
这就是我们常说的能量泄漏,如果用于 fft 分析的数据段没有是所要分析频率的整数倍,那么就会产生能量泄漏,对这种信号请加平顶窗,加窗之后会有改善。

我曾今做过一个试验,分别对一个5.5个周期的正弦函数以及一个5个整周期的正弦函数进行福利叶变换,会发现5.5倍整周期做出的幅值要比整周期函数做出的幅值要小得多,这就是能量泄漏。
发表于 2008-5-25 21:07 | 显示全部楼层
这个问题其实2楼和3楼的解释是正确的,当FFT结果表示频谱时要除以2/N才能得到正确的幅值(单边谱)。
程序只要修改一点就可以了z=abs(y)*2/N;
当N=500时候得到的图形如下:
未命名.JPG
当N=1000时得到的图形如下:
未命名.JPG
可以看出频域的图形基本相同,由于这个例子里的信号频率60和150是频率分辨率(fs/N)的整数倍所以是整数采样。因此我认为不是能量的泄漏。

[ 本帖最后由 gh688 于 2008-5-25 21:25 编辑 ]

评分

1

查看全部评分

发表于 2008-6-1 18:30 | 显示全部楼层
请问为什么需要除个N/2,还有就是直流分量除的是N??
发表于 2008-6-1 18:46 | 显示全部楼层

回复 6楼 的帖子

请问为什么需要除个N/2,

http://forum.vibunion.com/forum/ ... 3&highlight=FFT
还有就是直流分量除的是N??

这个有问题吗?/N是为了得到正确的幅值,不除N也可以。
发表于 2008-6-1 21:05 | 显示全部楼层

回复 7楼 的帖子

请问为什么要除呢,能不能从原理上说一下呢?fft不就是变换成幅频函数吗?如果除的话有没有前提条件呢?谢谢
发表于 2008-6-1 21:37 | 显示全部楼层

回复 8楼 的帖子

发表于 2008-6-2 06:30 | 显示全部楼层

程序是人编的,matlab的作者就是这样编的。
FFT以后除N变成数学谱,再IFFT不除N直接还原。
FFT以后除以N/2得物理谱。
你可以编一套软件,在软件里除好了N或N/2也可。
富氏变换原始公式中是要除2PI的,或许就是除N的原理吧,只不过软件中没有除要你自己去做而已。
抄一段书,大家自己体会吧。

[ 本帖最后由 hcharlie 于 2008-6-2 07:20 编辑 ]
富氏变换.JPG

评分

1

查看全部评分

发表于 2008-6-2 10:59 | 显示全部楼层
温故而知新:lol

对于FFT变换,又有新的认识了!
发表于 2008-6-2 11:32 | 显示全部楼层
谢谢各位的热情指教,受益匪浅啊!
发表于 2008-6-28 16:30 | 显示全部楼层

回复 5楼 的帖子

我怎么觉得5楼的解释和图对应不起来,明显两个图都是N=1000的,看时域图就知道!这是笔误?
还有,在对信号进行FFT时,matlab帮助上说:
1  Calculate the magnitude of the FFT of a sequence. m = abs(y);                    % Magnitude
2   A common use of Fourier transforms is to find the frequency components of a signal buried in a noisy time domain signal.  
The power spectrum, a measurement of the power at various frequencies, is
Pyy = Y.* conj(Y) / 512;
我想知道,在abs()和conjunction()两函数有什么区别?到底哪个方法是频谱分析呢?
发表于 2008-6-30 12:29 | 显示全部楼层
真巧, 前几天公司里小伙子刚问过类似问题
今天逛论坛即看到此主题
我会介绍小伙子看看学习
发表于 2008-7-4 20:44 | 显示全部楼层

回复 13楼 的帖子

abs ( ) 是求绝对值
conj  ( )   是求共轭复数  与原序列乘积后得到功率值
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-15 21:07 , Processed in 0.085324 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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