|
|
| rumpfutsch |

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 24.11.2011, 15:29
Titel: switch oder if/elseif?
|
 |
Hallo zusammen,
ich habe hier drei logische Variablen (logic0, logic1 und logic2) und je nach Kombination sollen bestimmte Funktionen ausgeführt werden.
Momentan habe ich das so gelöst:
Jetzt weiß ich nicht, ob das die eleganteste Methode ist oder ob ich lieber den switch-Befehl benutzen soll.
Was wäre denn die beste Umsetzung? Hat jemand eine Idee?
|
|
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 24.11.2011, 17:11
Titel: Re: switch oder if/elseif?
|
 |
Hallo rumpfutsch,
Das kann man eleganter formulieren. Der Vergleich mit "==1" ist überflüssig. Dann kann man die wiederholten Tests vermeiden:
Das ist nicht hübscher, aber schneller. Hier sind unbedingt Kommentare für jeden einzelnen Fall nötig.
Alternative:
Hier sind die Kommentare schon fast überflüssig.
Gruß, Jan
|
|
|
|
| rumpfutsch |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 25.11.2011, 10:06
Titel:
|
 |
Vielen Dank für die schnelle Antwort!
Da ich aber nicht ganz fit bin mit dem switch-Befehl, wollte ich nochmal nachfragen, was genau die Zeile
bedeutet.
9 glaube ich noch zu verstehen: es gibt 8 Fälle und 1 otherwise.
Aber warum muss man die logischen Variablen addieren?
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 25.11.2011, 11:26
Titel:
|
 |
|
müsste es nicht?
erzeugt dann die zahlen 1-8. das - is weil dein fall oben das so beschreibt. alles true is fall 1 also 8-(1+2*1+4*1)
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 25.11.2011, 12:10
Titel:
|
 |
Hallo Winkow, hallo rumpfutsch
Ja, es muss "8 - (logical0 + 2 * logical1 + 4 * logical2)" heißen. Ich verbessere meinen alten Beitrag.
"help switch" sollte hilfreich sein. Die 9 (abgesehen davon, dass es ein Tippfehler war) hat nichts mit der Anzahl der Cases zu tun. Es muss nur irgendein eindeutiger Ausdruck für SWITCH gebildet werden, der zu einer der CASE Ausdrücke passt.
"8 - (logical0 + 2 * logical1 + 4 * logical2)" habe ich nur deshalb statt ""logical0 + 2 * logical1 + 4 * logical2" gewählt, weil mit der ersten Methode der "Fall 1" auch die Zahl 1 erhält, der "Fall 2" die Zahl 2 etc. Es wäre aber auch dies möglich: ""7*logical0 + 77*logical1 + 777*logical2", aber dann müssten sehr wilde Zahlen hinter den CASEs stehen.
Gruß, Jan
|
|
|
|
| rumpfutsch |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 25.11.2011, 15:33
Titel:
|
 |
Aaaah, ich habs verstanden:
das ist gar kein Programmcode, sondern eine Rechnung!
Und je nachdem welchen Wert meine logischen Variablen annehmen, ändere ich den Case!
Raffiniert...
Auf jeden Fall vielen, vielen Dank für die Antwort! Ihr habt mir wahnsinnig geholfen.
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 25.11.2011, 15:34
Titel:
|
 |
kein ding ^^ haben ja nix besseres zu tun
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|