📄 pcabigfn.m
字号:
%function [U,R,E] = pcabigFn(B);%Compute PCA by calculating smaller covariance matrix and reconstructing%eigenvectors of large cov matrix by linear combinations of original data%given by the eigenvecs of the smaller cov matrix. %Data in Cols of B. Third version. %%***** justification%%B = N x P data matrix. N = dim of data (Data in Cols of B, zero mean)% P = #examples% N >> P%%Want eigenvectors ui of BB' (NxN)%Solution:%Find eigenvectors vi of B'B (PxP)%From def of eigenvector: B'Bvi = di vi ---> BB'Bvi = di Bvi%Eigenvecs of BB' are Bvi%-------------------------------%[V,D] = eig (B'B)%Eigenvecs are in cols of V. (Sorted cols)%%U = BV; Cols of U are Bvi (eigenvecs of lg cov mat.) (Gave unit length)%R = B'U; Rows of R are pcarep of each observation.%E = eigenvalues (eigenvals of small and large cov mats are equal)%*****function [U,R,E] = pcabigFn(B);%Read data into columns of B;%B = datamat';[N,P] = size(B);%********subtract meanmb=mean(B');B=B-(ones(P,1)*mb)';%********Find eigenvectors vi of B'B (PxP)[V,D] = eig (1/(P-1)*(B'*B)); %scale factor gives eigvals correct %magnitude for large cov mat %(assuming sample cov) %(assuming sample cov)%********Sort eigenvectorseigvalvec = max(D);[seigvals, index] = sort(eigvalvec); % sort goes low to highVsort = V(:,[fliplr(index)]);%********ReconstructU = B*Vsort; % Cols of U are Bvi. (N-dim Eigvecs)%********Give eigvecs unit length. Improves classification.length = sqrt (sum (U.^2));U = U ./ (ones(N,1) * length);R = B'*U; % Rows of R are pcarep of each image.E = fliplr(seigvals);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -