为何MATLAB用定义求出来的自功率谱不是实数序列?
先求时域实数序列的自相关函数,然后对自相关函数做FFT,得到的功率谱却不是实序列,为何?MATLAB代码如下:
x=wavread('file.wav');
rx=xcorr(x,x);
Px=fft(rx);
最后通过对Px画图及查看Px中的数据发现,Px是一个复数序列而不是实数序列,理论上讲Px应该是正实数序列才对啊,实在搞不懂,还请知道的朋友指教指教,谢谢!
回复 楼主 rabbit555 的帖子
功率谱是Px=abs(fft(rx)); fft的计算起点是0,而不是中心。如果用时移定理移到中心就变成实数了。 本帖最后由 VibInfo 于 2016-11-8 15:39 编辑
原帖由 VibrationMaster 于 2009-7-15 19:06 发表
fft的计算起点是0,而不是中心。如果用时移定理移到中心就变成实数了。
可否说清楚些!? 谢谢!
可以的话说简单点, 个人水平有限!:@)
[ 本帖最后由 ChaChing 于 2009-7-15 22:26 编辑 ] 打公式太复杂了 本帖最后由 VibInfo 于 2016-11-8 15:39 编辑
原帖由 VibrationMaster 于 2009-7-15 19:06 发表
fft的计算起点是0,而不是中心。如果用时移定理移到中心就变成实数了。
多谢!也就是说起点不在中心做出来的就不再是自功率谱了? VibrationMaster 发表于 2009-7-16 18:19 static/image/common/back.gif
打公式太复杂了
是不是得用shiftfft下?具体应该怎么用matlab修改?
页:
[1]