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

for loop zurücksetzen

 

marvin.be
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 28.08.15
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 27.10.2015, 10:51     Titel: for loop zurücksetzen
  Antworten mit Zitat      
Hi Leute,

ich schreibe mir momentan ein kleines Programm zurecht bei dem der User ein paar Kriterien auswählen soll. Zwischendurch wird man dann mal gefragt ob das bisherige Ergebnis soweit passt oder eben nicht. Ist die Aussage negativ, so soll die Berechnung wiederholt werden. Schematischer Code wie folgt:

Code:

for k=1:1:N1

        % do something interesting

        prompt = 'Does the data look ok? Y/N [Y]: \n';
        N2 = input(prompt,'s');
        if isempty(N2)
            N2 = 'Y';
        end

        if N2 == 'N'
            k=k-1;   % hier ist mein Problem
        else
end
 


Leider meckert MatLab und denkt das Zurücksetzen des Index k sei ein Fehler und überspringt die Zeile. Ich will aber, sobald der User "N" eingibt, dass die Berechnung neu ausgeführt wird. Wie implementiert man sowas in MatLab? Würde man dafür auf "while" zurückgreifen? Habe bislang keine zündende Idee.

Gruß,
Marvin
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 27.10.2015, 11:03     Titel: Re: for loop zurücksetzen
  Antworten mit Zitat      
marvin.be hat Folgendes geschrieben:
Code:

for k=1:1:N1

        % do something interesting

        prompt = 'Does the data look ok? Y/N [Y]: \n';
        N2 = input(prompt,'s');
        if isempty(N2)
            N2 = 'Y';
        end

        if N2 == 'N'
            k=k-1;   % hier ist mein Problem
        else
end
 


Leider meckert MatLab und denkt das Zurücksetzen des Index k sei ein Fehler und überspringt die Zeile.

Er meckert nicht und denken tut Matlab schon gar nicht. Überspringen wird Matlab eine Zeile, wenn sie einen Fehler enthält garantiert nicht, sondern mit Fehlerangabe abbrechen.
Möglicher Fehlergrund könnte das mangelnde End nach dem else sein.
Ansonsten lassen sich die Zählvariablen der for-schleife nicht so manipulieren. D.h. du kannst sie zwar verändern, aber beim nächsten Durchlauf wird der nächste Wert genutzt, nicht der von dir veränderte.


marvin.be hat Folgendes geschrieben:
Würde man dafür auf "while" zurückgreifen?

Ja, while wäre hier Mittel der Wahl.

Code:

%Pseudocode:
rueckgabewert = 'N'
While  rueckgabewert == 'N'
  berechne-etwas-tolles
  frage ab, ob Berechnungsergebnis wie gewünscht
  speichere rueckgabewert
end

_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
marvin.be
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 28.08.15
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 27.10.2015, 17:33     Titel:
  Antworten mit Zitat      
Danke, funktioniert!

MatLab gibt keinen Fehlercode aus, sondern markiert die entsprechende Zeile mit einem orangen Zeichen und der Code bleibt weiter ausführbar. Wie von dir geschrieben verwendet MatLab den nicht veränderten Index weiter und ignoriert meine Manipulation.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 27.10.2015, 18:18     Titel:
  Antworten mit Zitat      
Zitat:
Avoid assigning a value to the index variable within the loop statements. The for statement overrides any changes made to index within the loop.

das steht auch so in der dokumentation ^^
_________________

richtig Fragen
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 - 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.