有人知道如何在Matlab中对M乘N矩阵进行主成分分析(PCA)以实现标准化吗?

最佳答案

假设每一列都是一个样本(也就是说,每个维度都有n个样本),并且它存储在一个矩阵m中,您首先必须减去列的意思是:

      Amm = bsxfun(@minus,A,mean(A,2));

然后,您想对A进行特征值分解(如果您想将插值作为无偏协方差矩阵,可以使用1/size(Amm,2)*Amm*Amm'作为比例因子),其中:
      [v,d] = eig(1/size(Amm,2)*Amm*Amm');

1/(size(Amm,2)-1)的列将成为PCA向量v的条目将是相应的“方差”。
但是,如果d很大,那么这不是最好的方法,因为存储m不实用您需要计算:
      [u,s,v] = svd(1/sqrt(size(Amm,2))*Amm,'econ');

这次Amm*Amm'包含您的PCA向量u的条目与asd条目相关。
注意:如果sqrt是巨大的,还有另一条路要走,即计算m(注意与上面相比转置的切换)和做一点小把戏,但这是一个较长的解释,所以我不会进入它。

10-08 20:18