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

MATLAB-Funktion sortrows sortiert nach maximal zwei Spalten?

 

Chrischi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2014, 16:03     Titel: MATLAB-Funktion sortrows sortiert nach maximal zwei Spalten?
  Antworten mit Zitat      
Hallo gomatlab-Community,

ich versuche, eine MxN-Matrix nach drei der N Spalten mittels des sortrows-Befehls zu sortieren. Dabei werden bei der Durchführung des Befehls
Code:

R = sortrows(file,[4 2 3]);
 

nur die vierte sowie die zweite Spalte berücksichtigt, sodass bei Gleichheit der Einträge in der zweiten Spalte die dritte Spalte nicht sortiert wird. Die Matrix R entspricht also der Matrix R1
Code:

R1 = sortrows(file,[4 2]);
 

Mache ich etwas verkehrt oder existiert eine Möglichkeit, die Matrix letztendlich doch nach meinen Vorstellungen zu sortieren?

Vielen Dank für jede Hilfe,
Chrischi


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 24.02.2014, 17:45     Titel:
  Antworten mit Zitat      
Hallo
Du missverstehst einfach die Funktion von SORTROWS.

SORTROWS sortiert nur die ganze Zeilen nach Werten. Es wird sozusagen die ganze Zeile in der Matrix verschoben, und nicht einfach der Wert.

Die Zeilen werden zuerst nach der 4. Spalte sortiert. Danach werden nur die Zeilen sortiert, welche in der 4. Spalte gleiche Werte haben.
Wenn du nach der Spalte 3 sortierst, müssten die Werte zuvor in der Spalte 2, 4 gleich sein.

Deine Matrix hat wohl keine solche Stellen, deswegen nutzt die Sortierung nach Spalte 3 nichts.
Hier z.B. mit einer großer Zufallsmatrix, dann sieht man das die SORTROWS sortiert auch nach der 3 Spalte, wenn sein muss
Code:

A = round((rand(1000, 4)*100))
isequal(sortrows(A,[4,2,3]), sortrows(A,[4,2]) )

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Chrischi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2014, 12:09     Titel:
  Antworten mit Zitat      
Hallo Denny,

vielen Dank für die Antwort. Dass gesamte Zeilen sortiert werden, war mir schon klar. Das Problem lag tatsächlich an den Unterschieden der Zahlen meiner Matrix in sehr hohen Nachkommastellen, sodass in der Variablenansicht gleiche Werte der 2. Zeile angezeit wurden, obwohl dem tatsächlich nicht so war.
Hätte ich eher drauf kommen müssen, sorry für das sinnlose Fragen.

Viele Grüße,
Chrischi
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 26.02.2014, 17:25     Titel:
  Antworten mit Zitat      
Ach so, hast du das visuell überprüft?
ISEQUAL eignet sich gut für solche Überprüfungen.
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.