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

Neu sortieren einer Liste

 

reinhold
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2008, 11:49     Titel: Neu sortieren einer Liste
  Antworten mit Zitat      
Hallo Alle zusammen.
ich denke für Euch kein Problem aber ich komme mit einer Sortierung nicht klar. Ich habe eine Liste BSP

1 12 1 Die erste Spalte ist nach Blöcken 1, 2 usw
1 24 1 sortiert. die dritte ethält nur die Werte 1
1 2 3 oder 3. Es gibt ca 80 Blöcke.
1 25 3
1 36 1
1 45 1
1 23 3
2 2 1
2 15 3
2 28 1
2 47 1
3 16 1
3 50 1
3 55 3
............
Die Sortierung soll folgendermaßen aussehen:
1 12 1
1 24 1
1 2 3
2 2 1
2 15 3
3 16 1
3 50 1
3 55 3
es sollen stehts alle einsen bis zur ersten 3 und dann diese erste 3 gelistet werden. dann im nächsten block das selbe spiel........alle Blöcke durch.
Ich habe es mit zwei erzwungenen While Schleifen versucht. (die äußere While um ALLE Anlagen Blöcke zu durchlaufen. die zweite um die Erste drei mitzunehmen. Habt ihr eine Idee?
Vielen Dank schonmal im vorraus Reinhold
Private Nachricht senden Benutzer-Profile anzeigen


Avisenna
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 21.07.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 07.09.2008, 13:46     Titel:
  Antworten mit Zitat      
Hi,

versuch es mit der Funktion "sortrows"
Du muß die Funktion so oft aufrufen wie Du Spalten hast!
also

Code:
x1 = sortrows(x,1)
x2 = sortrows(x1,2)
x3 = sortrows(x2,3)


x ist die Originalmatrix und x3, deine Lösung

Gruß,

Avisenna SW Solutions
K. E.-Pour

Edit: Code-Formatierung repariert.
mfg nschlange
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 07.09.2008, 14:39     Titel:
  Antworten mit Zitat      
Hi,

als erstes ist mir Folgendes eingefallen (setzt voraus, dass A korrekt sortiert ist):
Code:
clear all;
clc;

A=[ 1 12 1;
    1 24 1;
    1 2 3;
    1 25 3;
    1 36 1;
    1 45 1;
    1 23 3;
    2 2 1;
    2 15 3;
    2 28 1;
    2 47 1;
    3 16 1;
    3 50 1;
    3 55 3];

B=[];

for k=1:numel(unique(A(:,1)))
    ind_r(k)=find(A(:,1)==k & A(:,3)==3,1,'first');
    ind_b(k)=find(A(:,1)==k,1,'first');
    B=[B;A(ind_b(k):ind_r(k),:)];
end
B


Hat jemand vielleicht eine Lösung, die z.B.
Code:
auswertet?
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 07.09.2008, 14:48     Titel:
  Antworten mit Zitat      
Hallo,

wer hat den Status auf 'beantwortet' gesetzt?
Ich frage mich das, weil mir insb. die erste Antwort nicht das Gewünschte zu leisten schien.
Deshalb sollte im Wesentlichen der Fragesteller den Status auf 'beantwortet' setzten, falls aus seiner Sicht das Problem gelöst ist.
Alle anderen sollten eher 'mit Vorschlag' benutzen.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Avisenna
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 21.07.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 08.09.2008, 06:43     Titel: Beantwortet <-> Vorschlag
  Antworten mit Zitat      
Hallo nschlange

ich war das. Sorry!

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
reinhold
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2008, 07:17     Titel: danke
  Antworten mit Zitat      
Hallo alle zusammen,
vielen Dank für eure schnelle Hilfe. Komme leider erst heute zum antworteten.
Private Nachricht senden Benutzer-Profile anzeigen
 
reinhold
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2008, 07:19     Titel: hmmmmm
  Antworten mit Zitat      
Ich verstehe den code von nschlange nicht wirklich. würdest du ihn mir kurz erklären?
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 11.09.2008, 10:08     Titel:
  Antworten mit Zitat      
Hi,

ich will es gern versuchen:
Code:

Es wird geguckt, wieviele unterschiedliche Zahlen in der ersten Spalte von A sind. Die Schleife läuft von 1 bis zu dieser Zahl, im Beispiel von 1 bis 3.
Code:
ind_r(k)=find(A(:,1)==k & A(:,3)==3,1,'first')

Dann wird geguckt, in welcher Zeile von A in der ersten Spalte das k steht und gleichzeitig in der dritten Spalte zum ersten mal die 3. Diese Zeile wird in ind_r gespeichert.
Code:
ind_b(k)=find(A(:,1)==k,1,'first')

In ind_b steht die Zeile von A, in der in der ersten Spalte das k zum ersten mal vorkommt.
Code:
B=[B;A(ind_b(k):ind_r(k),:)];

Dann wird die neue Matrix B schrittweise aus den Zeilen ind_b bis ind_r von A zusammengebaut.

Alles klar? Die Hilfe zu den einzelnen Befehlen ist ja auch verlinkt.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
reinhold
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2008, 23:25     Titel:
  Antworten mit Zitat      
vielen dank für eure hilfe. meine sortierung läuft nun. sorry das ich erst jetzt poste, war im stress.
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.