|
|
Inhalte einer Matrix sortieren |
|
mkalz |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 07.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.05.2009, 22:37
Titel: Inhalte einer Matrix sortieren
|
 |
Hallo Matlab-Experten,
ich habe eine Frage zur Sortierung von Inhalten einer Matrix:
Ich habe eine Matrix in der in den ungeraden Zeilen jeweils Werte eines Index sind und in den geraden Zeilen jeweils Werte zwischen 0 und 1.
Hier ein Beispiel für die ersten beiden Zeilen:
657 483 23 1 345 41 89
0.67 0.65 0.63 0.59 0.45 0.32 0.18
Dies geht nun einige hundert Zeilen so weiter.
Mein Ziel ist es nun, die Sortierung der Zeilen so zu ändern, dass diese nicht nach den absteigenden Werten sortiert sind, sondern aufsteigend nach den Indexnummern in den ungeraden Zeilen. Jede gerade Zeile wäre dann nach dem aufsteigenden Index in der vorherigen ungeraden Zeile sortiert.
Das obigen Beispiel wäre dann so sortiert:
1 23 41 89 483 657
0.59 0.63 0.32 0.18 0.65 0.67
Kann mir jemand einen Tipp geben, wie ich das am einfachsten umsetzen kann?
Vielen Dank
|
|
|
|
|
Dagnabit |

Forum-Century
|
 |
Beiträge: 244
|
 |
|
 |
Anmeldedatum: 23.04.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.05.2009, 08:45
Titel:
|
 |
Servus mkalz
kann es sein, dass Du Zeilen und Spalten verwechselst. Hat Deine Matrix nun die Dimension [2 x n] oder [n x 2].
Sei´s wie´s sei. Es gibt eine Sortierfunktion....
für den Fall [ 2 x n]:
für den Fall [ n x 2]:
lg
Martin
|
|
|
mkalz |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 07.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.05.2009, 13:19
Titel:
|
 |
Hallo Martin,
vielen Dank erst einmal für Deine rasche Antwort.
Dagnabit hat Folgendes geschrieben: |
Servus mkalz
kann es sein, dass Du Zeilen und Spalten verwechselst. Hat Deine Matrix nun die Dimension [2 x n] oder [n x 2].
|
Ich habe mich etwas kompliziert ausgedrückt. Ich habe tatsächlich eine Matrix in der Form [306 x 2246] und in den ungeraden Zeilen sind jeweils Indexnummern und in den geraden Zeilen Werte zwischen 0 und 1. Im Moment sind die geraden Zeilen von den höchsten Werten bis zu den niedrigsten sortiert und die korresponierenden Indexwerte sind nicht chronologisch. Mein Ziel ist es nun, diese Matrix so zu sortieren, dass die Werte in den geraden Zeilen nach den Indexnummern 1 - 2246 sortiert sind.
Deine erste Lösung funktioniert jedenfalls schonmal für die Zeilen 1 und 2 - nun mich ich nur noch sehen, wie ich das auf die restlichen Zeilen anwenden kann.
Gruß
Marco
|
|
|
Schrank |

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 10.07.08
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.05.2009, 15:09
Titel:
|
 |
Hallo mkalz,
meinst du das so?
Gruß Schrank
|
|
|
Dagnabit |

Forum-Century
|
 |
Beiträge: 244
|
 |
|
 |
Anmeldedatum: 23.04.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.05.2009, 20:08
Titel:
|
 |
Servus mkalz
Also wenn ich mich jetzt mal nicht "verlesen" habe, ist es so, dass Du immer eine "Doppelzeile" sortiert haben würdest.
Also (1, 2), (3, 4) ...; Unabhängig davon was im nächsten Zeilenpaar steht.
Schrank´s Code sortiert Dir wirklich alle ungeraden Zeilen durch (Wenn Index 1 in der letzten ungeraden Zeile steht, steht sie nach Schrank´s Sortierung in der ersten Zeile an erster Stelle).
Folgender Code sortiert nur zeilenweise (Wenn Index 1 in der letzten ungeraden Zeile steht, steht sie nach der Sortierung wieder in der letzten ungeraden Zeile aber an erster Stelle).
Unschönerweise hat mein Code eine Schleife. Womöglich kann Schrank Dir das selbe Ergebnis ohne Schleife erzeugen. Ich bin und bleibe leider ein Schleifen- Fetischist.
lg
Martin
|
|
|
mkalz |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 07.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.05.2009, 23:46
Titel:
|
 |
Hallo Schrank, hallo Martin,
vielen herzlichen Dank für Eure tolle Unterstützung. Beide Lösungen waren interessant - ich habe mich nun für die letzte Lösung entschieden.
Marco
|
|
|
|
|
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.
|
|