abc Matlab - elektronski priručnik
|
Operator |
Opis |
< |
Manje od |
<= |
Manje ili jednako |
> |
Veće od |
>= |
Veće ili jednako |
== |
Jednako |
~= |
Nije jednako |
Operator == poredi dve varijable i vraća jedinicu kada su one jednake, a inače vraća nulu.
Neka je
a = [1 1 3 4 1]
a =
1 1 3 4 1
Tada je
ind = (a == 1)
ind =
1 1 0 0 1
Možemo izdvojiti sve članove niza a koji su jednaki 1 koristeći
b = a(ind)
b =
1 1 1
Ovo je primjer tzv. logičkog adresiranja u MATLAB-u. Možemo dobiti isti rezultat pomoću funkcije find
ind = find(a == 1)
ind =
1 2 5
Varijabla ind sada sadrži indekse onih članova koji zadovoljavaju postavljeni uslov. Da bismo izdvojili sve jedinice iz niza a koristimo
b = a(ind)
b =
1 1 1
Postoje tri logička operatora raspoloživa u MATLAB-u
Logički operator |
Opis |
| |
Or |
& |
And |
~ |
Not |
Pretpostavimo da želimo da izaberemo sve članove x koji zadovoljavaju nejednakosti x >= 1 ili x < -0.2 gdje je
x = randn(1,7)
x =
-0.4326 -1.6656 0.1253 0.2877 -1.1465 1.1909 1.1892
niz normalno distribuiranih slučajnih brojeva. Možemo lako riješiti ovaj problem koristeći operatore koje smo ovdje opisali
ind = (x >= 1) | (x < -0.2)
ind =
1 1 0 0 1 1 1
y = x(ind)
y =
-0.4326 -1.6656 -1.1465 1.1909 1.1892
Riješimo posljednji problem bez korištenja logičkog adresiranja.
Kao dodatak relacionim i logičkim operatorima MATLAB ima nekoliko logičkih funkcija dizajniranih za izvršavanje sličnih zadataka. Ove funkcije vraćaju 1 (tačno) ako je zadovoljen određeni uslov, a inače vraća 0 (netačno). Lista ovih funkcija je preduga da bismo je ovdje prikazali. Imena većine ovih funkcija počinju sa prefiksom is. Na primjer, sljedeća komanda
isempty(y)
ans =
0
vraća 0 zato što niz y iz posljednjeg primjera nije prazan. Međutim, ova komanda
isempty([ ])
ans =
1
vraća 1 zato što je argument upotrijebljene funkcije prazan niz [ ].
Ovdje je još jedan primjer koji zahtijeva upotrebu isempty komande
function dp = derp(p)
% Izvod dp algebarskog polinoma koji je
% predstavljen njegovim koeficijentima p. Oni moraju biti spremljeni
% u opadajucem redoslijedu stepena.
n = length(p) - 1;
p = p(:)'; % p mora biti red-niz.
dp = p(1:n).*(n:-1:1); % Primijenimo Pravilo Stepena.
k = find(dp ~= 0);
if ~isempty(k)
dp = dp(k(1):end); % Brisemo vodece nule ako ih ima.
else
dp = 0;
end
U ovom primjeru p(x) = x3 + 2x2 + 4. Koristeći konvenciju za predstavljanje polinoma u MATLAB-u kao niza njegovih koeficijenata koji su spremljeni u opadajućem redoslijedu stepena, dobijamo
dp = derp([1 2 0 4])
dp =
3 4 0Kontrola toka - switch-case konstrukcija < Index > Stringovi