2015-10-05 207 views
1

我不是在做信号处理。但在我的领域中,我将使用数据矩阵的谱密度。我在非常详细的层面上感到非常困惑。如何计算数据使用矩阵的谱密度matlab

%matrix H is given. 
corr=xcorr2(H); %get the correlation 
spec=fft2(corr); % Wiener-Khinchin Theorem 

在matlab中,xcorr2会计算这个矩阵的相关函数。滞后将从-N+1N-1。所以如果矩阵H的尺寸是N by N,那么尺寸corr将是2N-1 by 2N-1。对于离散数据,我应该使用corrcorr的一半?

另一个问题是我认为维纳钦钦定理基本上是用于连续函数的。我一直认为Discretized FT是近似于Continuous FT,或者你可以说它是一个计算工具Continuous FT。如果你在功能'fft'中使用matlab编译,你应该把最终结果除以\delta x

任何知道这个区域的灵魂都可以与我分享一些matlab代码吗?

回答

1

基本上,通过离散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中采样点的数量。