|
|
|
PCA, Dimensionsreduktion, Spalten löschen, schleife |
|
| tky |

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 05.07.17
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.07.2017, 13:10
Titel: PCA, Dimensionsreduktion, Spalten löschen, schleife
|
 |
hallo
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 zumal Matlab mit schleifen nicht so effizient arbeitet.
Danke im Voraus
|
|
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.07.2017, 15:14
Titel: Re: PCA, Dimensionsreduktion, Spalten löschen, schleife
|
 |
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:
Das Beispiel hat jetzt nichts mit PCS zu tun - wie gesagt: ein konkreter Vorschlag ist noch schwierig.
Gruß, Jan
|
|
|
|
| tky |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 05.07.17
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.07.2017, 18:26
Titel:
|
 |
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
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.
|
|
|
|
| denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 21.07.2017, 12:18
Titel:
|
 |
|
Die Diskussion setzt sich hier weiter fort:
|
|
|
|
Gesperrt: 21.07.2017, 12:19 Uhr von denny |
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|