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