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

Zähler für eine If- Anweisung

 

theshadyanswer
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 29.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2012, 13:38     Titel: Zähler für eine If- Anweisung
  Antworten mit Zitat      
Hallo an alle,

ich habe eine Frage und hoffe, dass mir jemand helfen kann.
Im folgenden Script soll die If-Anweisung "Bremsen" nur einmal durchlaufen werden. Das habe ich versucht, indem ich in der Anweisung den Wert i um einen Wert erhöhe und in der Bedingung nur eine "0" zulasse. Doch leider geht das nicht, weil Variable i wieder "0" ist sobald man nicht mehr in der Anweisung steckt.

Würde mich super freuen, wenn jemand eine Idee hätte. wie man das realisieren kann.

Gruß

Andreas






%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Deklaration aller Variablen
v_akt_1 = 0;
v_St_5 = 0;
v_reku_3 = 0;
v_St_6 = 0;
central = 0;
bremsen_cl=0;
i=0;
% Bremsen
elseif position_s > s_brems_schl && position_s <-65 && i<1
v_akt_1 = 1;
v_St_5 = 0;
v_reku_3 = 1;
v_St_6 = 1;
central = 1;
bremsen_cl=1;
i=i+1;
Private Nachricht senden Benutzer-Profile anzeigen


Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 19.07.2012, 13:44     Titel:
  Antworten mit Zitat      
scheint nur ein Codefragment zu sein, wie sieht der andere Code aus? Gibt es eine Schleife um diesen Code?

wenn du so einen Code postest, verwende bitte die CODE Umgebung danke
Private Nachricht senden Benutzer-Profile anzeigen
 
theshadyanswer
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 29.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2012, 14:24     Titel:
  Antworten mit Zitat      
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Deklaration aller Variablen
v_akt_1 = 0;
v_St_5 = 0;
v_reku_3 = 0;
v_St_6 = 0;
central = 0;
bremsen_cl=0;
i=0;

if control <= 0;
if position_s < s_brems_schl
%Fahren

elseif position_s > s_brems_schl && position_s <-65 && i<1
% Bremsen
v_akt_1 = 1;
v_St_5 = 0;
v_reku_3 = 1;
v_St_6 = 1;
central = 1;
bremsen_cl=1;
i=i+1;

end
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 19.07.2012, 14:33     Titel:
  Antworten mit Zitat      
Nochmal zu meiner Frage, hast du eine Schleife um diese Anweisung herum?


Hier nochmals in Code Umgebung, bitte diese verwenden:

Code:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Deklaration aller Variablen
v_akt_1 = 0;
v_St_5 = 0;
v_reku_3 = 0;
v_St_6 = 0;
central = 0;
bremsen_cl=0;
i=0;

if control <= 0;
if position_s < s_brems_schl
%Fahren

elseif position_s > s_brems_schl && position_s <-65 && i<1
% Bremsen
v_akt_1 = 1;
v_St_5 = 0;
v_reku_3 = 1;
v_St_6 = 1;
central = 1;
bremsen_cl=1;
i=i+1;

end
end
Private Nachricht senden Benutzer-Profile anzeigen
 
theshadyanswer
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 29.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2012, 14:50     Titel:
  Antworten mit Zitat      
Achso jetzt habe ich verstanden. Wusste nicht, dass man das auch anders anzeigen lassen kann. Sorry dafür.

Es ist keine Schleife herum.


Gruß

Andy
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 19.07.2012, 14:57     Titel:
  Antworten mit Zitat      
Ok dann verstehe ich das Ganze hier aber nicht.

wenn hier keine Schleife ist, dann rufst du das Ganze ja nur einmal auf so kommt er ja nie in den elseif Zweig rein oder ist dies eine Unterfunktion die so immer wieder aufgerufen wird?
Wenn es eine Unterfunktion sein sollte, dann ist es auch klar wenn du i immer auf 0 setzt, dass er nie in den elseif Zweig kommt.
Private Nachricht senden Benutzer-Profile anzeigen
 
theshadyanswer
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 29.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2012, 15:15     Titel:
  Antworten mit Zitat      
Ja das ist ja die Frage.

Ich will, dass er die elseif Anweisung nur einmal durchläufft und nicht wieder wenn nach einer gewissen zeit
position_s > s_brems_schl && position_s <-65 && i<1


Er kommt immer wieder in die elseif Anweisung weil i=i+1 ja nur gilt solange die Anweisung durchläuft. Danach ist aber wieder i=0 und das spiel beginnt von vorne.



Ich brauche eigentlich nur eine If Anweisung die die einmal durchlaufen wird und danach eben nicht mehr auch wenn die Bedingungen Wahr sind.
Mein Programm ist nichts anderes als eine Ablaufsteuerung die in Abhängigkeit von einer Postion signale ausgibt. Nichts mit irgendwelchen Schleifen oder so. Das Programm soll von oben nach unten einmal durchlaufen.
Gruß

Andy
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 19.07.2012, 15:32     Titel:
  Antworten mit Zitat      
Solange der Codeblock den du gepostet hast nur einmal durchlaufen wird, kommt er immer in den elseif Block rein und nicht in den anderen. Sobald du den Codeblock ein zweites mal durchläufst wird er wieder in den elseif Block gehen, da du ja i=0 wieder setzt am Anfang. Also die Initialisierung von i = 0 sollte eventuell an einer anderen Stelle erfolgen.

Dennoch denke ich, es fehlt noch ein wenig vom Code um das was du hier machst auch wirklich zu verstehen.
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: 19.07.2012, 17:08     Titel:
  Antworten mit Zitat      
Hallo theshadyanswer,

Ich verstehe die Frage auch noch nicht. Ich nehme an, es ist eine grundsätzliche Frage, also empfehle ich erstmal alles überflüssige aus dem code wegzulassen, was zunächst nur verwirrt. Für konkrete Probleme ist so ein "Pseudo-Code" zwar im Allg. nicht hilfreich, aber hier schient es ja um eine generelle Annwendung von Schleifen und IF-Bedeingungen zu gehen.

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.