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

while Schleife soll enden, sobald Wert in Matrix erreicht

 

agent_fux
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 12.01.17
Wohnort: ---
Version: MATLAB R2016b student use
     Beitrag Verfasst am: 17.02.2017, 17:14     Titel: while Schleife soll enden, sobald Wert in Matrix erreicht
  Antworten mit Zitat      
Hallo,

ich habe mir eine Schleife programmiert, die enden soll, wenn in der Matrix der Wert in der letzten Zeile der Spalte 10 gleich 0 ist. Allerdings scheint die Schleife gar nicht zu starten. Woran liegt das?

Hier ist der Code:
Code:
%Liest die Nr. des ersten Micro-Segments ein.
MicroSeg= newStadt(1,4);

%Alle zugehörigen Zeilen des ersten Micro-Segments werden eingelesen.
StadtZyklus= newStadt(:,4)==MicroSeg;
StadtZyklus= newStadt(StadtZyklus,:);

while StadtZyklus(end,10) == 0
%Liest die Geschwindigkeit am Ende des vorangegangenen Micro-Segments ein.

speed = StadtZyklus(end,10);

%Sucht ein neues Micro-Segment mit Startgeschwindigkeit +/- 0.1 km/h zur Endgeschwindigkeit
%des vorangegangenen Micro-Segments. Sobald dieses gefunden ist, stoppt die
%Suche. Dadurch wird immer das nächst mögliche Micro-Segment mit hohem
%Emissionsaustoß gefunden. Denn in Matirx newStadt sind die Micro-Segmente absteigend nach
%Partikelausstoß sortiert.
for i = 1:size(newStadt,1)
if newStadt(i,10) <= speed +0.1 && newStadt(i,10) >= speed-0.1 && newStadt(i,6) == 0 && newStadt(i,4) == newStadt(i+1,4)
    newMicroSeg= newStadt(i,:);
    break
end
end

addMicroSeg= newStadt(:,4) == newMicroSeg(1,4);
StadtZyklus= [StadtZyklus; newStadt(addMicroSeg,:)];
end


Wenn ich jedoch die Bedingung ändere und sage, dass nach der 2400sten Zeile aufgehört werden soll, dann klappt das. Aber das will ich nicht.

Code:
%Liest die Nr. des ersten Micro-Segments ein.
MicroSeg= newStadt(1,4);

%Alle zugehörigen Zeilen des ersten Micro-Segments werden eingelesen.
StadtZyklus= newStadt(:,4)==MicroSeg;
StadtZyklus= newStadt(StadtZyklus,:);

while size(StadtZyklus,1) <= 2400
%Liest die Geschwindigkeit am Ende des Micro-Segments ein.

speed = StadtZyklus(end,10);

%Sucht ein neues Micro-Segment mit Startgeschwindigkeit +/- 0.1 km/h zur Endgeschwindigkeit
%des vorangegangenen Micro-Segments. Sobald dieses gefunden ist, stoppt die
%Suche. Dadurch wird immer das nächst mögliche Micro-Segment mit hohem
%Emissionsaustoß gefunden. Denn in Matirx newStadt sind die Micro-Segmente absteigend nach
%Emissionen sortiert.
for i = 1:size(newStadt,1)
if newStadt(i,10) <= speed +0.1 && newStadt(i,10) >= speed-0.1 && newStadt(i,6) == 0 && newStadt(i,4) == newStadt(i+1,4)
    newMicroSeg= newStadt(i,:);
    break
end
end

addMicroSeg= newStadt(:,4) == newMicroSeg(1,4);
StadtZyklus= [StadtZyklus; newStadt(addMicroSeg,:)];
end


newStadt.xls
 Beschreibung:

Download
 Dateiname:  newStadt.xls
 Dateigröße:  39.37 MB
 Heruntergeladen:  458 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.02.2017, 17:19     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
die enden soll, wenn in der Matrix der Wert in der letzten Zeile der Spalte 10 gleich 0 ist. Allerdings scheint die Schleife gar nicht zu starten. Woran liegt das?

Weil die Bedingung genau das Gegenteil überprüft. Du möchtest wohl
Code:
while StadtZyklus(end,10) ~= 0


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 12.01.17
Wohnort: ---
Version: MATLAB R2016b student use
     Beitrag Verfasst am: 17.02.2017, 18:29     Titel:
  Antworten mit Zitat      
Uuups. Laughing Danke vielmals.
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.