Sei sulla pagina 1di 31

Riferimenti bibliografici

Guida per lutente (http://www.mathworks.com)


G. Naldi, L. Pareschi, Matlab concetti e progetti,
Apogeo ed.
Tutorials e programmi disponibili in rete:

Introduzione allambiente
Matlab

http:// www.dti.supsi.ch/~bucher/matlab.pdf
http://www.dm.unibo.it/ /~guerrini/html/matlab.html
http:// www.dm.unibo.it/ /~guerrini/html/primer.ps

Lucidi delle lezioni nella pagina web del corso


Introduzione Matlab

Carla Guerrini

Introduzione Matlab

Che Cosa MATLAB

Carla Guerrini

Cos Matlab?
La struttura di base la matrice per la quale
sono gi predefinite numerosi tipi elementari
(identit, matrice nulla, matrice unit,..) funzioni
algebriche e di manipolazione
Matlab fa largo uso di librerie di calcolo (in
particolar modo di algebra lineare) per risolvere
problemi numerici al calcolatore
E uno dei programmi scientifici di maggior
diffusione, usato nella ricerca e per il calcolo
tecnico e scientifico

Matrix Laboratory un ambiente di


calcolo sviluppato per gestire oggetti di
tipo matrice
E' un ambiente di calcolo scientifico con
routines altamente specializzate
E' un ambiente grafico
E' un linguaggio di programmazione
Introduzione Matlab

Carla Guerrini

Introduzione Matlab

Carla Guerrini

Per iniziare.

Command Window

Per lanciare Matlab (in ambiente Windows)


sufficiente cliccare col mouse sullicona
corrispondente
Allavvio appare il Desktop di Matlab che
contiene le finestre:
dei comandi (command window)
dello spazio di lavoro (workspace window)
della directory corrente (current directory)
della storia dei comandi (command history)
Per terminare la sessione di lavoro basta
digitare il comando quit dal prompt
Introduzione Matlab

Carla Guerrini

Nella command window vengono digitati i


comandi Matlab
valutazione di unespressione
assegnazione di un valore ad una variabile
esecuzione di una funzione

..
Le istruzioni vengono immesse dal
prompt (seguite da invio) ed eseguite una
ad una
5

Introduzione Matlab

Le istruzioni elementari

Carla Guerrini

Workspace window

Matlab come calcolatrice


>> 2+3
ans =
5
Assegnazione del valore 3 alla variabile a:
>> a = 3
a=
3
Valutazione di unespressione
>> b=a*2
b=
6

Introduzione Matlab

Carla Guerrini

La finestra workspace elenca le variabili presenti nello


spazio di lavoro insieme ad alcune informazioni su di
esse (dimesioni,tipo, memoria occupata,..)

E possibile modificare il valore di una variabile


utilizzando lapposito workspace array editor

Introduzione Matlab

Carla Guerrini

Come ottenere aiuto

Command History/Current Directory

Con il comando help (help in linea di comando)


>> help sin
SIN Sine.
SIN(X) is the sine of the elements of X.
Dal menu Help
Help Window: lhelp che si pu ottenere da linea
di comando messo sotto forma di finestra grafica
di pi agevole consultazione
Help Desk: Un help in HTML molto completo e
di facile navigazione fornito anche di svariati
esempi

La finestra Command History contiene una lista dei


comandi digitati con funzioni di copia ed incolla
Tramite la finestra Current Directory possibile
spostarsi tra le cartelle come con un qualsiasi File
Maneger

Introduzione Matlab

Carla Guerrini

Introduzione Matlab

Le informazioni e la memoria

>> dir - visualizza il contenuto della


directory corrente
>> what visualizza i files di tipo Matlab
nella directory corrente
>> cd permette di spostarsi nellalbero
delle directory
>> pwd ritorna la directory corrente
>> type nomefile visualizza il contenuto
del file

Il nome, che la identifica.


Il valore, cio il dato che essa rappresenta e che
viene memorizzato nella RAM.

Carla Guerrini

10

Gestione dei files

Le informazioni (dati in forma numerica o


alfanumerica)vengono memorizzati nella RAM
utilizzando quelle che vengono chiamate nei
linguaggi di programmazioni variabili
Una variabile ha due caratteristiche:

Introduzione Matlab

Carla Guerrini

11

Introduzione Matlab

Carla Guerrini

12

Le variabili in Matlab

Matlab lavora tramite espressioni, convertendole in variabili


In Matlab qualsiasi dato trattato come una variabile
Per introdurre una variabile basta assegnarle un nome e un valore

>> a=5-2
a=
3

>> 5-2
ans =

Le variabili in Matlab (II)

>> b=7;
3

Matlab crea automaticamente le variabili nel momento in


cuisono definite come termini alla sinistra di
unuguaglianza(ASSEGNAZIONE DI UNA VARIABILE)
Introduzione Matlab

Carla Guerrini

13

Le variabili Matlab (III)

>>who
Your variable are:
abc
Il comando whos d maggiori informazioni sulle variabili in memoria
Il comando clear cancella il contenuto del workspace
Il comando clear seguito dai nomi di alcune variabili (non separati dalla
virgola) cancella soltanto quelle variabili
>> clear

>> clear a b
Carla Guerrini

Introduzione Matlab

Memoria:
>>base=3; altezza=5;
>> base*altezza
ans=
15

Carla Guerrini

14

Le variabili Matlab (IV)

Matlab memorizza tutte le variabili definite durante la sessione di lavoro


Linsieme delle variabili attive costituisce il workspace di Matlab
Il comando who elenca tutte le variabili nel workspace

Introduzione Matlab

Variabile: nome associato ad


una cella di memoria utilizzata
per contenere dati
Ogni volta che si utilizza un
nuovo identificatore
assegnandogli un valore, viene
associata al nome
dellidentificatore un insieme di
celle di memoria contenente
un dato dello stesso tipo del
valore assegnato
Se il dato di tipo numerico
(intero o reale) ogni cella
occupa 8 bytes di memoria

15

I nomi delle variabili possono essere lunghi al


massimo 63 caratteri
Sono nomi ammissibili di variabili tutte le
sequenze di caratteri
contenenti lettere, numeri e il carattere _
(underscore)
Matlab fa distinzione fra lettere maiuscole e
minuscole
Il primo carattere deve essere una lettera
Non possono coincidere con le parole
riservate. Per controllare se un nome una
Introduzione Matlab
Carla Guerrini
parola riservata, vedere
il comando iskeyword 16

Variabili predefinite

Tipi di variabili

ans most recent answer


eps accuratezza relativa per i numeri in doppia precisione. Ritorna
la distanza fra 1.0 e il numero (> di 1.0) pi vicino ad 1.0.
Viene usato come tolleranza in molte funzioni numeriche.
pi
i,j unit immaginaria
NaN Not-a-Number (lespressione calcolata non un numero
macchina, si ottiene come risultato di operazioni aritmetiche
indefinite, ad esempio la divisione 0/0)
inf,-inf si ottengono per overflow, underflow o divisione per zero
version Versione di Matlab

Tipi interi definiti in Matlab:


int8, int16, int32, int64 (interi con segno)
uint8, uint16, uint32, uint64 (interi senza segno)
Tipi floating point : Single (32 bits), double (64bits)
ATTENZIONE! Le operazioni aritmetiche vengono eseguite
solo fra elementi double. Per fare delle operazionimatematiche
su dati interi o in singola precisione, si devono convertire in
doppia precisione usando la funzionedouble.

Introduzione Matlab

Introduzione Matlab

Carla Guerrini

17

>>s=3 ; us=uint8(s);
>>us+4
??? Error using +
Function '+' is not defined for
For values of class uint8

I dati di tipo logical possono avere due


valori:
vero corrispondente al valore 1
falso corrispondente al valore 0
I dati di tipo char contengono dati di tipo
carattere.

Carla Guerrini

18

Formati di visualizzazione delle


variabili

Tipi di Variabili

Introduzione Matlab

Carla Guerrini

Matlab di deafult visualizza una variabile numerica con 4 cifre decimali:

>>pi
ans=
3.1416

Per modificare il formato di visualizzazione, Sintassi del comando:


>> format tipoformato

>> format long


>>pi
ans=
3.14159265358979
19

Introduzione Matlab

Carla Guerrini

20

Formato di visualizzazione

Introduzione Matlab

Carla Guerrini

21

Introduzione Matlab

Tutte le variabili sono array (matrici)


Un array una struttura dati, cio memorizza piu dati allinterno di una
struttura identificata da un singolo nome
Un array ha due dimensioni: la prima dimensione rappresenta il numero
di righe, la seconda il numero di colonne

Costruzione di un array
Indicizzazione di un array
Operazioni array-scalari
Operazioni array-array
Funzioni di manipolazione degli array.
Array e utilizzo della memoria.

Scalare: array 1 x 1
Vettore riga: array 1 x n
Vettore colonna: array n x 1
Matrice: array n x m

Carla Guerrini

22

Array

Array

Introduzione Matlab

Carla Guerrini

23

Ogni elemento dellarray estratto specificando lindice dellelemento


dallinizio dellarray

Introduzione Matlab

Carla Guerrini

24

Esempi di costruzione di un array

Array: vettore o matrice


Vettore riga
1x4

V=[1 7 3 5]

Z=[1;4;5;7]

A=[1 9; 5 -3;0.1
0.3]

vettore colonna
4x1

Matrice 3 x 3

Elemento 7 e
individuato dallindice
2: v(2)

Lelemento 5 e
individuato
dallindice 3 : z(3)
Lelemento 0.1 e
individuato dagli indici

(3,1): A(3,1)
Introduzione Matlab

Carla Guerrini

25

>> b=[2 1 5 4]
b=
2154

>> b=[2, 1, 5, 4]
b=
2154

>> b=[2; 1; 5; 4]
b=
2
1
5
Introduzione
Matlab
4

>> b=[2
1
5
4]

Carla Guerrini

26

Costruzione di un array con funzioni Matlab

Costruzione di array:

>> a=[1:2:9]
a=
13579
>> a=[5:-1:1]
a=
54321

Introduzione Matlab

v=[inizio:incremento:fine]

linspace - elementi
equispaziati

>> linspace(0,pi,11)
ans =
Columns 1 through 7
0 0.3142 0.6283 0.9425
1.2566 1.5708 1.8850
Columns 8 through 11
2.1991 2.5133 2.8274
3.1416

>> a=1:5
a=
12345
>> a=[0:0.1:0.3]
a=
0 0.1000 0.2000
0.3000

Carla Guerrini

27

Introduzione Matlab

logspace elementi con


distribuzione logaritmica
>> x=logspace(0,1,10)
x=
Columns 1 through 7
1.0000 1.2915 1.6681
2.1544 2.7826 3.5938
4.6416
Columns 8 through 10
5.9948 7.7426 10.0000

Carla Guerrini

28

Costruzione di un array

Costruzione di array

A partire da altre matrici


Lassegnazione a blocchi analoga a quella per elementi, con la differenza
che ogni elemento introdotto durante lassegnazione pu essere un
array anzich uno scalare

Introduzione Matlab

>> y = [3;4];
B=[1 2; 1 2];
>> C=[y B; 5 6 7]
C= 3 1 2
412
Carla Guerrini
567

29

Funzioni predefinite per generare matrici particolari


eye(n) genera la matrice identit di ordine n, cio la matrice che
ha elementi 1 sulla diagonale principale e 0 altrove
zeros(m,n) genera una matrice m x n con elementi tutti uguali a 0;
fornendo in ingresso un solo elemento n si genera una matrice
quadrata n x n
ones(m,n) analogo a zeros, ma tutti gli elementi della matrice
generata sono uguali a 1
diag(v) crea una matrice diagonale con il vettore v sulla diagonale
Si veda help elmat

Introduzione Matlab

Carla Guerrini

30

Introduzione Matlab

Carla Guerrini

32

Indicizzazione di array
Dato un vettore riga o colonna:
Il singolo elemento del vettore si individua indicando lindice fra
parentesi tonda: v(4)
Una porzione dellarray si individua indicando gli indici del primo e
ultimo elemento da considerare: v(2:4)
Data una matrice A m x n:
Per individuare il singolo elemento si usano due indici, il primonriferito
alla riga e il secondo alla colonna
Per ogni dimensione della matrice valgono le regole di
indicizzazione viste per i vettori
Per individuare un blocco di tutti gli elementi di una dimensione
si usa la notazione :
Usando un solo indice si fa riferimento alla matrice come
array di colonne
Introduzione Matlab

Carla Guerrini

31

Operatori algebrici

Operazioni elementari array-scalari

E possibile effettuare in modo trasparente tutte le usuali


operazioni elementari (+,-,*,/,^) ben definite tra matrici, vettori e
scalari
Operazioni scalare-scalare
Operazioni array-scalare
Operazioni array-array
Gli operatori algebrici possono essere applicati anche elemento
per elemento ad array delle stesse dimensioni usando la cos
detta sintassi del punto
Valgono le solite regole di precedenza tra gli operatori e nelluso
delle parentesi

Introduzione Matlab

Carla Guerrini

% moltiplicazione di un array per


% uno scalare
>> D=A*b
D=
5 15
20 10
% divisione di un array per uno
% scalare
>> E=A/b
E=
0.2000 0.6000
0.8000 0.4000

A matrice m x n
b scalare 1 x 1

C= A +b
C(i,j)=A(i,j)+b
A=magic(2)
A=
1 3
4 2
>> b=5; C=A+b
C=
6 8
9 7
33

Introduzione Matlab

Carla Guerrini

34

Prodotto fra vettori


Prodotto elemento per elemento
D(i)=A(i)*B(i) per i=14

Prodotto SCALARE
n

Le operazioni elementari + - * si estendo in modo naturale (quando


ben definite!) agli array
Non si estende loperazione / (Il simbolo / risolve un sistema
lineare)
Loperazione ^ definita solo per matrici quadrate

Introduzione Matlab

Carla Guerrini

35

c= A(k)*B(k)
k=1

>> A=[9 3 5 0] % vettore riga (1 x 4)


>> B=[-1 4 3 7 ] % vettore riga (1 x4)
>> c =dot(A*B)
c=
6
% oppure
>>c = A*B
% ove B trasposto di B

Introduzione Matlab

>> D=A.*B
D=
-9 -12 15 0
% i vettori devono avere la stessa
lunghezza

Carla Guerrini

36

Introduzione Matlab

Carla Guerrini

37

Introduzione Matlab

Carla Guerrini

38

39

Introduzione Matlab

Carla Guerrini

40

Operazioni elemento per elemento


Moltiplicazione
.*
Divisione
./
Elevamento a potenza .^

Introduzione Matlab

Carla Guerrini

10

Dimensioni di un array

L'operatore [ ] pu essere usato per concatenare matrici

Data una matrice A m x n ed un


vettore v (riga o colonna) di
dimensione n:
size(A) fornisce le dimensioni
m e n della matrice A .Possiamo
memorizzare il risultato in un
vettore scrivendo:
[m,n]=size(A)
length(v) fornisce la
lunghezza del vettore v
numel(A) restituisce il numero
di elementi di A

Introduzione Matlab

A: crea la matrice trasposta di A


diag(v): crea una matrice diagonale
con il vettore v sulla diagonale
diag(A): estrae la diagonale della
matrice A
tril(A): estrae da la parte triangolare
inferiore
triu(A): estrae da la parte triangolare
superiore
abs(A): produce la matrice dei valori
assoluti degli elementi di A

Carla Guerrini

41

Introduzione Matlab

Carla Guerrini

42

Manipolazione di array
Indirizzamento indiretto
L'indirizzamento indiretto
tramite array numerico (ind)
Estrae gli elementi che
hanno quell'indice numerico

Introduzione Matlab

Carla Guerrini

43

Introduzione Matlab

Carla Guerrini

44

11

Manipolazione di array
L'indirizzamento indiretto tramite
array logico estrae gli elementi
che hanno indice logico =1
(true)
N.B. Il vettore [1 1 0 0 0 1 1] non
equivalente ad un vettore
numerico contenente gli stessi
valori

Introduzione Matlab

Carla Guerrini

45

Manipolazione di array

Carla Guerrini

Carla Guerrini

46

Come salvare il proprio lavoro


Per salvare una cronaca della sessione di lavoro si deve eseguire
all'inizio della sessione stessa il comando diary nomefile.txt
Il file di testo NON permette di recuperare il contenuto delle variabili;
per conservare il contenuto delle variabili si deve invece salvare tutta
l'area di memoria (o parte di essa) con il comando save
Ad esempio:
>> x = 1;
>> a = 3;
>> save areawork
>> save xarea x
I file generati (binari) hanno estensione .mat. Per ricaricarli nello
spazio
di lavoro si usa il comando load:
>> load areawork
>> load xarea

flipud rigira larray dalla prima


allultima riga
fliplr
rigira larray dalla prima

allultima colonna
rot90 ruota larray di 90 gradi in
direzione oraria
reshape cambia la dimensione
dellarray mantenendo il numero
degli elementi.
>>Y= RESHAPE(X,M,N) returns the
M-by-N matrix whose elements
are
taken columnwise from X.
An error results if X does not have
M*N elements.

Introduzione Matlab

Introduzione Matlab

47

Introduzione Matlab

Carla Guerrini

48

12

Funzioni matematiche elementari

help elfun
Funzioni trigonometriche:
cos, cosh
sin, sinh
tan, tanh
sec, sech
csc, csch
cot, coth

Introduzione Matlab

Funzioni matematiche elementari

asb(x) valore assoluto di x


sqrt(x) radice quadrata di x
round(x) arrotonda
allintero pi vicino
fix(x) tronca allintero pi
vicino verso 0
floor(x) arrotonda allintero
pi vicino verso
ceil(x) arrotonda allintero
pi vicino verso
sign(x) segno di x
rem(x,y) resto di x/y
Carla Guerrini

49

Linguaggio di programmazione Matlab


Il linguaggio Matlab
Matlab ha anche un linguaggio
proprio per programmare. E un
linguaggio interpretato e non
compilato. Questo significa che le
istruzioni vengono tradotte in
linguaggio macchina e subito
eseguite una per volta.
Matlab pu essere usato come
libreria di funzioni
(matematiche o grafiche) e/o come
linguaggio di programmazione

Introduzione Matlab

Il linguaggio di Matlab e un
linguaggio case sensitive, cioe
che distingue fra lettere minuscole e
maiuscole.
Il linguaggio di Matlab e un
linguaggio orientato agli oggetti.
Loggetto fondamentale e larray
(matrice).
Gli oggetti e le istruzioni possono
essere organizzati allinterno
di flussi di controllo delle istruzioni.

Carla Guerrini

51

Funzioni esponenziali:
exp, log, log10, log2
pow2, realsqrt, sqrt
Funzioni complesse:
abs, angle, complex, conj, imag, real
Funzioni dell'algebra lineare
det determinante di una matrice
rank rango di una matrice
eig autovalori di una matrice
inv inversa di una matrice

Introduzione Matlab

mean(x) valor medio degli elementi


di x
sum(x) somma degli elementi di x
prod(x) prodotto degli elementi di x

Carla Guerrini

Listruzione di assegnazione
I dati possono essere inseriti in
memoria tramite
loperazione di assegnazione.
Loperazione di assegnazione (fatta
utilizzando il simbolo =)
permette di memorizzare un dato che
puo essere un dato
costante, il contenuto di unaltra
variabile oppure il risultato
di unespressione aritmetica.
Sintassi:
variabile = espressione
>> x=5.4;
>>y=x;
>>z=x+y

Introduzione Matlab

max(x), min(x)
elemento massimo o minimo di un
vettore x. Per una matrice
massimo su riga o colonna

50

Assegnazione di unespressione
aritmetica:
Variabile=espressione
In Matlab tutti i calcoli sono fatti
con valori in doppia precisione
(64 bit)
Sintassi
variabile = espressione
Valore= x+2-(y*4)/(x^2)

Carla Guerrini

52

13

Operatori relazionali fra array (III)


Operatori relazionali:
< minore
<= minore o uguale
> maggiore
>= maggiore o uguale
= = uguale
~= diverso
Gli operatori relazionali operano
elemento per elemento dellarray e
restituiscono un valore logico:
vero(1) oppure falso (0).

Introduzione Matlab

Operatori relazionali fra array (II)


Possono essere utilizzati per
confrontare due array della stessa
dimensione oppure un array e uno
scalare.
>> X = 5; X >= [1 2 3; 4 5 6; 7 8 10]
ans =
111
110
000
>> X = 5*ones(3,3); X >= [1 2 3; 4 5
6; 7 8 10]
ans =
111
110
000

Carla Guerrini

53

Introduzione Matlab

Introduzione Matlab

Carla Guerrini

54

Controllo del flusso delle istruzioni

Operatori logici agiscono elemento per elemento


Operatore AND : & restituisce
un valore logico vero (1)
oppure falso (0)
>>A = [0 1 1 0 1];
>> B = [1 1 0 0 1];
>>A&B
ans =
0 1 0 0 1
% Returns 1 for every element
location that is true (nonzero)
in both array and 0 for all
other elements.

N.B. I sim boli = e = = hanno due significati diversi:


= assegna un valore ad una variabile
==
confronta il valore di due valori e ritorna 1 (vero) oppure 0
(falso)
N.B. Il confronto di uguaglianza fra due variabili di tipo
floating point (reali) sconsigliato.
Esempio:
>> x=(-0.08+0.5-0.42)==(0.5-0.42-0.08)
x=
0

Operatore OR: |
>> A|B
ans =
1 1 1 0 1
% Returns 1 for every element location
that is true (nonzero) in either one or

Ciclo for
Ciclo while
Costrutto if else
Costrutto switch

the other, or both arrays, and 0 for


all other elements.
xor(A,B)
ans =
1 0 1 0 0
% Returns 1 for every element
location that is true (nonzero) in
only one array, and 0 for all other
elements.

Carla Guerrini

55

Introduzione Matlab

Carla Guerrini

56

14

Istruzione FOR

Ciclo FOR
Formato

for variable = initval:endval


statement
...
statement
end

Introduzione Matlab

i=0;
for n=(1:10)'
i=i+1;
x(n)=sin(n*pi/10);
end
plot(n,x)

% Esempio: generazione della


% matrice di Hilbert di ordine 10
N=10;
for R = 1:N
for C = 1:N
A(R,C) = 1/(R+C-1);
end
end

Carla Guerrini

_________________________
Esempio di codice vettoriale
il ciclo for viene eseguito 1 sola volta
>>i
ans=
1

57

Istruzione FOR

Introduzione Matlab

i=0;
for s = 1.0: -0.1: 0.0
y=exp(s);
plot(s,y,'o')
hold on
i=i+1;
end
_________________________
Nellesempio le 4 istruzioni dentro il
ciclo for sono ripetute 11 volte
>>i
ans=
11

Carla Guerrini

58

Esempio: Calcolo exp(x) per x=0,0.1,0.2,.......5

I cicli for si possono annidare, ma molto spesso non


sono il modo piu' efficiente di programmare perch
non consentono la vettorizzazione del codice

Introduzione Matlab

Carla Guerrini

59

Introduzione Matlab

Carla Guerrini

60

15

Struttura condizionale

Introduzione Matlab

Carla Guerrini

While

61

While (II)

Introduzione Matlab

Carla Guerrini

62

Break - Continue
L'istruzione break pu essere utilizzato solo entro un ciclo for o while
permette di terminare l'esecuzione. Quando viene incontrata
l'istruzione break, Matlab salta alla prima istruzione successiva al
end del ciclo in cui compare ( for o while).

CONTINUE passa il controllo all iterazione successiva del FOR o


del WHILE loop saltando tutte le istruzioni rimanenti che compaio
allinterno del loop.
RETURN ritorna alla function chiamante
_________________________________________________________

Il ciclo a sinistra termina quando lutente inserisce un numero maggiore di 5


nel ciclo a destra non ce lopportunita di modificare il contenuto della variabile a
Introduzione Matlab

Carla Guerrini

63

function d = det(A)
%DET det(A) is the determinant of A.
if isempty(A)
d = 1;
return
else
...
end
Introduzione Matlab
Carla Guerrini

64

16

Struttura selezione

If ...........else
Espressione: contiene
un valore logico

Se = 1 vengono
eseguiti i comandi sino a
else
Se =0 vengono eseguiti i
comandi dopo l'else

Introduzione Matlab

Carla Guerrini

65

Introduzione Matlab

Carla Guerrini

66

67

Introduzione Matlab

Carla Guerrini

68

IF.ELSEIF..ELSE.. END
Se condizione1 vera
Se condizione 2 e' vera
Istruzione 1
Altrimenti
Istruzione 2
Altrimenti
Istruzione 3

Introduzione Matlab

Carla Guerrini

17

Esempi
% Ricerca del massimo fra 3 numeri
disp(inserisci 3 numeri)
a=input(inserisci 1 numero )
b=input(inserisci 1 numero)
c=input(inserisci un numero)
if a>b
if a>c
massimo=a;
else
massimo=c;
end
elseif b>c
massimo=b;
else
massimo=c;
end
disp('il massimo fra i tre
numerica calcolate e"
'),massimo

Introduzione Matlab

SWITCHEND

% Ordinamento di 3 numeri
disp(inserisci 3 numeri)
a=input(inserisci 1 numero )
b=input(inserisci 1 numero)
c=input(inserisci un numero)

SWITCH
Switch tra svariate possibilita secondo il valore dellespressione.
La forma generale e:
SWITCH switch_expr
CASE case_expr,
statement, ..., statement
CASE {case_expr1, case_expr2, case_expr3,...}
statement, ..., statement
...
OTHERWISE,
statement, ..., statement
END
Le istruzioni seguenti il primo CASE ove la switch_expr coincide con case_expr
sono eseguite. Quando case_expr e un cell array (nel secondo caso sopra)
case_expr coincide se un qualsiasi elemento del cell array coincide con switch_expr
Se nessuna delle case_expr coincide con switch_expr allora viene eseguito
OTHERWISE case (se esiste), solo un caso viene eseguito e il calcolo continua dopo
lEND

if a>b
if b>c
ordina=[a,b,c];
elseif c>a
ordina=[c,a,b]
else
ordina=[a,c,b]
end
else
if b>c
if a>c
ordina=[b,a,c];
else
ordina=[b,c,a];
end
else
ordina=[c,b,a];
end
disp('ordine decrescente dei tre
numeri'), ordina
disp('ordine crescente dei tre
Carla Guerrini numeri'),fliplr(ordina)

69

Introduzione Matlab

Carla Guerrini

70

ESEMPIO SWITCH..END

Operazioni sui singoli elementi di un array

% listruzione lower(stringa)

method = 'Bilinear';
switch lower(method)
case {'linear','bilinear'}
disp('Method is linear')
case 'cubic'
disp('Method is cubic')
case 'nearest'
disp('Method is nearest')
otherwise
disp('Unknown method.')
end

% converte il contenuto di
% stringa in caratteri minuscoli

>>Method is linear
Introduzione Matlab

Carla Guerrini

71

Esempio 1: somma degli elementi


di un vettore di n componenti
>>Somma=0;
>>for i=1:n
somma=somma+v(i);
end
Esempio 2: moltiplicazione degli
elementi di un vettore di n
componenti
prodotto=1;
for i=1:n
prodotto=prodotto*v(i);
end
Introduzione Matlab

Istruzioni equivalenti:
>> somma=sum(v)
>> prodotto=prod(v)
Esempio 3:
>> A=hilb(2)
A=
1.0000 0.5000
0.5000 0.3333
>> sum(A)
ans =
1.5000 0.8333
>> prod(A)
ans =
0.5000 0.1667
% Nel caso di matrici la somma e il
prodotto viene eseguito sui vettori
colonna che compongono la matrice per
cui viene restituito un vettore riga

Carla Guerrini

72

18

Programmi Matlab: M-file


I programmi Matlab sono detti Mfile e sono file di testo che
vanno memorizzati con estensione
.m (da cui il nome M-file)
Matlab dispone di un editor a cui si
accede mediante il pulsante
FILE new-mfile
Si possono creare due tipi di file
matlab: SCRIPT file e
FUNCTION file

Introduzione Matlab

Script M-file (I)


Uno script un file di testo dove
ogni riga contiene una (o pi di
una) istruzione Matlab
Per far eseguire lo script si
scrive al prompt il nome del file,
senza lestensione .m, e si preme
il tasto Invio
Matlab esegue automaticamente
le righe del file dalla prima
allultima come se fossero state
introdotte, in quellordine,
manualmente dal prompt
LM-file deve essere contenuto
nella directory corrente (oppure
deve essere nel Matlabpath cio
la lista delle directory utilizzate
da Matlab per il suo percorso di
ricerca...)

Carla Guerrini

M-file script puo contenere:


Istruzione di assegnazione
Istruzioni di ingresso/uscita (lettura/scrittura)
Espressioni aritmetiche, calcoli
Chiamate ad altre funzioni
Commenti
Linee bianche
Comandi per la costruzione di grafici
Pause: lesecuzione si arresta finch non si digita un
char da tastiera
Pause(n) per n secondi arresta lesecuzione
Keyboard passa il controllo alla tastiera k>> sino al
return
Echo srive nel command window le istruzioni che ve
si stanno eseguendo
Break interrompe lesecuzione dello script

M-file function
Con questa struttura posso costruire delle
nuove funzioni/istruzioni Matlab
possono accettare argomenti in ingresso

possono restituire argomenti in uscita

possiedono variabili interne che hanno


visibilit locale

possono essere richiamate da un altro


programma (sono sottoprogrammi) o
direttamente dalla finestra comandi

Le variabili utilizzate dentro un M-file script


sono globali compaiono nel work-space

73

Introduzione Matlab

Carla Guerrini

74

Introduzione Matlab

Carla Guerrini

76

Istruzioni di Input - Output


Qualunque programma deve comunicare con lesterno per avere dati
su cui lavorare e fornire i risultati prodotti
La forma pi semplice di Input/Output avviene attraverso il terminale
del programmatore: lettura da tastiera e scrittura su video.
I dati possono essere ricevuti dallesterno tramite unistruzione di
ingresso
Listruzione di ingresso permette di memorizzare un dato introdotto
dallesterno (solitamente attraverso tastiera) Viene detta quindi
unoperazione di input
Sintassi : variabile= input( testo commento)
La funzione input mostra in output sullo schermo il testo testo
commento e attende che venga digitato un valore da assegnare
alla variabile variabile
Notare che il testo inserito fra
Di default input restituisce un valore numerico, per inserire una stringa
occorre un ulteriore parametro:
>> nome=input(Scrivi il tuo nome , s)
Introduzione Matlab

Carla Guerrini

75

19

I dati possono essere trasferiti dalla memoria allesterno durante


lesecuzione di un programma tramite unistruzione di uscita
Listruzione di uscita permette di visualizzare sullo schermo un
dato contenuto in una cella di memoria
Viene detta quindi unoperazione di output
Una funzione di output utilizzata in Matlab e la funzione disp
Sintassi: disp(testo);
mostra in output sullo schermo il testo testo
Sintassi: disp(x)
mostra in output sullo schermo larray x
Listruzione di uscita
Disp

Prende come ingresso stringhe o matrici.


>> disp('Il mio colore preferito il rosso')
disp ha un solo argomento costituito da una stringa. Quindi se ci
sono messaggi che contengono delle varibili, queste devono essere
combinate in una singola stringa.
>> nome=input('Scrivi il tuo nome ','s')
>> disp(['Il mio nome ',nome])
Introduzione Matlab

Carla Guerrini

77

Per le variabili numeriche si usa la funzione


num2str:
>> x=123.76
>> outstring=['x = ', num2str(x)]
>> disp(outstring)
Se i dati sono costituiti da pi array diversi,
devono essere combinati in una singola matrice:
>> x=0:pi/5:2*pi;
>> y=sin(x);
>> disp([x' y'])
Ricordiamo che:

E possibile visualizzare il valore di una variabile


OMETTENDO il ; alla fine dellistruzione che
calcola (o assegna) Carla
la variabile
stessa
Guerrini

Introduzione Matlab

78

Help
I commenti sono parole inserite dal programmatore per dare
informazioni che rendano pi comprensibile il programma
I commenti iniziano con % e terminano con la fine della riga; se i
commenti occupano pi righe occorre mettere il % allinizio di
ciascuna riga
Sono ignorati durante lesecuzione del programma
Sintassi:
% parole di commento.....
La punteggiatura
Il simbolo ; alla fine di un comando sopprime la visualizzazione
delloutput del comando
Due o piu comandi possono essere scritti sulla stessa riga separati da
,o;

Introduzione Matlab

Carla Guerrini

79

matlab\elmat - Elementary matrices and


matrix manipulation.
matlab\graph2d - Two dimensional graphs.
matlab\graph3d - Three dimensional graphs.
matlab\elfun - Elementary math functions.

Introduzione Matlab

Carla Guerrini

80

20

Riga di definizione:

La prima riga di intestazione definisce il nome della function il numero e lordine delle variabili
in ingresso e uscita

function[lista variabili output] = nome_function(lista variabili input)

le variabili di input contengono le informazioni da utilizzare nella funzione


Vanno separate da una virgola e sono contenute fra ( )
le variabili di output contengono i risultati della funzione
Vanno separate da una virgola e sono contenute fra [ ]
una sola variabile in uscita x: [output] x
pi variabili in uscita x, y, z: [output] [x,y,z]
nessuna variabile in uscita: [output] [ ]
Il nome_funzione e un nome simbolico diverso per ogni funzione

Introduzione Matlab

Carla Guerrini

81

Introduzione Matlab

Carla Guerrini

82

Riga h1
E la prima riga del testo di help
Siccome una riga di commento inizia con %
Testo di help serve per creare un aiuto in linea per la propria
funzione introducendo una o pi righe di commento
immediatamente dopo la riga H1
>> help rettangolo
Corpo della Function
Contiene le istruzioni per il calcolo e lassegnazione dei valori
alle variabili di output
Le istruzioni possono essere:
chiamate di unaltra function
input/output interattivi
calcoli
assegnazioni
commenti
linee bianche
Una funzione termina dopo che lultima riga nel file eseguita
oppure quando incontrato il comando return.

Introduzione Matlab

Carla Guerrini

83

Introduzione Matlab

Carla Guerrini

84

21

Input/output di una function

Variabili locali
Le variabili che non sono nella lista delle variabili di input e nemmeno in
quella delle variabili di output sono dette variabili locali e non compaiono
nello spazio di lavoro
Le variabili locali vengono automaticamente cancellate dalla memoria al
termine dellesecuzione
LM-file deve essere denominato col nome della funzione ed
avere estensione .m (rettangolo.m) In realt, Matlab richiama la funzione sulla
base del nome del file e non del nome della function.
E necessario assegnare dei valori ai parametri di output
Per poter utilizzare una funzione allinterno di uno script, il file deve essere
nella directory dello script.
Chiamata di una funzione

[lista output]=nome_function(lista input)


Introduzione Matlab

Carla Guerrini

85

Workspace della funzione

Introduzione Matlab

Carla Guerrini

86

Funzioni principali e funzioni secondarie

Tutte le variabili n di input


n di output della funzione
sono dette locali alla
funzione.
Le variabili locali non sono
visibili nel workspace di
Matlab. Ogni funzione ha
un suo workspace
temporaneo creato nel
momento della chiamata e
distrutto quando la
funzione termina
lesecuzione.
Le funzioni possono
essere richiamate
ricorsivamente, e in questo
caso ogni chiamata ha un
workspace separato.
Introduzione Matlab

Come vengono passati gli argomenti di input a una funzione?


Per valore quando gli argomenti stessi non sono modificati dalla
funzione. Se il valore di una variabile di input modificato, viene
allocata una nuova porzione di memoria e ne viene copiato il valore.
function = funz1(x)
x(3)=0;
Finch largomento non modificato allinterno della funzione,viene
solo referenziato (delayed copy) per ottimizzare luso della
memoria
Come vengono trattati gli argomenti di output di una funzione?
Viene allocata memoria nel workspace locale per gli argomenti di
output. Quindi se un argomento sia di input che di output non vale
la regola della delayed copy.
Le funzioni Matlab possono non avere argomenti di input e/o di
output.
Possono essere richiamate con un numero inferiore di argomenti di
input e di output rispetto a quelli dichiarati, ma non superiore.
Il numero di argomenti di input e di output effettivamente utilizzati
nella chiamata si pu ottenere tramite le funzioni nargin e nargout,
rispettivamente.

Uno stesso file pu contenere pi funzioni:


La function principale d il nome al file e sta allinizio
Le function secondarie occupano posizione in coda
Solo la function principale pu essere richiamata dal prompt o da
altre function
Una funzione pu essere passata come argomento ad unaltra
funzione.
Pu essere fatto in diversi modi a seconda di come e stata scritta la
funzione
Function handles
Feval
Anonymous function

Carla Guerrini

87

Introduzione Matlab

Carla Guerrini

88

22

Function handles

Function handle un tipo Matlab che contiene tutte le indicazioni utili per
eseguire una funzione.
Sintassi per costruire l'handle della funzione:
handle_name = @functionname
E possibile eseguire una funzione utilizzando il suo handle.
Lhandle viene utilizzato esattamente come se fosse il nome della funzione.

Sin(0.6*pi)
Ans =
0.9511

>>f=@sin
>>f(0.6*pi)
Ans = 0.9511

Introduzione Matlab

Carla Guerrini

89

Introduzione Matlab

Carla Guerrini

90

Introduzione Matlab

Carla Guerrini

91

Introduzione Matlab

Carla Guerrini

92

23

Introduzione Matlab

Carla Guerrini

93

Introduzione Matlab

Carla Guerrini

94

Introduzione Matlab

Carla Guerrini

95

Introduzione Matlab

Carla Guerrini

96

24

fprintf
Simile alla funzione del linguaggio C
Sintassi:

fprintf(formato)
count=fprintf(formato,variabili)
fprintf(Attenzione: x negativa \n)
fprintf(%s ha %d anni\n,nome,anni)
La stringa formato contiene i codici e i caratteri opzionali per costruire la
stringa di output
count e il numero di elementi scritti
Caratteri di conversione:
%d notazione decimale per interi con segno
%i notazione decimale per interi
%f floating poit per reali
%e notazione esponenziale per i reali
E possibile specificare la lunghezza del campo e per variabili numeriche il
numero di decimali:
fprintf(%f\n,sqrt(2)),
fprintf(%e\n,sqrt(2)), fprintf(%8.4f\n,sqrt(2), fprintf(%12.3\n,sqrt(2))

Introduzione Matlab

Carla Guerrini

97

Introduzione Matlab

Carla Guerrini

98

Introduzione Matlab

Carla Guerrini

99

Introduzione Matlab

Carla Guerrini

100

25

Grafici bidimensionali

Introduzione Matlab

Carla Guerrini

101

Introduzione Matlab

Carla Guerrini

102

plot(vettore1,vettore2,opzioni)

Vttore1 e vettore2 sono riuspettivamente le ascisse e le


ordinate dei punti
Opzione e una stringa opzionale contenente al pi 3
caratteri rispettivamente per il colore, simbolo stampato,
simbolo usato per tracciare la linea fra i punti
plot(vettore)
il grafico viene realizzato secondo gli standard MatLab

Introduzione Matlab

Carla Guerrini

103

Introduzione Matlab

Carla Guerrini

104

26

Introduzione Matlab

Carla Guerrini

105

Introduzione Matlab

Carla Guerrini

106

Introduzione Matlab

Carla Guerrini

107

Introduzione Matlab

Carla Guerrini

108

27

Introduzione Matlab

Carla Guerrini

109

Introduzione Matlab

Carla Guerrini

110

Introduzione Matlab

Carla Guerrini

111

Introduzione Matlab

Carla Guerrini

112

28

fplot(function,limits)
>>fplot(x^3-1,[-1 1])
axis([xmin, xmax, ymin, ymax]) pone limiti definiti da
xmin, xmax,ymin, ymax per gli assi

axis auto limiti degli assi di default


axis off non visualizza gli assi
axis on visualizza gli assi
axis square rende gli assi uguali
axis tight limiti degli assi uguali al range dei dati

xlim ([xmin, xmax]) pone limiti definiti da xmin, xmax


per l'asse x
ylim ([ymin, ymax]) pone limiti definiti da ymin, ymax
per l'asse y
Introduzione Matlab

Carla Guerrini

113

Introduzione Matlab

Carla Guerrini

114

Introduzione Matlab

Carla Guerrini

116

box off rimuove la cornice del grafico


grid on/off aggiunge/toglie una griglia sulla
figura
text(x,y,string) aggiunge stringhe orizzontali
di testo a partire dal punto (x,y)
gtext(string) aggiunge una stringa di testo
posizionandola col mouse
legend inserisce una legenda per identificare i
diversi grafici
xlabel/ylabel inserisce un nome per l'asse x/y

Introduzione Matlab

Carla Guerrini

115

29

Introduzione Matlab

Carla Guerrini

117

Introduzione Matlab

Carla Guerrini

118

Introduzione Matlab

Carla Guerrini

119

Introduzione Matlab

Carla Guerrini

120

30

Esportare grafici:
Dal menu File -- Save as
scegliere poi il formato desiderato

DEMO:
>>demo matlab graphics

Introduzione Matlab

Carla Guerrini

121

31