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

Sortieren einer Matrix

 

hug77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2012, 12:34     Titel: Sortieren einer Matrix
  Antworten mit Zitat      
Hallo,
derzeit stehe ich vor einem Problem beim sortieren einer Matrix: Ich möchte die Zeilen der Matrix so sortieren, dass die erste Spalte ausschlaggebend ist. Wenn dort für mehrere Zeilen das Selbe steht nach der zweiten schauen usw. ...
Dazu benutze ich die Funktion sortrows(matrix,[1,2,3]). Wenn ich das so auf kleinere Testmatrizen anwende klappt auch alles wie gewünscht, nur bei den Matrizen wos dann mal drauf ankommt geht es völlig in die Hose. In der ersten Spalte ist noch alles schön sortiert, aber bereits in der zweiten gibt es immer mal Vorzeichenwechsel (bei gleich erster Spalte)! Von sortiert kann da also keine Rede sein.
Wie kommt das, und wie könnte man das einfach beheben? Eine eigene Funktion zum sortieren hatte ich auch mal kurz probiert, aber >10.000 Zeilen war mein Code einfach nicht effizient genug...
Habe ich einfach "For any rows that have equal elements in a particular column, (e.g., A(1:4,1) for this matrix), sorting is based on the column immediately to the right" aus der Hilfe für sortrows fehlinterpretiert?


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.07.2012, 12:41     Titel:
  Antworten mit Zitat      
Hallo,

das Problem ist so schwierig nachvollziehbar.
Kannst du eine Matrix anhängen, anhand der das Problem reproduzierbar ist?

Das einzige, was ich mir als Problem vorstellen kann:
Sind die Elemente der ersten Spalte wirklich gleich, oder sehen sie nur gleich aus? (im Command Window auf format long stellen)

Beispiel:
Code:
M = [1.000000   2
    1.000000    3
    1.000001    1];
disp('Original')
disp(M)
disp('Sortiert')
sortrows(M)


Falls das nicht hilft: Welches Release verwendest du?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
hug77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2012, 12:47     Titel:
  Antworten mit Zitat      
Ich seh schon, da hätte ich gleich etwas mehr ins Detail gehen sollen... Ich verwende Version 7.12.0 (R2011a).
Ein txt, was so eine Tabelle enthält habe ich mal angehängt (achtung: 11MB!). Wenn ich beim debuggen in die Tabelle reinschaue, dann sind die Einträge in der ersten Spalte auch wirklich identisch (im Beispiel -0.3 mit Rest nullen) und sehen nicht nur so aus.

field100.txt
 Beschreibung:

Download
 Dateiname:  field100.txt
 Dateigröße:  11.25 MB
 Heruntergeladen:  690 mal
 
hug77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2012, 13:35     Titel:
  Antworten mit Zitat      
Ok, selbst im Editor werden einfach noch nicht genug Ziffern angezeigt... Die entsprechenden Werte sind doch nur scheinbar gleich und unterscheiden sich um 10^-17...
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.07.2012, 18:33     Titel:
  Antworten mit Zitat      
Hallo,

bist du dann damit zufrieden?

Wenn Werte, die sich nur so geringfügig unterscheiden, als "gleich" behandelt werden sollen, könntest du auch auf z.B. eine gewisse Anzahl Stellen runden.

Grüße,
Harald
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 - 2024 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.