abc Matlab - elektronski priručnik
V dio Programiranje u Matlabu - 5.1. Kontrola toka programa
5.1.1. Uslovna kontrola – if, else, switch
5.1.1.1. Poređenja nizova u uslovnim naredbama
Važno je razumjeti kako relacioni operatori i if naredbe rade sa matricama. Kada želimo da provjerimo nejednakost između dve varijable, možemo koristiti
if A == B, ...
Ovo je validan Matlab kod, i radi ono što očekujemo kada su A i B skalari. Ali kada su A i B matrice, A == B ne testira da li su one jednake, nego testira gdje su one jednake; rezultat je druga matrica sastavljena od 0 i 1 koja pokazuje jednakost element-po-element. (Zapravo, ako A i B nisu iste veličine, tada je A == B greška.)
A = magic(4); B = A; B(1,1) = 0;
A == B
ans =
0 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
Pravi način za provjeru jednakosti između dve varijable je koristiti isequal funkciju:
if isequal(A, B), ...
isequal vraća skalarnu logičku vrijednost 1 (predstavlja true) ili 0 (false), umjesto matrice, kao izraz koji treba procijeniti pomoću if funkcije. Koristeći malopređašnje A i B matrice, dobijamo
isequal(A, B)
ans =
0
Ovdje je još jedan primjer da ovo naglasimo. Ako su A i B skalari, sljedeći program neće nikad dostići “neočekivanu situaciju”. Ali za većinu parova matrica, uključujući naše magične kvadrate sa zamijenjenim kolonama, nijedan od matričnih uslova A > B, A < B, ili A == B nije istinit za sve elemente i tako se else klauza izvršava:
if A > B
'greater'
elseif A < B
'less'
elseif A == B
'equal'
else
error('Unexpected situation')
end
Nekoliko funkcija su od pomoći za redukovanje rezultata matričnog poređenja sa skalarnim uslovima za upotrebu sa if, uključujući
isequal
isempty
all
any
Uslovna kontrola – if, else, switch < Index > Kontrola petlji – for, while, continue, break
|
 |