invers from covariance of a matrix*matrix'
    7 views (last 30 days)
  
       Show older comments
    
given a is a matrix, is the matrix of covariance of (a*a') is always singular?
2 Comments
  the cyclist
      
      
 on 2 Jan 2012
				Can you please clarify? Are you interested in the singularity of cov(a) for arbitrary a, or of cov(b), for b = (a*a')?
Accepted Answer
  Teja Muppirala
    
 on 4 Jan 2012
        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
0 Comments
More Answers (1)
  the cyclist
      
      
 on 2 Jan 2012
        a = [1 0; 0 1]
is an example of a matrix for which (a*a') is not singular.
Did you mean non-singular?
8 Comments
  Walter Roberson
      
      
 on 3 Jan 2012
				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
      
      
 on 3 Jan 2012
				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.
See Also
Categories
				Find more on Linear Algebra in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



