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

4
我正在尝试使用Matlab研究样本协方差矩阵的特征值统计方差。具体来说,每个样本协方差矩阵是从有限数量的矢量快照(受随机白高斯噪声影响)构建而成的。然后,在大量试验中,生成大量这样的矩阵并进行特征分解,以估计特征值的理论统计量。
根据多个来源(例如,[1,公式3]和[2,公式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] Friedlander, B.; Weiss, A.J.; , "样本协方差矩阵特征向量的二阶统计量," 信号处理,IEEE事务处理,第46卷,第11期,1998年11月,第3136-3139页 [2] Kaveh, M.; Barabell, A.; , "MUSIC算法和最小范数算法在解决噪声中的平面波方面的统计性能," 声学,语音和信号处理,IEEE事务处理,第34卷,第2期,1986年4月,第331-341页


你实际上在哪里计算估计的特征值的方差? b = lambda - lambda_th (:, ones (1,Ntrials)); Rbb = b * b'/Ntrials 不是这样做的,它计算了估计值与理论值之间差异的方差-协方差矩阵。 - A. Donda
1个回答

0

根据您第一篇参考文献的摘要:

“在统计学文献中,已经推导出了特征向量二阶统计量的公式,并被广泛使用。我们指出,在数值模拟中观察到的统计数据与理论公式存在差异,这是由于特征向量定义的不唯一性所致。我们提出了两种解决这个问题的方法。第一种方法涉及修改理论公式以匹配计算结果。第二种方法涉及对计算进行简单修改,使其与现有公式相匹配。”

听起来好像存在差异,而且这两种“解决方案”听起来都是hack,但是如果没有实际论文的访问权限,就很难提供帮助。


这指的是特征向量(它们有点棘手,因为它们不唯一)。然而,我只关注特征值,对于它们没有任何差异。我将尝试编辑原帖,使引用成为论文链接。 - Harry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接