只是我试图理解的一般 Matlab 矩阵技巧?这条线在逻辑上的真正含义是什么?
S=X*X';
如果我将任何通用矩阵与自身转置,S 会完成什么?谢谢
如果X
是一个通用NxM
矩阵,则S=X*X'
是 的每一列的外积X
与其转置的总和。换句话说,写作X=[x1,x2,...,xM]
,S
可以写成
S = ∑_i x_i * x_i'
结果矩阵S
是非负定的(即,特征值不是负数)。
如果您将 的列中的每个元素X
视为随机变量(total 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