% Uebungen 3: Boolesche Ausdruecke %% 1) Boolesche Ausdruecke auf Vektoren x = [1 5 2 8 9 0 1]; y = [5 2 2 6 0 0 2]; % a disp('a:') disp(x > y) % liefert einern logischen Verktor der 1 an den Stellen ist, an denen der % Wert in x groesser als der entsprechende Wert in y % b disp('b:') disp(y < x) % dto., da die Frage nur umgekehrt gestellt wurde % c disp('c:') disp(x == y) % 1 nur an den Stellen, an denen beide Vektoren geiche Werte enthalten (3 % und 6) % d disp('d:') disp(x ~= y) % wahr an allen Stellen ausser 3 und 6, da auf ungleichheit der Werte getestet % wird. % e disp('e:') disp(x & ~y) % glesen: das Ergebnis sei wahr an den Stellen, an denen x ungleich 0 ist % (wahr) UND y == 0 (falsch) ist. % f disp('f:') disp(x | y) % gelesen: das Ergebnis sei wahr an den Stellen, an denen x ODER y ungleich % 0 ist (alle ausser Nr. 6) %% 2) bitand und bitor % a disp('a:') disp(bitand(10, 8)) % wenn man sich die Zahlen binaer dargestellt vorstellt, dann werden diese % binaeren Vektoren mit einem logischen UND bit fuer bit verglichen. Das % Ergebnis hat eine 1 nur an der 4. Position, der 8. % b disp('b:') disp(bitor(10,8)) % Wiederum binaer dargestellt und mit logischem ODER verglichen. Das % Ergebnis ist wahr an den Stellen 2 und 4, was der 10 im Dezimalsystem % entspricht %% 3) Boolesche Ausdruecke implementieren % a: Das Ergebnis sei wahr, wenn x groesser als y und die Summe aus x und y % nicht kleiner als 100 ist. x > y & (x + y) > 100; % b: Das Ergebnis sei wahr, wenn x und y ungleich 0 oder x und y gleich sind. (x & y) | (x == y); %% 4) Logisches Indizieren x = (1:10); y = [3 1 5 6 8 2 9 4 7 0]; % a disp('a:') disp(x < 5) % logischer Vektor, der 1 an den Stellen ist, an denen die Werte in x % kleiner als 5 sind. % b disp('b:') disp(x( x < 5)) % Die Werte aus x an den Stellen, an denen die Werte in x kleiner als 5 % sind. % c disp('c:') disp(x( (y <= 2) )) % Die Werte aus x and den Stellen, an denen die Werte in y (!) kleiner oder % gleich 2 sind. % d disp('d:') disp(x( (x > 2) | (y < 8) )) % Die Werte aus x an den Stellen, an denen die Werte in x groesse 2 UND die % Werte in y kleiner 8 sind. % e disp('e:') disp(x( (x == 0) & (y == 0) )) % Die Werte aus x an den Stellen an denen die Werte in x UND y gleich 0 sind %% 5) Teste den Zufallsgenerator x = randi(100, 100, 100); % 1:100 % a x(x < 33) = 1; x(x >= 33 & x < 66) = 2; x(x >= 66) = 3; % man benutzt das logische Indizieren um all die Were zu ersetzen, die % einer bestimmten Bedingung entsprechen. z.B: setze all die Werte in x an % den Stellen, an denen die Werte in x < 33 gleich 1... % b disp('Anzahl Werte kleiner 33:') disp(sum(x(:) == 1)) disp('Anzahl Werte groesser gleich 33 und kleiner 66:') disp(sum(x(:) == 2)) disp('Anzahl Werte groesser gleich 66:') disp(sum(x(:) == 3))