私が理解しようとしている一般的なMatlab行列のトリックですか? この行は論理的に何を意味するのでしょうか?
S=X*X';
一般的な行列を自分自身に対して転置すると、S は何を達成しますか? ありがとう
X
が一般的なNxM
行列の場合、S=X*X'
はの各列の外積X
とその転置の合計です。言い換えれば、書くことはX=[x1,x2,...,xM]
、次のように書くS
ことができます
S = ∑_i x_i * x_i'
結果の行列S
は非負の確定です(つまり、固有値は負ではありません)。
の列の各要素をX
確率変数(合計N
)と見なし、異なる列を次元確率ベクトルM
の独立した観測値と見なす場合、のサンプル共分散行列(規則に応じて一定の正規化によって異なります)は次のようになります。行。同様に、列の共分散行列を与えます。N
S
NxN
S=X'*X
MxM
ここで、一般性を制限し、に特別なプロパティを割り当てるとX
、の構造のパターンが出現し始めますS
。たとえば、X
が正方形で、実数のエントリがあり、直交している場合S=I
、単位行列です。X
が正方形で、複素数のエントリがあり、ユニタリ行列である場合、S
再び単位行列になります。
これがプログラムで使用された正確な状況を知らなくても、共分散行列を計算していると思います。
これが共分散行列にどのように関連しているかを示す例を次に示します(@yodaが説明したように):
X = randn(5,3); %# 3 column-vectors each of dimension=5
X0 = bsxfun(@minus, X, mean(X,2)); %# zero-centered
C = (X0*X0') ./ (size(X0,2)-1) %'# sample covariance matrix
CC = cov(X') %'# should return the same result