Principal Component Analysis

来源:互联网 发布:用友软件需要联网吗 编辑:程序博客网 时间:2024/05/17 21:34
 
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% 该矩阵最大的秩不能超过列数,% 也不能超过行数减1avg = 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; endlatent = diag(latent).^2;        % 将奇异值矩阵转化为一个向量if (r<n)    latent = [latent(1:r); zeros(n-r,1)];    score(:,r+1:end) = 0;endif nargout < 4, return; endtmp = sqrt(diag(1./latent(1:r)))*score(:,1:r)';tsquare = sum(tmp.*tmp)';
原创粉丝点击