clc; clear all; close all;I=imread('liftingbody.png');k=1;figure('Units', 'Normalized', 'Position', [0 0 1 1]);for p=1:5:20 [Ipca,ratio,contribution]=pcaimage(I,p,[24 24]); subplot(2,2,k); imshow(Ipca) title(['主成分个数=',num2str(p),... ',压缩比=',num2str(ratio),... ',贡献率=',num2str(contribution)],'fontsize',14); k=k+1;end
function [coeff,score,rate]=pcasample(X,p)[V,D]=eig(X'*X);for i=1:size(V,2) [~,idx]=max(abs(V(:,i))); V(:,i)=V(:,i)*sign(V(idx,i));end[lambda,locs]=sort(diag(D),'descend');V=V(:,locs);coeff=V(:,1:p);score=X*V(:,1:p);rate=sum(lambda(1:p))/sum(lambda);
function [Ipca,ratio,contribution