Presentazione MatLab nuova versione

Commenti

Transcript

Presentazione MatLab nuova versione
Riferimenti bibliografici
• Guida per l’utente (http://www.mathworks.com)
• G. Naldi, L. Pareschi, Matlab concetti e progetti,
Apogeo ed.
• Tutorials e programmi disponibili in rete:
Introduzione all’ambiente
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
1
Introduzione Matlab
Che Cosa è MATLAB
Carla Guerrini
2
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
3
Introduzione Matlab
Carla Guerrini
4
1
Per iniziare….
Command Window
• Per lanciare Matlab (in ambiente Windows) è
sufficiente cliccare col mouse sull’icona
corrispondente
• All’avvio 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 un’espressione
– 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
6
Workspace window
• Matlab come calcolatrice
>> 2+3
ans =
5
• Assegnazione del valore 3 alla variabile a:
>> a = 3
a=
3
• Valutazione di un’espressione
>> 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,..)
•
7
E’ possibile modificare il valore di una variabile
utilizzando l’apposito workspace array editor
Introduzione Matlab
Carla Guerrini
8
2
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: l’help 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
9
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 nell’albero
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
3
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
un’uguaglianza(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
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
• L’insieme 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
dell’identificatore 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
• 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 parola riservata, vedere il comando
iskeyword
>> clear a b
Carla Guerrini
15
Introduzione Matlab
Carla Guerrini
16
4
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” (l’espressione 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
5
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 all’interno 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 dell’array è estratto specificando l’indice dell’elemento
dall’inizio dell’array
Introduzione Matlab
Carla Guerrini
24
6
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 dall’indice
2: v(2)
L’elemento 5 e’
individuato
dall’indice 3 : z(3)
L’elemento 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
7
Costruzione di un array
Costruzione di array
• A partire da altre matrici
L’assegnazione a blocchi è analoga a quella per elementi, con la differenza
che ogni elemento introdotto durante l’assegnazione 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 l’indice fra
parentesi tonda: v(4)
• • Una porzione dell’array 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
8
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 nell’uso
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=1…4
Prodotto SCALARE
n
• Le operazioni elementari + - * si estendo in modo naturale (quando
ben definite!) agli array
• Non si estende l’operazione / (Il simbolo / risolve un sistema
lineare)
• L’operazione ^ è 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
9
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” l’array dalla prima
all’ultima riga
fliplr
“rigira” l’array dalla prima
•
all’ultima colonna
rot90 ruota l’array di 90 gradi in
direzione oraria
reshape cambia la dimensione
dell’array 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
all’intero più vicino
fix(x) tronca all’intero più
vicino verso 0
floor(x) arrotonda all’intero
più vicino verso –
ceil(x) arrotonda all’intero
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.
L’oggetto fondamentale e’ l’array
(matrice).
Gli oggetti e le istruzioni possono
essere organizzati all’interno
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
L’istruzione di assegnazione
• I dati possono essere inseriti in
memoria tramite
l’operazione di assegnazione.
• L’operazione di assegnazione (fatta
utilizzando il simbolo =)
permette di memorizzare un dato che
puo’ essere un dato
costante, il contenuto di un’altra
variabile oppure il risultato
di un’espressione 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 un’espressione
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 dell’array 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
=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
_________________________
Nell’esempio le 4 istruzioni dentro il
ciclo for sono ripetute 11 volte
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
all’interno del loop.
• RETURN ritorna alla function chiamante
_________________________________________________________
Il ciclo a sinistra termina quando l’utente inserisce un numero maggiore di 5
nel ciclo a destra non c’e’ l’opportunita’ 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
SWITCH………END
% 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 dell’espressione.
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 con
tinua dopo l’END
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
% l’istruzione 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 l’estensione .m, e si preme
il tasto “Invio”
Matlab esegue automaticamente
le righe del file dalla prima
all’ultima come se fossero state
introdotte, in quell’ordine,
manualmente dal prompt
• L’M-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: l’esecuzione si arresta finchè non si digita un
char da tastiera
Pause(n) per n secondi arresta l’esecuzione
Keyboard passa il controllo alla tastiera k>> sino al
return
Echo srive nel command window le istruzioni che ve
si stanno eseguendo
Break interrompe l’esecuzione 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 l’esterno 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 dall’esterno tramite un’istruzione di
ingresso
L’istruzione di ingresso permette di memorizzare un dato introdotto
dall’esterno (solitamente attraverso tastiera) Viene detta quindi
un’operazione di input
• Sintassi : variabile= input(‘ testo commento’)
La funzione input mostra in output sullo schermo il testo testo 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 all’esterno durante
l’esecuzione di un programma tramite un’istruzione di uscita
• L’istruzione di uscita permette di visualizzare sullo schermo un
dato contenuto in una cella di memoria
• Viene detta quindi un’operazione 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 l’array x
L’istruzione 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 dell’istruzione 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 % all’inizio di
ciascuna riga
Sono ignorati durante l’esecuzione del programma
• Sintassi:
% parole di commento.....
La punteggiatura
Il simbolo ; alla fine di un comando sopprime la visualizzazione
dell’output 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 l’ordine 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 l’assegnazione dei valori
• alle variabili di output
• • Le istruzioni possono essere:
• • chiamate di un’altra function
• • input/output interattivi
• • calcoli
• • assegnazioni
• • commenti
• • linee bianche
• • Una funzione termina dopo che l’ultima 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 dell’esecuzione
• L’M-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 all’interno 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
l’esecuzione.
• 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é l’argomento non è modificato all’interno della funzione,viene
solo “referenziato” (delayed copy) per ottimizzare l’uso 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 all’inizio
– 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 un’altra
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.
• L’handle viene utilizzato esattamente come se fosse il nome della funzione.
Sin(0.6*pi)
Ans =
0.9511
>>[email protected]
>>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

Documenti analoghi

Mini Manuale Matlab

Mini Manuale Matlab singoli elementi aij della matrice A. La matrice risultato è posta in B:

Dettagli

Il sistema MATLAB

Il sistema MATLAB save dati.dat -ascii -double salva dati in formato ASCII con 16 cifre Si possono leggere file scritti con programmi diversi dal matlab, ad esempio excel. I comandi per leggere diversi tipi di file ...

Dettagli

Introduzione a MATLAB

Introduzione a MATLAB • Altre funzioni operanti essenzialmente su vettori (riga o colonna) sono max, max min, min sort, sort sum, sum prod, prod median • Esistono poi particolari operatori (.*, ./, .^) che permettono di...

Dettagli