如何解决这个一般的Matlab矩阵技巧

时间:2011-11-22 01:27:52

标签: matlab matrix transpose

我想了解一下一般的Matlab矩阵技巧?这条线在逻辑上意味着什么?

S=X*X';

如果我将任何通用矩阵转换为自身,S会完成什么? 谢谢

2 个答案:

答案 0 :(得分:4)

如果X是一般NxM矩阵,那么S=X*X'是每个X列的外部产品及其转置的总和。换句话说,写X=[x1,x2,...,xM]S可以写为

S = ∑_i x_i * x_i'

得到的矩阵S是非负定的(即特征值不是负数)。

如果您将X列中的每个元素视为随机变量(总N),并将不同列视为M N维的独立观察随机向量,然后S是行的NxN sample covariance matrix(根据您的约定,不同的常量标准化)。同样,S=X'*X会为您提供列的MxM协方差矩阵。


现在,如果您开始限制一般性并为X分配特殊属性,那么您将开始看到S结构的模式。例如,如果X是正方形,则具有实数并且为orthogonal,然后是S=I,即单位矩阵。如果X为方形,具有复杂条目且为unitary matrix,则S将再次为单位矩阵。

在不知道程序中使用它的确切情况的情况下,我会假设他们正在计算协方差矩阵。

答案 1 :(得分:2)

以下是一个示例,说明这与协方差矩阵的关系(如@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