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

Zweidimensionale Datenpunkte sortieren

 

arno

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2012, 11:29     Titel: Zweidimensionale Datenpunkte sortieren
  Antworten mit Zitat      
Hallo zusammen,

auch bei längerem Suchen im Internet habe ich mein Problem leider noch nicht lösen können.

Bei einem Versuch wurde die Lage von verschiedenen Punkten über die Versuchsdauer gemessen. Daraus resultierte folgende Matrix:

In der ersten Spalte steht die x-Koordinate des 1. Punktes, in der zweiten Spalte die y-Koordiante des 1. Punktes, in der dritten Spalte die x-Koordinate des 2. Punktes usw.

In der zweiten Zeile dann die jeweilige Lage der Punkte zu Zeit t+1.

Ich möchte jetzt die Punkte jetzt zuerst nach den x-Werten und dann nach den y-Werten sortieren, ohne dabei natürlich die Datenpaare auseinander zu reissen.

Mit dem Befehl "sort" komm ich nicht wirklich weiter.

Für Antworten bin ich dankbar!


Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2012, 13:54     Titel:
  Antworten mit Zitat      
Hallo,

hilft dir in diesem Fall nicht sortrows() weiter?
mfg

Ajax
Private Nachricht senden Benutzer-Profile anzeigen
 
arno

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2012, 15:16     Titel:
  Antworten mit Zitat      
Nein, denn so verliere ich den Zusammenhang zwischen der jeweiligen x- und y Koordinate...
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 21.03.2012, 16:01     Titel:
  Antworten mit Zitat      
Hallo
so wie du es vorhast, kann man Sortieren nicht direkt machen,
da musst deine Matrix umstrukturiert werden,
so:
Code:


v= rand(2,10);

% lineare Indizies erzeugen
% hier vereinfacht, weiol du ja nur 2 Zeilen hast
% sonst über SUB2IND
row_1  = 1:2:size(v,2)*2;
row_2  = 2:2:size(v,2)*2;

% Zeilenidizies umformen, zu nx2 Matrix
nrow_1 = reshape(row_1,2,[])';
nrow_2 = reshape(row_2,2,[])';

% da du nach X und Y sortieren willst
% brauchen wir nur erste Zeile
[dummy,  idx] = sortrows(v(nrow_1),[1 2])

% jetzt Indizies sortieren
nrow_1          = nrow_1(idx,:)';
nrow_1          = nrow_1(:)';
% auch für 2 Zeile
nrow_2          = nrow_2(idx,:)';
nrow_2          = nrow_2(:)';

% deine Matrix sortieren
sorted_v        = v([nrow_1; nrow_2])
 
Private Nachricht senden Benutzer-Profile anzeigen
 
arno

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2012, 19:23     Titel:
  Antworten mit Zitat      
Das mit den Indizes ist ein guter Ansatz den ich weiter verfolgen werde. Noch sieht die sortierte Matrix nicht so aus, wie ich sie haben will (Koordinatenpaar mit kleinstem x-Wert am Anfang), aber ich versuche es weiter. Merci auf alle Fälle schon mal!
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 21.03.2012, 19:34     Titel:
  Antworten mit Zitat      
arno hat Folgendes geschrieben:
Das mit den Indizes ist ein guter Ansatz den ich weiter verfolgen werde. Noch sieht die sortierte Matrix nicht so aus, wie ich sie haben will (Koordinatenpaar mit kleinstem x-Wert am Anfang), aber ich versuche es weiter. Merci auf alle Fälle schon mal!


Du wolltest doch nach X und dann nach Y sortieren, das wird auch so gemacht, also kleinster X-Wert mit kleinster Y-Wert vorne usw
Also wie sollte denn deine Matrix am Ende aussehen, in diesem Fall bitte ein Beispiel machen. Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
arno

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2012, 20:14     Titel:
  Antworten mit Zitat      
Vereinfacht sieht das so aus:

Die unsortierte Matrix:
[5 2 6 2 4 -> x-Werte
3 5 9 0 2] -> y-Werte

Die sortierte Matrix:
[2 2 4 5 6
0 5 2 3 9]
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.03.2012, 12:22     Titel:
  Antworten mit Zitat      
Hallo

für dein Beispiel wäre die Lösung dann so:

Code:

A=[5 2 6 2 4;3 5 9 0 2];
A=sortrows(A',[1,2])'
 
Private Nachricht senden Benutzer-Profile anzeigen
 
arno

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2012, 22:10     Titel:
  Antworten mit Zitat      
Danke - mit deiner Hilfe hats funktioniert!
 
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.