L’istruzione if in Matlab valuta un’espressione logica ed esegue un gruppo di asserzioni quando l’espressione risulta vera. L’else if opzionale e altre keywords provvedono per l’esecuzione di gruppi alternati di asserzioni. Una keyword END termina l’ultimo gruppo di asserzioni. I gruppi di asserzioni sono delineati da quattro keywords non sono previste parentesi.
L’algoritmo di MATLAB per generare una magic square di ordine n coinvolge tre casi diversi:
- quando n è dispari,
- quando n è pari ma non divisibile per 4,
- quando n è divisibile per
Questo è quanto riportato nel costrutto seguente:
if rem(n,2) ~= 0
M = odd_magic(n)
elseif rem(n,4) ~= 0
M = single_even_magic(n)
else
M = double_even_magic(n)
end
In questo esempio, i tre casi sono mutuamente esclusivi, ma se non lo fossero, la prima condizione vera sarebbe comunque eseguita. Tutto ciò è importante per capire come gli operatori relazionali e le strutture if lavorano con le matrici.
Quando si vuole controllare l’uguaglianza tra due variabile, usare:
if A == B, ….
Questo è consentito in MATLAB, e fa quello che ci si aspetta quando A e B sono scalari. Ma quando A e B sono matrici, A == B non esamina se loro sono uguali, esamina solo dove loro sono uguali; il risultato è un altra matrice di 0 e di 1 che espone l’uguaglianza elemento per elemento.
Infatti, se A e B non sono della stessa taglia, allora l’istruzione A == B è un errore. Il modo corretto per controllare l’uguaglianza tra due variabile è quello di usare la funzione isequal:
if isequal(A,B), …
Qui c’è un altro esempio per enfatizzare questo punto. Se A e B sono scalari, il programma seguente mai arriverà alla situazione inaspettata. Ma per la maggior parte delle matrici, includendo le nostre magic square con colonne scambiate nessuna delle condizioni seguenti A> B, A< B o A == B è vero per tutti gli elementi e così l’altra clausola è eseguita.
if A > B
‘greater’
elseif A < B
‘less’
elseif A == B
‘equal’
else
error(‘Unexpected situation’)
end
LINK DI APPROFONDIMENTO PER L’ARGOMENTO:
- Elementi di programmazione in Matlab
- Il Comando DIARY in Matlab
- Il comando dir in Matlab
- Il workspace di Matlab
- Documentazione su Matlab
- Cercare file e cartelle in Matlab
- Il comando lookfor in Matlab