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

structure sortieren

 

katrin8
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 02.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2009, 18:19     Titel: structure sortieren
  Antworten mit Zitat      
Hallo,

es sind Daten in einer structure, diese structuren stehen in einer weiteren structure die ein dynamisches array entspricht. Nun sollen die structuren nach ihren Daten sortiert werden. Also zum Beispiel die erste structure enthält eine Zahl und die zweite structure auch, und diese structuren stehen in einer structure, nun sollen die structuren, deren Zahlen, sortiert werden.
Code:
while getauscht~=1
    for r=1:(ansch-1)
        if schiff(r).datum>schiff(r+1).datum
            help=schiff(r).datum;
            schiff(r).datum=schiff(r+1).datum;
            schiff(r+1).datum=help;
            ta=1;
        end
        if schiff(r).datum==schiff(r+1).datum
            if schiff(r).uhr>schiff(r+1).uhr
                help=schiff(r).uhr;
                schiff(r).uhr=schiff(r+1).uhr;
                schiff(r+1).uhr=help;
                ta=1;
            end
        end
        if ta==1
            getauscht=1;
        end
    end
end

Das funktioniert nicht.
Kennt jemand eine Möglichkeit.
Danke für eure Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

warum nicht die Funktion sort verwenden? Siehe auch hier:
http://blogs.mathworks.com/steve/20.....tch-processing-revisited/

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 02.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.09.2009, 18:14     Titel:
  Antworten mit Zitat      
Hallo,

das funktioniert soweit, bis auf die Zuordnung der geordneten Zahlen zu deren gehörigen structure.
Code:
datum=zeros(ansch-2,1);
for i=1:(ansch-1)
    dat=str2double(schiff(i).datum);
    date(i)=(dat);
end  
[date_sort,index]=sort(date);
for r=1:(ansch-1)  
    s=schiff(index);
    schiff(r)=s(r);
end

Das Programm gibt dann nur noch die erste structure an.

So sieht es vor sort aus.
Code:
ans =
    sname: 'Schiff_1'
    masse: '20000'
     datum: '16102009'
       au: '1245'
      dep: '18102009'
      deu: '1445'

ans =
    sname: 'Schiff_2'
    masse: '30000'
     datum: '12102009'
       au: '1445'
      dep: '16102009'
      deu: '1645'

So sieht es nach sort aus.
Code:
ans =
    sname: 'Schiff_2'
    masse: '30000'
     datum: '12102009'
       au: '1445'
      dep: '16102009'
      deu: '1645'

ans =
    sname: 'Schiff_2'
    masse: '30000'
     datum: '12102009'
       au: '1445'
      dep: '16102009'
      deu: '1645'

Danke für eure Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.09.2009, 18:58     Titel:
  Antworten mit Zitat      
Hallo,
eigentlich brauchst du keine for-schleifen:

Code:

schiff=struct('sname',{'Schiff_1','Schiff_2'},...
               'masse',{'20000','30000'},...
               'datum',{'16102009','12102009'},...
               'au',[],...
               'dep',[],...
               'deu',[]);

[date_sort,index]=sort({schiff.datum});

schiff=schiff(index);


 
Private Nachricht senden Benutzer-Profile anzeigen
 
katrin8
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 02.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2009, 20:27     Titel:
  Antworten mit Zitat      
Hallo,

das funktioniert. Das mit den for Schleifen kommt von Delphi Pascal.
Ich danke dir.
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.