我没有做信号处理。但在我的区域,我将使用数据矩阵的谱密度。我非常详细地对此感到困惑。
%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
的一半?
另一个问题是我认为Wiener-Khinchin定理基本上是连续函数。我一直认为Discretized FT
是Continuous FT
的近似值,或者您可以说它是计算Continuous FT
的工具。如果您使用matlab build in function' fft',则应将最终结果除以\delta x
。
任何善于了解此区域的灵魂都可以与我分享一些matlab代码?
答案 0 :(得分:1)
基本上,通过离散FT逼近连续FT与通过有限和近似积分相同。
我们将首先讨论1D案例,然后我们将讨论2D案例。
让我们看看Wiener-Kinchin定理(例如here)。
它声明:
“对于离散时间情况,具有离散值x [n]的函数的功率谱密度为:
,其中
x [n]的自相关函数。“
1)你可以看到,在计算 S(f)
时,总和是从-infty到+ infty2)现在考虑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中采样点的数量。