2011-10-20 14 views

答えて

4

サンプルである(つまり、あなたがnサンプル寸法mのそれぞれを持っている)、それはマトリックスAに保存されている最初のカラムから減算しなければならないことを意味:その後

 Amm = bsxfun(@minus,A,mean(A,2)); 

あなた(あなたは公平な共分散行列としてinterpetationをしたい場合は、スケールファクタとして1/(size(Amm,2)-1)を使用することができます)1/size(Amm,2)*Amm*Amm'に固有値分解をしたいと:

 [v,d] = eig(1/size(Amm,2)*Amm*Amm'); 

とCo vの欄があなたのPCAベクターになります。 dのエントリは、対応する「差異」になります。

ただし、mが巨大な場合は、Amm*Amm'を保存することは実際的でないため、これは最善の方法ではありません。

 [u,s,v] = svd(1/sqrt(size(Amm,2))*Amm,'econ'); 

uがあなたのPCAベクトルが含まれているこの時間は:あなたが代わりに計算したいです。 sのエントリはdのエントリにsqrtで関連付けられています。

注:mが巨大な場合、つまりeig(1/size(Amm,2)*Amm '*Amm);(上記と比較して転置が切り替わることに気付く)が少しトリッキーになる場合は別の方法がありますが、それ以上の説明ではわかりません。

+0

華麗なブレークダウンと説明+1! –

関連する問題