PCA:理解与实现

来源:互联网 发布:摩尔庄园源码 编辑:程序博客网 时间:2024/06/17 00:58

我的“智能”理解 先从PCA说起 。。。


% Copyright 2012
% Mc_PCA,Image Compress
% Authors:  Michael Chen.
% Contact: Michael Chen, Department of CS, ** University
% Email:    sunscone.23@gmail.com   


%% This function is used to image compress
function [OriDataReconstruction,error] = Mc_PCA_2(OriData,p)


OriData = double(OriData);
rowN = size(OriData,1);
colN = size(OriData,2);


%calculate the mean of every column in the OriData matrix
OriDataMean = repmat(mean(OriData,2),1,colN);


%oriData centralization:calculate the different between the per column and it's mean value
CentralizationData = OriData - OriDataMean;
%calculate the cov matrix
CovMatrix = CentralizationData' * CentralizationData;
%eigenValue problem
[eigenVector,eigenValue] = eig(CovMatrix);
%sort the eigenValue Matrix
[eigenValue_sorted,index_sorted] = sort(sum(eigenValue),'descend');
%choose the first p eigenVector to foundment a Feature Matrix
FeatureMatirxOfCentralizationData = zeros(size(eigenValue,1),p);
for i=1:p
    FeatureMatirxOfCentralizationData(:,i) = eigenVector(:,index_sorted(i));
end


%Projection per featureVector on the dif data space
%The DimReductionOriData is the Feature face of Ori-face
DimReductionOriData = FeatureMatirxOfCentralizationData' * CentralizationData';% Y = W'*X,X here is the centralized oriData


CentralizationDataReconstruction = (FeatureMatirxOfCentralizationData * DimReductionOriData);%get difData


OriDataReconstruction = CentralizationDataReconstruction' + OriDataMean;


%OriData;
%FeatureMatirx;
%FinalRecM;
error = norm(OriData-ReconstructionOriData,2);