invers from covariance of a matrix*matrix'

3 ビュー (過去 30 日間)
eri
eri 2012 年 1 月 2 日
given a is a matrix, is the matrix of covariance of (a*a') is always singular?
  2 件のコメント
the cyclist
the cyclist 2012 年 1 月 2 日
Can you please clarify? Are you interested in the singularity of cov(a) for arbitrary a, or of cov(b), for b = (a*a')?
eri
eri 2012 年 1 月 3 日
cov(b) for b=a*a'

サインインしてコメントする。

採用された回答

Teja Muppirala
Teja Muppirala 2012 年 1 月 4 日
cov(a) is ALWAYS singular for ANY square matrix a, because you subtract off the column means. This guarantees that you reduces the rank by one (unless it is already singular) before multiplying the matrix with its transpose.
a = rand(5,5); % a is an arbitrary square matrix
rank(a) %<-- is 5
a2 = bsxfun(@minus, a, mean(a));
rank(a2) %<-- is now 4
cova = a2'*a2/4 %<-- (rank 4) x (rank 4) = rank 4
cov(a) %<-- This is the same as "cova"
rank(cova) %<-- verify this is rank 4

その他の回答 (1 件)

the cyclist
the cyclist 2012 年 1 月 2 日
a = [1 0; 0 1]
is an example of a matrix for which (a*a') is not singular.
Did you mean non-singular?
  8 件のコメント
Walter Roberson
Walter Roberson 2012 年 1 月 3 日
Just don't ask me _why_ it is singular. I didn't figure out Why, I just made sure square matrices could not get to those routines.
Walter Roberson
Walter Roberson 2012 年 1 月 3 日
Experimentally, if you have a matrix A which is M by N, then rank(cov(A)) is min(M-1,N), and thus would be singular for a square matrix.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeResampling Techniques についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by