Verfasst am: 30.05.2011, 17:48
Titel: Vektoren unterschiedlicher Länge auf gleiche Länge bringen
Hallo liebe Matlab-Experten ,
ich habe 500 Vektoren unterschiedlicher Länge, die in insgesamt 500-mat-Dateien gespeichert sind. Die Vektoren besitzen eine Länge zwischen 102 und 266 Elementen. Ziel ist es diese 500 Vektoren in eine Matrix zu schreiben und dann eine Clusteranalyse durchzuführen. Dazu müssen natürlich alle Vektoren die gleiche Länge haben. Wie kann ich diese Vektoren auf eine gemeinsame Länge bringen? Es ist leider nicht möglich einfach die ersten 102 Werte zu nehmen oder die bis 266 fehlenden Elemente mit Nullen aufzufüllen. Für die Clusteranalyse ist der Verlauf der Signale entscheidend. Deswegen muss ich die Signale strecken oder stauchen ohne den charakteristischen Verlauf zu verfälschen.
Hat jemand eine Idee, wie sowas gehen kann?
Über Hilfe jeglicher Art würde ich mich sehr freuen.
Vielen Dank.
- In einer Cell speichern, dann können die Vektoren auch unterschiedliche Längen haben
- Mit NaNs auffüllen, mit Nullen auffüllen
- Auf die gleiche Skala (je nach dem was du hast) skalieren, z.B. mit interp1()
Danke für deine Antwort. Das Problem ist nur, dass ich ja im Anschluss daran eine Clusteranalyse durchführen möchte. Dazu möchte ich den 'kmeans'-Algorithmus verwenden. Und für den benötigt man eine Matrix, d.h. das mit der Cell funktioniert schon mal nicht. Mit NaN auffüllen funktioniert aus dem selben Grund auch nicht. Die Nullen verfälschen ja den Verlauf meines Signals, dann würde der Algorithmus zwei ähnliche Funktionen nicht einem Cluster zuordnen. Im folgenden mal ein kurzen einfaches Beispiel, wie meine 2 unterschiedlich langen Vektoren aussehen könnten:
Diese Vektoren haben an sich den gleichen Verlauf, nur ist b etwas "gestaucht". Ich will nun beide Vektoren auf eine Länge bringen, ohne den Verlauf zu verfälschen. Geht das mit interp1()? Kannst du mir mal bitte auf die Sprünge helfen, wie ich das schreiben müsste?
Möchte auf den Vektor b auf die Länge von Vektor a kürzen.
Zur Erklärung:
Vektor a ist die Dehnung
Vektor b ist die Spannung
Soll ein Spannungs Dehnungsdiagramm plotten das bis zu Dehnungen bis 2 geht.
Also Vektor a ist schon auf die richtige länge gekürzt aber Vektor b muss noch gekürzt werden. Am besten abhängig von Vektor a also nicht auf 10 Stellen sonder auf:
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
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.