Sei sulla pagina 1di 19

Panoramica su Matlab – 1 –

Per capire come funziona Matlab proviamo ad inserire qualche semplice comando.

>> 8/10

ans =

0.8000

In questo modo potete utilizzare Matlab come una calcolatrice (sessione interattiva).
Matlab assegna il risultato ad una variabile temporanea chiamata ans. Una variabile
non è altro che un simbolo utilizzato per contenere un valore. Potete infatti utilizzare
La variabile ans per eseguire altri calcoli, ad esempio:

>> 5*ans

ans =

4
Panoramica su Matlab – 2 –
Le variabili possono essere utilizzate anche per scrivere delle espressioni matematiche
E come vedremo nel corso delle esercitazioni questo è un grande vantaggio.
Ad esempio il conto mostrato in precedenza poteva essere inserito in questo modo:

>> r=8/10

r=

0.8000

In Matlab inoltre sono presenti funzioni interne utili per i conti tra le quali:

sqrt(x) => restituisce il valore della radice quadrata di x


exp(x) => calcola ex
log(x) => calcola il logaritmo naturale di x
log10(x) => calcola il logaritmo in base 10 di x
cos(x) => calcola il coseno di x (funz. Inversa acos(x))
sin(x) => calcola il seno di x (funz. Inversa asin(x))
tan(x) => calcola la tangente di x (funz. Inversa atan(x))
Etc….
Panoramica su Matlab – 3 –

Una cosa molto importante da sottolineare è che in Matlab tutte le variabili devono
iniziare con una lettera e non possono essere più lunghe di 32 caratteri. Inoltre Matlab
tratta in modo diverso i caratteri maiuscoli da quelli minuscoli (case sensitive). Per
esempio i seguenti nomi identificano variabili differenti:

speed, Speed, SPEED, Speed_1, Speed_2

In Matlab esistono delle costanti predefinite alcune delle quali sono riportate nella tabella:

Nome Descrizione
ans Variabile che contiene l’ultimo risultato
eps Specifica la precisione dei numeri decimali
i ,j Unità immaginaria 1
Inf Infinito ()
NaN Indica un risultato numerico indefinito
pi Il numero 
Panoramica su Matlab – 4 –
Finora abbiamo utilizzato Matlab come fosse una calcolatrice programmabile.
Ora vediamo più in dettaglio quali siano i vantaggi di questo programma. Uno dei suoi
punti di forza è la capacità di raccogliere molti numeri in strutture chiamate array come
se fossero una sola variabile.
Un array numerico è una raccolta ordinata di numeri. Un esempio di array è quello che
contiene i numeri 0 1 3 6 in questo ordine.
Per definire un array nel Matlab utilizziamo la seguente sintassi:

>> x=[0 1 3 6] oppure >> x=[0,1,3,6]

Notate che se costruissimo l’array y=[6,3,1,0] questo è diverso dal precedente perché
gli elementi sono ordinati in modo differente.

E’ possibile sommare i due precedenti array per ottenerne un terzo con la semplice
istruzione:

>> z = x + y

z=

6 4 4 6
Panoramica su Matlab – 5 –

Se gli elementi di un array sono intervallati in modo regolare non è necessario digitarli
tutti; basta digitare il primo numero, l’incremento costante fra i vari numeri e l’ultimo di
questi (questi tre valori devono essere separati da due punti ‘:’). Per esempio i numeri
0, 0.1, 0.2, ….., 10 possono essere assegnati alla variabile u con il seguente comando:

>> u = [0:0.1:10]

Se poi volessimo calcolare il seno di tutti questi numeri in Matlab basta scrivere la
semplice formula:

>> w = sin(u)

Questo è un semplice esempio della capacità di Matlab di eseguire molti calcoli con
pochi comandi.
I precedenti esempi in molti altri linguaggi di programmazione non sarebbero stati così
semplici e avrebbero richiesto una serie di istruzioni.
Grazie a questa semplicità di gestione degli array i programmi Matlab sono
estremamente semplice e quindi di più semplice gestione.
Panoramica su Matlab – 6–
In Matlab esistono operazioni che permettono di lavorare direttamente sugli elementi
degli array. Queste si chiamano operazioni “elemento per elemento”.

Simbolo Operazione Forma Esempio


