声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 884|回复: 1

[FFT] 关于功率谱估计的一个MATLAB问题

[复制链接]
发表于 2014-10-1 23:11 | 显示全部楼层 |阅读模式

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

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

x
最近在研究分段平均周期图法,我用MATLAB随机生成1000组只含有-1和1的数组,每组都有256个bit,每个bit的sample rate是4。
这1000组的数据相当于是从一个大的数据中截取出来的。
然后我用
y=fft(x,FFT_Length);
对每一组一共256*4个samples进行傅立叶变换   N = 256*4
pow=pow+power(abs(y),2);
然后化成功率,把1000组的功率都相加,最后得到一个总的pow
然后我用pow/1000/N 得到每个点的平均功率。


问题来了,当我把pow这个矩阵里面的值全部相加的时候,竟然不是1,因为时域的平均功率和频域的平均功率应该是相等的,时域里肯定是1,但是频域不是1。我开始找错,发现网上说要把fft以后的值*2/N得出真实的值,但是这样做还是错的,最后发现是在功率之后/N才能得到1,也就是说
pow=pow+power(abs(y),2)/N;
我不知道为啥,是MATLAB本身fft的缺陷吗?求大神解惑!
回复
分享到:

使用道具 举报

发表于 2014-10-2 21:16 | 显示全部楼层
本帖最后由 hcharlie 于 2014-10-3 15:54 编辑

MATLAB在FFT计算以后,频谱(数学谱)要增加N倍,平方会增加N^2倍,按你的计算,总功率/N^2等于1是正确的,我用别的方法计算结果也是这样.
所以你的计算应该得这个结果.
书上讲的FFT以后谱要除以N/2是指物理谱,是数学谱的两倍,不要混淆.
从物理意义讲,PSD=数学谱平方/DF,DF为频率分辨率;
求PSD面积,PSD*DF积分求和,(看得出DF一乘一除消掉)
求平方根得到Grms=1g.
OK !!!



您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-17 18:43 , Processed in 0.053421 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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