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

If in for schleife rein stecken

 

Tiago
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 24.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2016, 17:03     Titel: If in for schleife rein stecken
  Antworten mit Zitat      
Hallo Leute,

ich möchte questdlg box mit if Anweisung steuern

das heisst so sieht mein code

for x = 0:7

hier steht das Programm

am ende gibt button = questdlg(.........................................................)
if (button=='Yes')

hier möchte mein Programm weiter normal laufen wenn ich auf button Yes drucke
elseif(button=='No')

hier möchte mein Programm die letzte schleife wiederholen wenn ich auf No drucke

end

ist es diese Idee überhaupt möglich

danke
Lg
Tia
Private Nachricht senden Benutzer-Profile anzeigen


Tiago
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 24.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2016, 18:32     Titel:
  Antworten mit Zitat      
ich bin gerade auf diesem Idee gekommen aber leider hat nicht geklapt


for x=0:7

hier das Programm

Code:
Yes = 1;
No = 0;
if button == No
       button = No
        k = find(z)
        k = k-1    
    else
       Yes=1
       continue    
    end
end


ich erkläre mein Problem noch genauer
wenn ich button yes betätige dann soll die for schleife weiter machen
aber wenn ich die No betätige soll die for schleife zurück auf dem letzte wert von x, wo die gerade befindet

ich danke euch im voraus


Lg Tia

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Sporisha
Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 05.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2016, 23:47     Titel:
  Antworten mit Zitat      
Bitte vollständigen Code posten, der das Problem aufzeigt.

Bei dem was du schreibst hat man keine Ahnung was du überhaupt willst Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Tiago
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 24.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2016, 09:02     Titel:
  Antworten mit Zitat      
so sieht es mein Code

Code:
for z = 0:7
     IDstr = mat2str(z+1);
     IDstrr= mat2str(z);
     uiwait(msgbox(['Schalten Sie bitte den analogen Eingang (AIN',IDstrr ,')'],'modal'))
     StartRecording;
     pause(1);
   
    [t0, d0] = IncaGetRecords('Driver', '100ms', 10, 1, 1); % zeit und Messdaten an MATLAB übertragen
   
    d(:,z+1) = d0(:, z+1)
   
   
    MT_d0 = mean(d(:,z+1)) % Mittelwert von einzelne spalten bilden
   
    eval(['d', IDstr,' = d0(:,', IDstr,')']);
   
    button = questdlg(['Ist diese Wert AIN',IDstrr,' = ',num2str(MT_d0), ' richtig ?'],['AIN',IDstrr],'default')
   
    Yes = 1;
    No = 0;
    k = find(z)
    z = str2mat(IDstrr)
   if button == 0
       
        z = z-1
           
    else
       continue    
    end
end

während die questdlg die message box ausgibt, wenn ich OK betätige soll die schleife weiter normal laufen
wenn ich auf No betätige soll die schleife zurück auf die letzte wert von z.

ich habe bei If -Anweisung diese befehl gemacht aber hat nicht geklapt
ich hoffe das jemand hier mir helfen kann

Danke

lg Tia

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Tom_Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2016, 12:50     Titel:
  Antworten mit Zitat      
Hallo,

im Gegensatz zu anderen Programmiersprachen kannst du in Matlab nicht die Schleifenvariable innerhalb der for-Schleife verändern. Das steht so in der Hilfe:

Avoid assigning a value to the index variable within the loop statements. The for statement overrides any changes made to index within the loop.

Deshalb funktioniert das mit 'z = z - 1' nicht.
Vorschlag: Nutze eine while-Schleife:
Code:
z = 0;
while z < 7
    z = z + 1;
    if button == 0
        z = z - 1;
    end
end


Das else - continue kannst du auch weglassen, da deine Schleife sowiso am Ende ist.

Gruß Tom
 
Tiago
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 24.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2016, 21:08     Titel:
  Antworten mit Zitat      
danke Tom für dein Antwort, ich habe versucht mit dein lösungsvorschlag hat nicht geklapt
aber so funktioniert, ich habe noch ein kleine Problem das die letzte messung steht die schleife bei der letzte messung wenn ich ja betätige wiederholt sich das Messagebox und wenn ich auf No betätige wiederholt auch die letzte messung
aber ich möchte dass Programm_code von der while-schleife raus kommt
Code:

x=0;
k = 7;
a = 0;
while(x==0)
    for z = a:k

   Programm-Code
....
....
.....
        x = 0
        a = z
        break
     elseif strcmpi(button,'Yes')
        continue
     else
         z = k
         break
     end
     
    end
   
end



kann jemand bitte mir sagen wo ist das problem im mein Programm-code

ich danke euch

lg Tia

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Tiago
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 24.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2016, 21:11     Titel:
  Antworten mit Zitat      
ich habe if-anweisung vergessen so nochmal den programm-code

Code:
if strcmpi(button,'No')
x = 0
a = z
break
elseif strcmpi(button,'Yes')
continue
else
z = k
break
end

end

end


[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.09.2016, 17:03     Titel:
  Antworten mit Zitat      
Hallo Tiago,

Ich verstehe den geposteten Code nicht mehr. Woher kommt jetzt "for z = a:k"?
Wozu dient "x"?
Die Zeile "z=k" setzt wieder den Schleifen-Zähler der FOR-Schleife. Wie schon erklärt funktioniert das in Matlab nicht.

Der EVAL-Befehl ist sehr häßlich und sollte unbedingt vermieden werden, z.B.:
Code:
d{z} = d0(:, z);

Gruß, Jan
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.