Principal Component Analysis in MATLAB

Ich bin Implementierung von PCA mittels Eigenwert-ZERLEGUNG für dünnbesetzte Daten. Ich kenne matlab hat PCA durchgeführt, aber es hilft mir zu verstehen, all die Technik, wenn ich code schreiben.
Ich habe nach der Anleitung von hier, aber ich bin immer unterschiedliche Ergebnisse im Vergleich zur built-in-Funktion princomp.

Könnte jemand schaut Sie an und zeigen Sie mich in die richtige Richtung.

Hier der code:

function [mu, Ev, Val ] = pca(data)

% mu - mean image
% Ev - matrix whose columns are the eigenvectors corresponding to the eigen
% values Val 
% Val - eigenvalues

if nargin ~= 1
 error ('usage: [mu,E,Values] = pca_q1(data)');
end

mu = mean(data)';

nimages = size(data,2);

for i = 1:nimages
 data(:,i) = data(:,i)-mu(i);
end

L = data'*data;
[Ev, Vals]  = eig(L);    
[Ev,Vals] = sort(Ev,Vals);

% computing eigenvector of the real covariance matrix
Ev = data * Ev;

Val = diag(Vals);
Vals = Vals / (nimages - 1);

% normalize Ev to unit length
proper = 0;
for i = 1:nimages
 Ev(:,i) = Ev(:,1)/norm(Ev(:,i));
 if Vals(i) < 0.00001
  Ev(:,i) = zeros(size(Ev,1),1);
 else
  proper = proper+1;
 end;
end;

Ev = Ev(:,1:nimages);
InformationsquelleAutor matcheek | 2010-12-09
Schreibe einen Kommentar