我想了解一下一般的Matlab矩阵技巧?这条线在逻辑上意味着什么?
S=X*X';
如果我将任何通用矩阵转换为自身,S会完成什么? 谢谢
答案 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