如何使用matlab计算数据矩阵的谱密度

时间:2015-10-05 14:25:14

标签: matlab matrix

我没有做信号处理。但在我的区域,我将使用数据矩阵的谱密度。我非常详细地对此感到困惑。

%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的一半?

另一个问题是我认为Wiener-Khinchin定理基本上是连续函数。我一直认为Discretized FTContinuous FT的近似值,或者您可以说它是计算Continuous FT的工具。如果您使用matlab build in function' fft',则应将最终结果除以\delta x

任何善于了解此区域的灵魂都可以与我分享一些matlab代码?

1 个答案:

答案 0 :(得分:1)

基本上,通过离散FT逼近连续FT与通过有限和近似积分相同。

我们将首先讨论1D案例,然后我们将讨论2D案例。

让我们看看Wiener-Kinchin定理(例如here)。

它声明:

“对于离散时间情况,具有离散值x [n]的函数的功率谱密度为:

,其中

x [n]的自相关函数。“

1)你可以看到,在计算 S(f)

时,总和是从-infty到+ infty

2)现在考虑Matlab fft - 你可以看到(在Matlab中命令'edit fft'),它被定义为:

 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案例。实际上,对于2D情况,fft2的结构与Wiener-Kinchin定理右侧的结构相匹配。

但是,有必要将结果除以NxM,其中N是x中采样点的数量,M是y中采样点的数量。