4

Matlab を使用してサンプル共分散行列の固有値の統計的分散を調査しようとしています。明確にするために、各サンプル共分散行列は有限数のベクトル スナップショット (ランダムなホワイト ガウス ノイズに悩まされている) から構築されます。次に、多数の試行にわたって、多数のそのような行列が生成され、固有値の理論的統計を推定するために固有分解されます。

いくつかの情報源 ([1, Eq.3] および [2, Eq.11] などを参照) によると、各サンプルの固有値の分散は、理論上の固有値の 2 乗を使用したベクトル スナップショットの数で割った値に等しいはずです。各共分散行列について。ただし、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。ワイス、AJ。、「標本共分散行列の固有ベクトルの二次統計について」、Signal Processing、IEEE Transactions on 、vol.46、no.11、pp.3136-3139、1998 年 11 月 [2] Kaveh, M.; Barabell、A.; 、「雑音中の平面波を解決する際の MUSIC および最小ノルム アルゴリズムの統計的性能」、Acoustics, Speech and Signal Processing、IEEE Transactions on 、vol.34、no.2、pp.331-341、1986 年 4 月

4

1 に答える 1

0

あなたの最初の参照からの要約によると:

「固有ベクトルの二次統計の式は、統計文献で導出されており、広く使用されています。固有ベクトルの定義が一意でないため、数値シミュレーションで観察された統計と理論式との間に矛盾があることを指摘します。この不一致を解決する 2 つの方法を提示します。1 つ目は、計算結果に一致するように理論​​式を変更することです。2 つ目は、既存の式と一致するように計算を単純に変更することです。」

不一致があるように聞こえますし、2 つの「解決策」はハックのようにも聞こえますが、実際の紙にアクセスできないと、どうしようもありません。

于 2012-11-03T20:56:28.893 に答える