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

zeilenweise sortierung von daten unterschiedlichen typs

 

stewart

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2009, 16:53     Titel: zeilenweise sortierung von daten unterschiedlichen typs
  Antworten mit Zitat      
Hallo,

ich habe seit geraumer Zeit ein Problem mit dem Sortieren von Daten unterschiedlichen Typs und da meine Suche in Foren wie diesen etc. bisher erfolglos war, wende ich mich nun hierhier.

Ich lese Daten aus der Datei TestdatenGK.txt ein:
Code:

[ F_ID, DATUM, X]=textread('TestdatenGK.txt', '%u%s%f');
 


In die Variablen F_ID, DATUM, X werden "Spaltenvektoren" geschrieben, die jeweils einen unterschiedlichen Datentyp haben:

Code:

EDU>> F_ID(1)

ans =

    18

EDU>> DATUM(1)

ans =

    '2007-04-01'

EDU>> X(1)

ans =

  5.4163e+006

 


Ich möchte die Daten nun nach bestimmten Spalten sortieren, wobei der Zusammenhang zwischen benachbarten Elementen aber erhalten bleiben soll (also F_ID(n) soll nach dem Sortieren weiterhin neben Datum(n) und X(n) stehen). Normalerweise wäre ich so vorgegangen, die einzelnen Spalten zu einer Matrix zusammenzufügen und diese dann mit dem Befehl sortrows zu sortieren. Da die Daten aber unterschiedlichen Datentyps sind, klappt das nicht.

Es wäre zwar ein Leichtes, die Daten einfach im selben Format zu speichern (z.B. cell) und dann zu sortieren (in einer Matrix, innerhalb eines Cell-Arrays oder mittels dataset(...)) etc), da es dafür ja entsprechende Funktionen gibt. Bloß leider brauch ich die Daten nach dem Sortieren wieder in ihrem ursprünglichen Format. Aber leider klappt eine Konvertierung ins ursprüngliche Format nicht, da es Funktionen wie cell2num etc. nicht gibt.

Nun meine Frage: weiß jemand, wie ich die Daten trotzdem sortieren kann? Oder gibt es doch eine Möglichkeit, wenn ich die Daten z.B. als cell gespeichert habe wieder zurück in den ursprünglichen Typ zu konvertieren, die ich bloß noch nich gefunden habe?

Ich hoffe, ich hab mich einigermaßen verständlich ausgedrückt Very Happy
und würde mich sehr freuen, wenn jemand eine Lösung hat. Also schon mal vielen Dank im Voraus.


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 12.11.2009, 17:49     Titel:
  Antworten mit Zitat      
Hier ein Beispiel wie das funktionieren kann;

Code:

a=[7 8 9 1 2 3 6 5 4]'
b=[1 2 3 4 5 6 7 8 9]'
[a, ix]=sort(a);
b=b(ix);
a
b
 


b kann dann auch ein anderer Datentyp sein.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
stewart

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2009, 18:08     Titel:
  Antworten mit Zitat      
oh, doch so einfach Very Happy

vielen dank! hast mir sehr geholfen!
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2009, 18:10     Titel:
  Antworten mit Zitat      
 
s-t-e-w-a-r-t

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2009, 00:01     Titel:
  Antworten mit Zitat      
Sorry, hab doch noch mal eine Frage. Der Vorschlag oben klappt ja gut, aber was ich eigentlich machen möchte, ist nicht nur nach einer Variablen z.B. a sortieren sondern anschließend die bereits sortierten Daten weiter sortieren, z.B. nach b,anschließend nach c etc., wobei die Sortierung nach a erhalten bleiben soll. Quasi das, was der Befehl sortrows(A, [a,b,c]) bei einer Matrix A macht.

Die erste Sortierung klappt ja problemlos so, wie Du es vorgeschlagen hast. Eine erneute Anwendung auf die Variable b ist ja dann nicht sinnvoll, weil die Sortierung nach a ja dann komplett über den Haufen geworfen. Gibt es irgendeine Möglichkeit mittels sort(), dass die vorherigen Sortierungen erhalten bleiben?
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 13.11.2009, 11:45     Titel:
  Antworten mit Zitat      
Im FileExchange gibt es bereits existierende Lösungen für solche Dinge. Es gilt zu prüfen obe es genau passt oder angepasst werden uss. Ein Beispiel ist so etwas hier:

http://www.mathworks.com/matlabcent.....exchange/21209-sortfields

Ich bin sicher das gibt es schon - irgendwo.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
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.