Principal Component Analysis

 
function [pc, score, latent, tsquare] = PCA(x);
%   PRINCOMP Principal Component Analysis (centered and scaled data).
%   [PC, SCORE, LATENT, TSQUARE] = PRINCOMP(X) takes a data matrix X and
%   returns the principal components in PC, the so-called Z-scores in SCORES,
%   the eigenvalues of the covariance matrix of X in LATENT, and Hotelling's
%   T-squared statistic for each data point in TSQUARE.

[m,n] = size(x);       % 得到矩阵的规模,m行,n列
r = min(m-1,n);       % max possible rank of x
% 该矩阵最大的秩不能超过列数,
% 也不能超过行数减1
avg = mean(x);       % 求每一列的均值,付给一个n维行向量
centerx = (x - avg(ones(m,1),:));
% x的每个元素减去该列的均值,
% 使样本点集合重心与坐标原点重合
[U,latent,pc] = svd(centerx./sqrt(m-1),0);
% “经济型”的奇异值分解
score = centerx*pc;        % 得分矩阵即为原始矩阵乘主成分矩阵

if nargout < 3, return; end
latent = diag(latent).^2;        % 将奇异值矩阵转化为一个向量

if (r<n)
    latent = [latent(1:r); zeros(n-r,1)];
    score(:,r+1:end) = 0;
end

if nargout < 4, return; end
tmp = sqrt(diag(1./latent(1:r)))*score(:,1:r)';
tsquare = sum(tmp.*tmp)';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值