+ Somma Array-Scalare A+b [6, 3] + 2 = [8, 5]
- Sottrazione Array-Scalare A–b [8, 3] – 5 = [3, -2]
+ Somma di Array A+B [6, 5] + [4, 8] = [10, 13]
- Sottrazione di Array A–B [6, 5] - [4, 8] = [2, -3]
.* Moltiplicazione di Array A .* B [3, 5] .* [4, 8] = [12, 40]
./ Divisione di Array A ./ B [2, 5] ./ [4, 8] = [2/4, 5/8]
.^ Elevamento a potenza di Array A .^ B [3, 5] .^ 2 = [3^2, 5^2]
2 .^ [3, 5] = [2^3, 2^5]
[3, 5] .^ [2, 4] = [3^2, 5^4]
Panoramica su Matlab – 7 –
Finora abbiamo operato con array monodimensionali o vettori; tutte le operazioni
viste e altre possono essere fatte sulle matrici. Il metodo più facile per creare una
matrice è quello di digitarne le righe una dopo l’altra separando gli elementi di ogni
singola riga con uno spazio (o una virgola) e le righe con un punto e virgola.

>> A = [2, 4, 10; 16, 3, 7]

A=

2 4 10
16 3 7

Lo stesso risultato lo si ottiene con il seguente comando:

>> B = [2, 4, 10
16, 3 , 7]

B=

2 4 10
16 3 7
Panoramica su Matlab – 8 –

L’addizione e la sottrazione delle matrici sono identiche a quelle degli array. Gli
elementi corrispondenti delle matrici vengono sommati o sottratti. La moltiplicazione
e la divisione invece sono diverse dalle corrispondenti operazioni con gli array.

Moltiplicazione di vettori.

Il prodotto di un vettore riga u ed un vettore colonna w è uno scalare che è la somma


dei prodotti degli elementi corrispondenti dei vettori:

[]
w1
[ u1 u2 u3 ] w 2 =u1⋅w1u 2⋅w 2 u 3⋅w 3
w3
Panoramica su Matlab – 9 –
Matlab dispone di molte funzioni che permettono di creare agevolmente dei
diagrammi di vari tipi (lineari, logaritmici, a superficie, a contorno e così via). Come
semplice esempio supponiamo di rappresentare graficamente la funzione y = sin(2x)
per x compreso tra 0 e 10. Un incremento pari a 0.01 consente di generare molti
valori di x, che permettono di tracciare una curva più regolare. La sessione è la
seguente:
>> x = [0:0.01:10];

>> y = sin(2*x);

>> plot(x,y)
Panoramica su Matlab – 10 –
Per assegnare dei nomi agli assi dobbiamo aggiungere alla funzione plot, che ci
permette di ottenere il grafico le due seguenti opzioni:

>> x = [0:0.01:10];

>> y = sin(2*x);

>> plot(x,y) ,xlabel('x'),ylabel('sin(2x)')


Panoramica su Matlab – 11 –
La modalità interattiva di Matlab è molto utile quando per risolvere problemi semplici,
mentre i problemi più complessi richiedono l’impiego dei file script. Un file script è un file
in cui vengono specificati una serie di comandi che il programma deve eseguire ed in
questo senso può essere considerato come un “programma per computer”.
La potenza di Matlab è accresciuta dal fatto che in questi programmi possono essere
utilizzate funzioni “in grado di prendere decisioni”.
Di seguito analizzeremo le principali strutture che possono essere utilizzate nei file
script.
Operatori relazionali.

Matlab dispone di 6 operatori relazionali che consentono di confrontare variabili ed


array. Questi operatori sono:
Operatore relazionale Significato
< Minore
<= Minore o uguale
> Maggiore
>= Maggiore o uguale
== Uguale
~= Diverso (il simbolo ~ si ottiene tenendo premuto Alt e digitando 126 sul tastierino
numerico)
Panoramica su Matlab – 12 –
La prima cosa da notare è che il simbolo di uguaglianza è formato da due segni uguale
(= =), mentre il singolo segno di uguale rappresenta l’operatore di assegnazione.
Il risultato di un confronto effettuato con gli operatori relazionali può essere 0 (il
confronto è falso) o 1 (il confronto è vero).
Per esempio se x = 2 e y = 5, digitando z = x < y, si ottiene z = 1, mentre digitando
u = x == y si ottiene u = 0. Per agevolare la lettura delle istruzioni è conveniente usare
le parentesi tonde.
Gli operatori relazionali quando vengono applicati agli array mettono a confronto i singoli
Elementi di un array con i corrispondenti elementi di un secondo array. Proprio per
questo fatto gli array da confrontare devono avere le stesse dimensioni.

Istruzioni condizionali.

Le istruzioni condizionali di Matlab ci permettono di scrivere programmi in grado di


