abc Matlab - elektronski priručnik
VII dio Dodaci /APPENDIX/ - 7.1. Programiranje u Matlabu 1

7.1.4. Relacioni i logički operatori

Poređenja u MATLAB-u se izvode uz pomoć sljedećih operatora

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     0

Kontrola toka - switch-case konstrukcija    <    Index    >    Stringovi