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

Problem bei if-Schleife

 

red-blizz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2009, 20:02     Titel: Problem bei if-Schleife
  Antworten mit Zitat      
Hallo, ich habe folgendes Problem:
Habe eine verschachtelte if schleife programmiert:
Code:
if zahl==2
    if xxxxx>yyyyy
    ergebnis = 1
    end
   
    if xxxxx<yyyyy
    ergebnis = 2
    end

    if xxxxx<yyyyy-1
    ergebnis = 3
    end
.
.
.
.
end
 

folgendes Problem, wenn keine der Bedingungen der inneren Schleife greifen bricht das Programm ab. Müsste also irgendwie festlegen das z.b. ergebnis = 0 wird, wenn keine der inneren bedingungen greift.
mit else bekomme ich das nicht hin, dann wird alles immer ergebnis = 0!

danke für eure Hilfe
Gruß

edit by steve: Code-Umgebung ergänzt. Bitte in Zukunft selbständig mit dem Button oben in der Mitte formatieren.


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2009, 20:09     Titel:
  Antworten mit Zitat      
Code:

if zahl==2
    if xxxxx>yyyyy
        ergebnis = 1
    end

    if xxxxx<yyyyy
        ergebnis = 2
    end

    if xxxxx<yyyyy-1
        ergebnis = 3
    end
    .
    .
    .
    .
end
 

1. Code-Umgebungen im Forum sind toll!
2. if macht so viele Schleifen wie ein gerades Stück Autobahn ;)
3. Vielleicht wäre eine if, elseif, else-Konstruktion besser geeignet - dürfte auch etwas schneller sein. Geht aber nur, wenn sich die einzelnen Bedingungen gegenseitig ausschließen. Alternativ kannst Du auch eine switch-case-konstruktion basteln.
Private Nachricht senden Benutzer-Profile anzeigen
 
red-blizz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2009, 20:19     Titel:
  Antworten mit Zitat      
also mein code sieht explizit so aus:
Code:
if Anzahl_Loecher == 2;
    symbol = 8
end

if Anzahl_Loecher == 1;
    if abs(gamma_u) < 2.5*10^-2 && abs(gamma_v) < 2.5*10^-2
        symbol = 0
    end
   
    if gamma_u < 0 && gamma_v > 0
        symbol = 6
    end
   
    if gamma_u > 0 && gamma_v < 0
        symbol = 9
    end
   
    if gamma_u < 0 && gamma_v < 0
        symbol = 4
    end
end


läuft auch. wenn allerdings mal keine der Bedingung zutrifft bricht die Funktion ab.
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.05.2009, 08:20     Titel:
  Antworten mit Zitat      
Du kannst zum Beispiel deine if-end konstruktion beibehalten und über dem ersten if das Standard-Ergebnis definieren. Wenn dann keine der Bedingungen zutrifft, gilt das, was Du außerhalb der Bedingungen definiert hast.
Code:

if Anzahl_Loecher == 1;
    symbol = 12345; %standard-wert setzen
    if abs(gamma_u) < 2.5*10^-2 && abs(gamma_v) < 2.5*10^-2
        symbol = 0
    end
...
 


Alternativ kannst Du (was auch deutlich schöner und üblicher ist) mit if-elseif-else arbeiten:
Code:

if bedingung_1
    aktion_1
elseif bedingung_2
    aktion_2
elseif bedingung_3
    aktion_3
...
...
...
elseif bedingung_n
    aktion_n
else
    standard_aktion
end
 


Auch möglich ist die switch-anweisung, ich bin mal so frei und zitiere aus der Matlab-Hilfe
Code:

 
   SWITCH switch_expr
     CASE case_expr,
       statement, ..., statement
     CASE {case_expr1, case_expr2, case_expr3,...}
       statement, ..., statement
    ...
     OTHERWISE,
       statement, ..., statement
   END
Private Nachricht senden Benutzer-Profile anzeigen
 
redblizz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.05.2009, 12:24     Titel:
  Antworten mit Zitat      
ah, super! Vielen Dank dafür
Gruß
 
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.