我正在尝试使用 Matlab 研究样本协方差矩阵的特征值的统计方差。澄清一下,每个样本协方差矩阵都是从有限数量的矢量快照(受随机高斯白噪声影响)构建的。然后,通过大量的试验,生成大量此类矩阵并对其进行特征分解,以估计特征值的理论统计量。
根据多个来源(例如,参见 [1, Eq.3] 和 [2, Eq.11]),每个样本特征值的方差应该等于那个理论 特征值平方除以用于每个协方差矩阵的向量快照数。然而,我从 Matlab 得到的结果并不接近。
这是我代码的问题吗?用Matlab? (我在处理类似问题时从未遇到过这样的麻烦)。
这是一个非常简单的例子:
% Data vector length
Lvec = 5;
% Number of snapshots per sample covariance matrix
N = 200;
% Number of simulation trials
Ntrials = 10000;
% Noise variance
sigma2 = 10;
% Theoretical covariance matrix
Rnn_th = sigma2*eye(Lvec);
% Theoretical eigenvalues (should all be sigma2)
lambda_th = sort(eig(Rnn_th),'descend');
lambda = zeros(Lvec,Ntrials);
for trial = 1:Ntrials
% Generate new (complex) white Gaussian noise data
n = sqrt(sigma2/2)*(randn(Lvec,N) + 1j*randn(Lvec,N));
% Sample covariance matrix
Rnn = n*n'/N;
% Save sample eigenvalues
lambda(:,trial) = sort(eig(Rnn),'descend');
end
% Estimated eigenvalue covariance matrix
b = lambda - lambda_th(:,ones(1,Ntrials));
Rbb = b*b'/Ntrials
% Predicted (approximate) theoretical result
Rbb_th_approx = diag(lambda_th.^2/N)
引用资料:
[1] 弗里德兰德,B.;韦斯,A.J.; , "On the second-order statistics of the eigenvectors of sample covariance matrices ,"信号处理, IEEE Transactions on , vol.46, no.11, pp.3136-3139, Nov 1998 [2] 卡维,M.;巴拉贝尔,A.; ,“The statistical performance of the MUSIC and the minimum-norm algorithms in resolving plane waves in noise ,”声学、语音和信号处理,IEEE Transactions on ,第 34 卷,第 2 期,第 331-341 页,1986 年 4 月
最佳答案
根据您的第一个引用文献的摘要:
“特征向量的二阶统计公式已在统计文献中推导出来并被广泛使用。我们指出,由于定义的非唯一性,数值模拟中观察到的统计数据与理论公式之间存在差异的特征向量。我们提出了两种方法来解决这种差异。第一种涉及修改理论公式以匹配计算结果。第二种涉及对计算进行简单修改以使其与现有公式匹配。”
听起来似乎存在差异,而且这两个“解决方案”听起来也像是 hack,但在没有实际论文的情况下,很难提供帮助。
关于matlab - 在 Matlab 中估计样本协方差矩阵特征值的方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13211993/