rabbit555 发表于 2009-7-15 15:24

为何MATLAB用定义求出来的自功率谱不是实数序列?

先求时域实数序列的自相关函数,然后对自相关函数做FFT,得到的功率谱却不是实序列,为何?
MATLAB代码如下:
x=wavread('file.wav');
rx=xcorr(x,x);
Px=fft(rx);
最后通过对Px画图及查看Px中的数据发现,Px是一个复数序列而不是实数序列,理论上讲Px应该是正实数序列才对啊,实在搞不懂,还请知道的朋友指教指教,谢谢!

xray 发表于 2009-7-15 18:55

回复 楼主 rabbit555 的帖子

功率谱是
Px=abs(fft(rx));

VibrationMaster 发表于 2009-7-15 19:06

fft的计算起点是0,而不是中心。如果用时移定理移到中心就变成实数了。

ChaChing 发表于 2009-7-15 22:23

本帖最后由 VibInfo 于 2016-11-8 15:39 编辑

原帖由 VibrationMaster 于 2009-7-15 19:06 发表
fft的计算起点是0,而不是中心。如果用时移定理移到中心就变成实数了。
可否说清楚些!? 谢谢!
可以的话说简单点, 个人水平有限!:@)

[ 本帖最后由 ChaChing 于 2009-7-15 22:26 编辑 ]

VibrationMaster 发表于 2009-7-16 18:19

打公式太复杂了

rabbit555 发表于 2009-7-16 20:51

本帖最后由 VibInfo 于 2016-11-8 15:39 编辑

原帖由 VibrationMaster 于 2009-7-15 19:06 发表
fft的计算起点是0,而不是中心。如果用时移定理移到中心就变成实数了。
多谢!也就是说起点不在中心做出来的就不再是自功率谱了?

kyu16866 发表于 2012-11-21 23:46

VibrationMaster 发表于 2009-7-16 18:19 static/image/common/back.gif
打公式太复杂了

是不是得用shiftfft下?具体应该怎么用matlab修改?
页: [1]
查看完整版本: 为何MATLAB用定义求出来的自功率谱不是实数序列?