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

PCA

 

Andi____

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2010, 16:07     Titel: PCA
  Antworten mit Zitat      
Hallo,

ich hätte hier eine PCA zur "Rausch/Dimensionsreduzierung" implementiert....

(also am Schluss rekonstruiere ich meinen alten Datensatz mit weniger Hauptkomponenten neu...)

die auch zu funktionieren scheint....

nun hätte ich allerdings noch die Frage, ob man manche Stellen vielleicht noch schöner, kürzer, weniger speicherintensiv/rechenintensiv programmieren könnte...

Viele Grüße

Andreas


Code:


function [ergend] = pcafunc(struktur, dim)

data = struktur;

size(data)

% PCA: Perform PCA using covariance
%
% data  - MxN matrix of input data transposed
%         M trials
%         N dimension


% PC - each Colum is a PC
% V  - Mx1 matrix

N=size(data,1);  % Zeilenzahl

% subtract mean from each of the data dimensions
mn = mean(data,1);

meandata = data - repmat(mn,N,1);

covmat = cov(meandata);
[PC,D] = eig(covmat);

% D diagonalmatrix of eigenvalues

DD=diag(D);

% sort the eigenvalues in decreasing order

[junk,rindices] = sort(DD,'descend');
DD=DD(rindices);
PC=PC(:,rindices);

% dimensions = Zahl der Komponenten

dimensions= dim;

finaleigs = PC(:,1:dimensions);
prefinaldata = finaleigs'*meandata';
% finaldata = prefinaldata'

ergebnis=finaleigs*prefinaldata;

ergend=ergebnis'+repmat(mn,N,1);
 


derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 22.02.2010, 17:41     Titel:
  Antworten mit Zitat      
Hi,

also vom Code her, kann man es wohl kaum noch perfomanter machen. Miss doch die Geschwindigkeit mit tic und toc.

Aber funktioniert das ganze auch wirklich? Ich hab es mal ausprobiert und ich kriege immer die gleiche Dimension raus, die ich auch reingegeben habe.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
Andi___

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2010, 23:03     Titel:
  Antworten mit Zitat      
ja das ist auch so gedacht...

ich verwende es ja zur "Rauschreduzierung"....

am Schluss bilde ich meinen Datensatz wieder auf die alten Basisvektoren wieder ab, so dass ich wieder die gleiche Dimension des Datensatzes bekomme

wenn man die niedrigere Dimension will kann man sich die Transformationen am Schluss genauso wie das Mittelwert draufzählen sparen

Andi
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 24.02.2010, 14:52     Titel:
  Antworten mit Zitat      
Aha ok, war Ich war mir nicht so richtig bewusst das man das zur Rauschreduzierung nutzen kann. Nur mal so interessenhalber, müssen die Daten dazu eine bestimmte Voraussetzung erfüllen also zum Beispiel in irgendeiner Weiße miteinander verknüpft sein? Ansonsten zu deiner ursprünglichen Frage glaube ich nicht das man da noch viel rausholen kann. Wenn du wirklich Zeitprobleme mit dem Datensatz hast könntest du ja mal den Profiler drüber laufen lassen um zu gucken ob du noch ein paar Kleinigkeiten verbessern kannst aber ich glaube nicht, dass man da einen sehr hohen Faktor erzielen kann. Wenn es dann immer noch 10 bis 100 mal schneller laufen sollte könntest du höchsten noch versuchen die Parallel Computing Toolbox zu nutzen oder vielleicht eine inoffiziele Toolbox für CUDA verwenden.

Viele Grüße,

der Oli
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 - 2025 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.