CHANGE LANGUAGE | Home > Prodotti > Hardware e software finanziario > Manuale Matlab > Strutture di controllo del flusso

Manuale Matlab

Introduzione

Per iniziare

Capacità di Matlab

Operazioni

Espressioni

Lavorare con le matrici

Lavorare con le matrici II

Operazioni sui file

Grafici

Operazioni sui grafici

Dati immaginari e complessi

Assi

Alfabeto greco e caratteri speciali

Immagini

Grafici di matrici

Help e Documentazione Online

L'Ambiente di MATLAB

Ulteriori informazioni su Matrici ed Array

Strutture di controllo del flusso

Scripts e Funzioni

Polinomi

Risoluzione di sistemi di equazioni lineari

Manuale Matlab

Strutture di controllo del flusso

MATLAB ha cinque strutture di controllo di flusso:

 if statements

 switch statements

 for loops

 while loops

 break statements

Analizzamole singolarmente in modo dettagliato.

 if statement

La struttura if valuta un’espressione logica ed esegue un gruppo di asserzioni quando l’espressione è 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, o quando n è divisibile per 4. Questo è descritto dal costrutto seguente:

In questo esempio, i tre casi sono mutuamente esclusivi, ma se loro non lo fossero, la prima condizione vera sarebbe 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 è legale 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 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

Molte funzioni sono utili per ridurre i risultati di paragoni tra matrici e condizioni scalari attraverso l’uso dell’IF, includendo le seguenti:

isequal

isempty

all

any

 switch e case

L’asserzione switch esegue gruppi di asserzioni basati sul valore di un variabile o espressione. La keywords case e otherwise delinea i gruppi. Solamente il primo caso è eseguito. Ci deve essere sempre una fine per lo statement switch .

La logica dell’algoritmo delle magic square può essere descritta anche con:

Diversamente dal linguaggio C, lo switch di MATLAB non sbaglia. Se la prima asserzione del case è vera, il restante case statement non è eseguito. Così, break statement non sono richiesti.

 for statement

Il loop for ripete un gruppo di asserzioni un numero fisso di volte . Un END statement termina le asserzioni.

for n = 3:32

r(n) = rank(magic(n));

end

r

Il punto e virgola che termina l’asserzione sopprime la stampa ripetuta, e il termine r dopo il loop espone il risultato finale. E' una buona idea per ordinare i loop al fine di una discreta leggibilità, identare il testo ad esempio:

 while statement Il ciclo while ripete un gruppo di asserzioni un numero indefinito di volte attraverso il controllo di una condizione logica. Un END delinea le asserzioni. Di seguito è riportato un programma completo, illustrando while, if, else, e end, il quale programma utilizza il metodo della bisezione per trovare uno zero di un polinomio.

Il risultato è la radice del polinomio x3 - 2x - 5 vale a dire:

x = 2.09455148154233

 break statemant L’asserzione break lascia che si esca velocemente da un loop FOR o WHILE.In un ciclo innestato,break esce dal ciclo interno solamente .Qui c’è un miglioramento sull’esempio fornito nella sezione precedente.

G. Ciaburro

PerformanceTrading.it ed il suo contenuto sono di esclusiva proprietà degli autori. E' vietata la riproduzione anche parziale di qualsiasi parte del sito senza autorizzazione, compresa la grafica e il layout. Prima della consultazione del sito leggere il disclaimer nella sezione [info].