WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

mal ein kleines Beispiel für eine PCA

 

tranquillity
Forum-Newbie

Forum-Newbie



Beiträge: 9
Anmeldedatum: 18.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2008, 09:33     Titel: mal ein kleines Beispiel für eine PCA
  Antworten mit Zitat      
Hallo Signalverarbeiter,

vielleicht brauch ja jemand mal kurz eine PCA. Was ja nicht so selten ist. Da ich gerade eine übrig hatte, stelle ich sie jetzt hier mal hin. Hoffe sie ist für irgendjemand nützlich. Hab auch versucht es so zu kommentieren, dass man versteht, was man bei einer PCA überhaupt für Schritte machen muss.

Code:

% module for computing principe components of a Datamatrix
% input: matrix if you, for example have a matrix of sensors,
% with several timesteps fill in the matrix with
% sensors = rows, timesteps = columns

% output: adjMatrix is the transformed matrix,
% evm is the sorted eigenvector-matrix

function [adjMatrix,evm] = pca(matrix)  

matrixSize = size(matrix);    % get the size of the input matrix

% compute the adjusted matrix where the mean
% of each column is subtracted from the values of each column

sumVector = sum(matrix);
adjustMatrix = [];

for j=1:matrixSize(2)        %columns
    for i= 1:matrixSize(1)   %rows

        % whitening the data
        adjustMatrix(i,j) = matrix(i,j)-(sumVector(j)/matrixSize(1));  


    end
end

% now compute the covariancematrix, the eigenvalues and eigenvectors

covMatrix = cov(adjustMatrix);
[eigenVec,eigenVal] = eig(covMatrix);
eigenVal = diag(eigenVal);

% order the eigenvectors in descending order in respect to their
% eigenvalues

[sortEV,sortEVInd] = sort(eigenVal,'descend');  
% sort eigenvalues and store the original index

sizeEVI = size(sortEVInd);            
% get the size of the index vector for the control variable

% now sort the columns of the eigenvectormatrix
% by the index of the sorted eigenvalues

for i=1:sizeEVI(1)
    sortEVMatrix(:,i) = eigenVec(:,sortEVInd(i));
end

% finally derive the new dataset by multiplying the sorted matrix of
% eigenvectors with the adjusted matrix from the beginning optionaly you
% can set all eigenvectors you do not want to have a look at to zero, then
% you only will derive the signalparts you want to anaylze

evm = sortEVMatrix;  % give back the sorted matrix of eigenvectors
adjMatrix = adjustMatrix;  %give back the adjusted Matrix

 


Gruß
Tranquillity
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.