matlab - 在 Matlab 中估计样本协方差矩阵特征值的方差

标签 matlab statistics covariance variance eigenvalue

我正在尝试使用 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/

相关文章:

binary - 在 Julia 中进行频率计数的最佳方法

.net - 编译器错误 : Cannot convert from 'List<string>' to 'IList<object>'

c# - 似乎无法让通用协方差/逆变工作

command-line - 从命令行获取一组数字的平均值的最快方法是什么?

java - 检测集合中不同元素的高效算法

r - 在 R 中计算 T2 统计量

matlab - 如何统计测试3D模型的准确性?

python - MAP@k计算

matlab - 在 MATLAB 中索引矩阵的所有对角线

c# - 错误 : 'Subscript indices must either be real positive integers or logicals' when using Matlab . NET 生成器