prendere delle decisioni. Le istruzioni condizionali contengono una o più istruzioni
if (se), else (altrimenti) ed elseif (altrimenti se).
L’istruzione end denota la fine di un’ istruzione condizionale.
Panoramica su Matlab – 13 –
Istruzione if

La forma di base dell’istruzione if è la seguente:

if espressione logica

istruzioni
end

Uno spazio deve separare la parola chiave if dall’espressione logica, che può essere
uno scalare, un vettore o una matrice.

if x >= 0

y = sqrt(x)

end

Se il valore di x è negativo il programma non esegue l’istruzione specificata.


Panoramica su Matlab – 14 –
L’espressione logica può essere un’espressione composta; le istruzioni possono
essere formate da un singolo comando o da una serie di comandi separati da una
virgola o da un punto e virgola, come illustrato di seguito:

z = 0; w = 0;
if (x > 0) & (y > 0)
z = sqrt(x) + sqrt(y)
w = log(x) – 3*log(y)
end

I valori di z e w vengono calcolati soltanto solo se entrambi i valori di x ed y non sono


negativi, altrimenti w e z mantengono i loro valori nulli. Potremmo “annidare” le
istruzioni if, come mostrato di seguito:

if espressione logica 1
istruzioni del gruppo 1
if espressione logica 2
istruzioni del gruppo 2
end
end
Panoramica su Matlab – 15 –

Istruzione else

Quando un processo decisionale comporta più azioni è possibile utilizzare le istruzioni


else ed elseif con l’istruzione if. La struttura di base dell’istruzione è:

if espressione logica
istruzioni del gruppo 1
else
istruzioni del gruppo 2
end

Per esempio supponete che y = x1/2 per x >= 0 e y = ex – 1 per x < 0. Le seguenti
istruzioni calcolano il valore di y:

if x >= 0
y = sqrt(x)
else
y = exp(x) – 1
end
Panoramica su Matlab – 16 –

Istruzione elseif

La struttura di base dell’istruzione è:

if espressione logica 1
istruzioni del gruppo 1
elseif espressione logica 2
istruzioni del gruppo 2
end

Per esempio supponete che y = ln(x) per x >= 5 e y = x1/2 per 0 <= x < 5. Le seguenti
istruzioni calcolano il valore di y:

if x >= 5
y = log(x)
elseif x >= 0
y = sqrt(x)
end
Panoramica su Matlab – 17 –

Cicli

Un ciclo o loop è una struttura che permette di ripetere i calcoli un certo numero di
volte. Ogni ripetizione del ciclo si chiama passaggio. Matlab dispone di due tipi di cicli
espliciti: il ciclo for, che viene utilizzato quando il numero di passaggi è noto in anticipo,
ed il ciclo while, che termina quando è soddisfatta una particolare condizione e, quindi,
il numero di passaggi non è noto in anticipo.

Il ciclo for

Ecco un semplice esempio di ciclo for:

for k = 5:10:35
x = k^2
end

La variabile di ciclo k è inizialmente pari a 5; il valore di x viene calcolato mediante la


formula x = k^2. Ogni passaggio del ciclo incrementa k di 10 e calcola x finché k non
supera 35. Il programma poi passa ad eseguire le istruzioni che si trovano dopo
l’istruzione end.
Panoramica su Matlab – 18 –

La tipica struttura del ciclo for è:

for variabile di ciclo = m:s:n


istruzioni
end

L’espressione m:s:n assegna il valore iniziale m alla variabile di ciclo, che viene poi
incrementata del valore s.
E’ possibile anche annidare i cicli for e le istruzioni condizionali.

Il ciclo while

Il ciclo while si usa quando non si conosce in anticipo il numero di passaggi da


effettuare: l’elaborazione del ciclo termina quando è soddisfatta una determinata
condizione. Ecco un semplice esempio di ciclo while:

x = 5;
while x < 25
x = 2*x – 1;
end
Panoramica su Matlab – 19 –

La tipica struttura del ciclo while è:

while espressione logica


istruzioni
end

Matlab prima verifica se l’espressione logica è vera; in questa espressione deve essere
inserita una variabile di ciclo. Per esempio, x è la variabile di ciclo nell’istruzione x < 25.
Se l’espressione logica è vera, le istruzioni vengono eseguite. Affinchè il ciclo while
possa operare correttamente, devono verificarsi due condizioni:

1. La variabile di ciclo deve avere un valore prima che venga eseguita


l’istruzione while;
2. La variabile di ciclo deve essere modificata in qualche maniera dalle
istruzioni.