Lektion 7

Werbung
NTS1-P Natur, Technik und Systeme 1 Praktikum
Herbstsemester 2012
Dr. Christoph Kirsch
ZHAW Winterthur
Lektion 7
In dieser Lektion lernen Sie Vergleichsoperatoren, logische Verknüpfungen sowie eine erste
Kontrollstruktur der MATLAB-Programmiersprache kennen.
1
Vergleichsoperatoren
Ein Vergleichsoperator wird auf zwei Argumente angewendet und liefert einen Wahrheitswert.
Wahrheitswerte und Vergleichsoperatoren werden in MATLAB wie folgt verwendet:
Vergleichsoperatoren
grösser als
Wahrheitswerte
wahr
falsch
kleiner als
1
0
grösser oder gleich
kleiner oder gleich
gleich
ungleich
>
<
>=
<=
==
=
Machen Sie sich im folgenden Beispiel mit den Vergleichsoperatoren vertraut:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
a
b
a
a
a
a
a
a
a
a
= 10;
= 100;
< b
< a
<= a
> b
>= b
== b
~= b
~= a
Wie die meisten MATLAB-Funktionen operieren auch Vergleichsoperatoren komponentenweise auf Vektoren und Matrizen das Ergebnis eines solchen Vergleichs sind Vektoren
bzw. Matrizen mit Wahrheitswerten:
>>
>>
>>
>>
>>
>>
>>
v
w
v
v
A
B
A
= 0:5;
= ones(1,6);
> w
== w
= [1 2;3 4];
= ones(2);
> B
1
2
Logische Verknüpfungen
Die folgenden logischen Verknüpfungen können in MATLAB auf Wahrheitswerte (oder Vektoren/Matrizen mit Wahrheitswerten) angewendet werden. Beachten Sie, dass für diese
Verknüpfungen jede Zahl
6= 0
als wahr interpretiert wird:
logische Verknüpfung
Konjunktion
Disjunktion
Negation
ausschliessende Disjunktion
MATLAB-Funktion
MATLAB-Operator
and
or
not
xor
&
|
Weitere Informationen zu diesen Operatoren nden Sie in
doc relop.
In den folgenden
MATLAB-Beispielen werden Vergleiche verknüpft:
>>
>>
>>
>>
>>
>>
>>
>>
>>
(a<50)&(b>50)
(a==10)&(b~=90)
(a<10)&(b>90)
(a<50)|(b>50)
(a==10)|(b~=90)
(a<5)|(b<5)
~(a==10)
(A>1)&(A<4)
~(A>B)
3
Bedingte Anweisung und Verzweigung
if wird in MATLAB eine bedingte Anweisung eingeleitet: die nachfolgenden MATLABBefehle (bis zu end) werden nur dann ausgeführt, wenn die Bedingung erfüllt ist. Speichern
Sie die folgenden Zeilen in einem M-File und führen Sie das Skript einmal für x = 10, y = 5
und einmal für x = 5, y = 10 aus:
Mit
% wenn x > y, dann werden die Werte von x und y vertauscht
if (x>y)
temp = y; % speichere den Wert von y temporaer
y = x;
x = temp;
end
x,y
Eine auf
else folgende Anweisung wird dann ausgeführt, wenn die vorangehende if-Bedingung
nicht erfüllt ist. Dies ist ein Beispiel für eine einfache Verzweigung. Lassen Sie folgendes
Skript für verschiedene natürliche Zahlen
a∈N
if (mod(a,2)==1)
disp([num2str(a) ' ist ungerade']);
else
disp([num2str(a) ' ist gerade']);
end
2
laufen:
Mehrfache Verzweigungen können mit Hilfe von
elseif
programmiert werden. Hier ein
Beispiel dafür:
if (mod(a,3)==1)
disp([num2str(a) ' geteilt durch 3 hat Rest 1.']);
elseif (mod(a,3)==2)
disp([num2str(a) ' geteilt durch 3 hat Rest 2.']);
else
disp([num2str(a) ' ist durch 3 teilbar.']);
end
Bei vielen Verzweigungen kann es einfacher sein, eine Fallunterscheidung zu verwenden (doc
switch).
Das vorherige Beispiel kann auch so programmiert werden:
switch mod(a,3)
case 1
disp([num2str(a) ' geteilt durch 3 hat Rest 1.']);
case 2
disp([num2str(a) ' geteilt durch 3 hat Rest 2.']);
otherwise
disp([num2str(a) ' ist durch 3 teilbar.']);
end
Die Stellung des Schalters ist hier das Ergebnis von
Wert wird die auszuführende Anweisung bestimmt.
Kurswebseite:
http://home.zhaw.ch/kirs/NTS1-P
3
mod(a,3),
und abhängig von diesem
Herunterladen