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 Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

PCA, Dimensionsreduktion, Spalten löschen, schleife

 

tky
Forum-Anfänger

Forum-Anfänger


Beiträge: 28
Anmeldedatum: 05.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2017, 13:10     Titel: PCA, Dimensionsreduktion, Spalten löschen, schleife
  Antworten mit Zitat      
hallo Very Happy

ich habe erst relativ wenig mit matlab gearbeitet und bin grade dabei eine pca zu schreiben. nun muss ich in meinem datensatz korrelationen finden. Dazu wollte ich immer eine spalte bzw eine Dimension meiner Matrix nach und nach rausnehmen und mir dann die Eigenwerte anschauen.

Am besten geht das natürlich über eine Schleife. Hat mir vielleicht jmd einen Ansatz wie ich über eine Schleife eine Spalte "lösche"?? Ich tu mich da immer ein wenig schwer Crying or Very sad zumal Matlab mit schleifen nicht so effizient arbeitet.

Danke im Voraus
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.07.2017, 15:14     Titel: Re: PCA, Dimensionsreduktion, Spalten löschen, schleife
  Antworten mit Zitat      
Hallo tky,

Es ist ein altes Gerücht, dass Matlab mit Schleifen ineffizient arbeitet. Wenn eine Schleife ordentlich geschrieben ist, sorgt seit Matlab 6.5 (aus dem Jahr 2002!) die JIT-Acceleration für ein ordentliches Tempo. Leider halten sich alte Meinungen aber trotzdem noch.

Die Frage ist ziemlich allgemein formuliert. Es ist kaum möglich hier konkreten Code zu empfehlen.
Das iterative Verkleinern von Arrays ist genauso ineffizient wie das Vergrößern. Deshalb ist es viel besser, einen Logical-Index-Vektor zu erstellen und die Original-Matrix erst am Schluss zu ändern:
Code:
X = rand(10, 10);
Index = true(1, 10);
for k = 1:10
  if X(k, 2) < rand
    Index(k) = false;
  end
end
X = X(Index, :);

Das Beispiel hat jetzt nichts mit PCS zu tun - wie gesagt: ein konkreter Vorschlag ist noch schwierig.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
tky
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 28
Anmeldedatum: 05.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2017, 18:26     Titel:
  Antworten mit Zitat      
ok. ich versuch es mal anders zu formulieren. ich hab eine Matrix mit z.b. 6 Spalten.
Jetzt wollte ich zunächst die erste Spalte entfernen und das Ergebnis abspeichern.
Danach möchte ich aber von der gleichen Matrix mit 6 Spalten die 2. entfernen...usw. Am ende hab ich dann 6 Matrizen mit jeweils 5 Spalten. Ich habe leider bisher nichts finden können wie ich da am geschicktesten vorgehe Confused

Bei meinem Testdatensatz den ich bearbeite hab ich Später eine 20 Dimensionale Matrix. Jede Spalte einmal von Hand zu entfernen ist hier ganz schön mühsam.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 21.07.2017, 12:18     Titel:
  Antworten mit Zitat      
Die Diskussion setzt sich hier weiter fort:
Private Nachricht senden Benutzer-Profile anzeigen
Gesperrt: 21.07.2017, 12:19 Uhr von denny
 
Neues Thema eröffnen Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.



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.