如何计算数据使用矩阵的谱密度matlab
问题描述:
我不是在做信号处理。但在我的领域中,我将使用数据矩阵的谱密度。我在非常详细的层面上感到非常困惑。如何计算数据使用矩阵的谱密度matlab
%matrix H is given.
corr=xcorr2(H); %get the correlation
spec=fft2(corr); % Wiener-Khinchin Theorem
在matlab中,xcorr2
会计算这个矩阵的相关函数。滞后将从-N+1
到N-1
。所以如果矩阵H
的尺寸是N by N
,那么尺寸corr
将是2N-1 by 2N-1
。对于离散数据,我应该使用corr
或corr
的一半?
另一个问题是我认为维纳钦钦定理基本上是用于连续函数的。我一直认为Discretized FT
是近似于Continuous FT
,或者你可以说它是一个计算工具Continuous FT
。如果你在功能'fft'中使用matlab编译,你应该把最终结果除以\delta x
。
任何知道这个区域的灵魂都可以与我分享一些matlab代码吗?
答
基本上,通过离散FT近似连续FT与通过有限和近似积分相同。
我们先讨论一维情况,然后讨论二维情况。我们来看看Wiener-Kinchin定理(例如here)。
它指出:
“对于离散时间情况下,具有离散值x [n]的,该函数的功率谱密度是:
其中
是x [n]的自相关函数。“
1)可以已经是总和是从-infty采取+ infty看到S(F)
2)现在考虑了Matlab FFT的计算 - 可以看见(命令“修改FFT”在Matlab中),它被定义为:
X(k) = sum_{n=1}^N x(n)*exp(-j*2*pi*(k-1)*(n-1)/N), 1 <= k <= N.
这是你想要以计算频率f的功率谱密度做什么。
请注意,对于连续函数,S(f)将是一个连续函数。对于离散函数,S(f)将是离散的。
现在我们知道了所有这一切,它可以很容易地扩展到2D情况。的确,fft2的结构与2D情况下Wiener-Kinchin定理的右侧结构相匹配。
虽然,有必要将结果除以NxM,其中N是x中采样点的数量,M是y中采样点的数量。