Verfasst am: 07.12.2010, 16:17
Titel: if-Abfrage mit mehreren ODER-Bedingungen
hallo,
ich bin noch neu in Matlab und habe folgenden code:
Code:
if z=='soa'
Hinweis= 'ab geht die Post...'
elseif z=='dbb'
Hinweis= 'ab geht die Post...'
elseif z=='asr'
Hinweis= 'ab geht die Post...'
else
Fehler= 'ungültige Eingabe für Exp.Typ(z)'
Fehler='möglich: soa, db, asr'
return
ich finde das nicht sehr elegant und habe erst mit
if z== 'soa'|'asr' etc herumprobiert, bin aber zu keiner lösung gekommen.
kann mir jemand weiterhelfen, sodass das ganze in weniger zeilen möglich ist?
danke!
_Peter_
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 07.12.2010, 16:27
Titel:
du beschreibst 2 verschiedene Sachen. bei deinen If-Bedingungen unterscheidest du ZWISCHEN 3 Bedingungen und bei der zweiten version unterschiedest du nur zwischen 2. Das vorneweg.
zu empfehlen, weil es einfach sauberer und schneller ist.
jetzt ist die Frage was du möchtest
Code:
ifstrcmp(z, 'soa')
Hinweis= 'ab geht die Post...1'
elseifstrcmp(z, 'dbb')
Hinweis= 'ab geht die Post...2'
elseifstrcmp(z, 'asr')
Hinweis= 'ab geht die Post...3'
else
Fehler= 'ungültige Eingabe für Exp.Typ(z)'
Fehler='möglich: soa, db, asr'
return
Bei z== 'soa'|'asr' wirkt zudem noch die Precedence: == wird zuerst berechnet, dann erst |:
Code:
z = 'asa';
z == 'soa' | 'asr'
% Zuerst der == Operator: [false, flase, true] | 'asr'
% Im command window erscheint [false, true] als [0, 1] % Dann wird 'asr' in den gleichen Typ umgewandelt wie der erste % Operand, nämlich LOGICAL: [fals, false, true] | [true, true, true]
==> [true, true, true]
Das was Bill sucht ist eindeutig switch case Anweisung. (siehe Post von Jan)
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
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.