strumenti per il calcolo numerico...
TRANSCRIPT
Strumenti per il calcolo numericoMatlabOctave
Informatica B Informatica B ndashndash Prof A Prof A MorzentiMorzenti
-- 22 --
Matlab
Cosrsquoegrave Matlab
strumento (e corrispondente linguaggio) per elaborazioni di
calcolo numerico
NB sta per MATrix LABoratoryraquo centrato sulle matrici (ma include generiche funzionalitagrave matematiche)
usato nei successivi corsi di calcolo numerico
MATLAB egrave uno strumento commerciale
distribuito su licenza NON gratuita da ldquoThe MathWorks Incrdquo
Student edition disponibile quando si egrave al Politecnico
(httpwwwasipolimiitsoftwarematlabhtml)
Esiste un altro strumento di nome Octave
identico nella concezione molto simile per gli aspetti operativi
disponibile gratuitamente vedi wwwgnuorgsoftwareoctave
-- 33 --
Caratteristiche del linguaggio di MatlabOctave (1)
Linguaggio di alto livello
simile a linguaggi di programmazione C Java Pascal
possiede comandi sintetici per effettuare complesse elaborazioni numeriche
Linguaggio interpretato comandi e istruzioni
NON tradotti in codice eseguibile dallrsquohardware
MA manipolati da un programma (lrsquointerprete) che li analizza ed esegue azioni da essi descritte
Linguaggio dinamico
NON occorre dichiarare le variabili
risultano definite dal punto in cui vengono introdotte
ndash e vengono incluse in una struttura detta tabella dei simboli
il tipo delle variabili egrave dinamico
a una variabile si possono assegnare successivamente valori di tipo diverso (scalari stringhe vettori matrici)
-- 44 --
Caratteristiche del linguaggio di MatlabOctave (2)
In MatlabOctave tutto egrave un array
ci sono casi particolari significativi di array
array 1x1 sono gli scalari
array con una sola riga o colonna sono i vettori
array con due dimensioni sono le matrici
Screenshot dellrsquoambiente MATLAB
-- 55 --
Contenuto delladirectory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
-- 66 --
Comandi in Matlab
Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt
es gtgt a = 10Assegna alla variabile a il valore 10Esempio di alcuni comandi (analizzeremo quelli piugrave importanti)
Il prompt accetta i comandi del sistema operativo (DOS UNIXhellip)
Esempio in ambiente dos dir mostra il contenuto della directory corrente
help richiama la guida in lineadiary puograve essere utilizzato per salvare la sessione di lavorowho whos e workspace mostrano lrsquoelenco delle variabili definitesave permette di salvare in un file le variabili definite Load le ricarica
clear cancella tutte le variabili
-- 77 --
Esempi
Input Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del
risultato di 12346
eps eps = 22204e-16 variabile predefinita il piugrave piccolo valore
possibile
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che
restituisce la parte reale di un numero
complesso
1+1==2
1+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo
diverso
-- 88 --
Esempi con gli array
a=[1 2 3 4] a =
1 2
3 4
a ora egrave una matrice 2x2 ldquordquo
separa le righe
a a =
1 2
3 4
restituisce il valore della
variabile a
x=[-13 sqrt(3)
(1+2)5]
x =
-130000 173205 060000elementi possono essere
espressioni
x(5)=abs(x(1)) x =
-130000 173205 060000
000000 130000
Notazione con () per
accedere a elementi di una
matrice abs valore assoluto
NB vettore x esteso per
includere nuovo elemento
b=arsquo b =
1 3
2 4
matrice trasposta
(scambiate righe e colonne)
c=a+b c =
2 5
5 8
somma di matrici elemento
per elemento (sottrazione
con ldquo-rdquo simile)
x=[-1 0 2] y=x y =
-1
0
2
il ldquordquo blocca lrsquooutput ma
non impedisce la valutazione
-- 99 --
Altre operazioni con gli array
x=15 x =
1 2 3 4 5
operatore ldquordquo per produrre
vettori di numeri
y=0pi4pi y =
000000 078540
157080 235619
314159
operatore ldquordquo con passo di
incremento e valori non interi
(pi egrave pigreco)
v=10-4-3 v =
10 6 2 -2
valori negativi del passo e degli
estremi
sin(y) ans =
000000 070711
100000 070711
000000
funzioni predefinite si applicano
ai vettori
x=[0pi100pi2]
[x sin(x)]
ans =
000000 000000
003142 003141
153938 099951
157080 100000
produce la tabella di sin(x)
0lelelelexleleleleππππ2
Diagrammi a due dimensioni
Diagramma = insieme di coppie che rappresentano coordinate di punti
Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate
plot(xy) disegna digramma cartesiano dei punti che hanno
valori delle ascisse in x delle ordinate in y
e li congiunge con una linea per dare continuitagrave al grafico
funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ord
inate
cubica
-- 1010 --
-- 1111 --
Un esempio di cinematica
Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione
Il piugrave veloce impiega 1500050=300s
DistanzaTreno1=50t
DistranzaTreno2=15000-30t (per mostrare la provenienza dalla direzione opposta)
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
-- 22 --
Matlab
Cosrsquoegrave Matlab
strumento (e corrispondente linguaggio) per elaborazioni di
calcolo numerico
NB sta per MATrix LABoratoryraquo centrato sulle matrici (ma include generiche funzionalitagrave matematiche)
usato nei successivi corsi di calcolo numerico
MATLAB egrave uno strumento commerciale
distribuito su licenza NON gratuita da ldquoThe MathWorks Incrdquo
Student edition disponibile quando si egrave al Politecnico
(httpwwwasipolimiitsoftwarematlabhtml)
Esiste un altro strumento di nome Octave
identico nella concezione molto simile per gli aspetti operativi
disponibile gratuitamente vedi wwwgnuorgsoftwareoctave
-- 33 --
Caratteristiche del linguaggio di MatlabOctave (1)
Linguaggio di alto livello
simile a linguaggi di programmazione C Java Pascal
possiede comandi sintetici per effettuare complesse elaborazioni numeriche
Linguaggio interpretato comandi e istruzioni
NON tradotti in codice eseguibile dallrsquohardware
MA manipolati da un programma (lrsquointerprete) che li analizza ed esegue azioni da essi descritte
Linguaggio dinamico
NON occorre dichiarare le variabili
risultano definite dal punto in cui vengono introdotte
ndash e vengono incluse in una struttura detta tabella dei simboli
il tipo delle variabili egrave dinamico
a una variabile si possono assegnare successivamente valori di tipo diverso (scalari stringhe vettori matrici)
-- 44 --
Caratteristiche del linguaggio di MatlabOctave (2)
In MatlabOctave tutto egrave un array
ci sono casi particolari significativi di array
array 1x1 sono gli scalari
array con una sola riga o colonna sono i vettori
array con due dimensioni sono le matrici
Screenshot dellrsquoambiente MATLAB
-- 55 --
Contenuto delladirectory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
-- 66 --
Comandi in Matlab
Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt
es gtgt a = 10Assegna alla variabile a il valore 10Esempio di alcuni comandi (analizzeremo quelli piugrave importanti)
Il prompt accetta i comandi del sistema operativo (DOS UNIXhellip)
Esempio in ambiente dos dir mostra il contenuto della directory corrente
help richiama la guida in lineadiary puograve essere utilizzato per salvare la sessione di lavorowho whos e workspace mostrano lrsquoelenco delle variabili definitesave permette di salvare in un file le variabili definite Load le ricarica
clear cancella tutte le variabili
-- 77 --
Esempi
Input Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del
risultato di 12346
eps eps = 22204e-16 variabile predefinita il piugrave piccolo valore
possibile
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che
restituisce la parte reale di un numero
complesso
1+1==2
1+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo
diverso
-- 88 --
Esempi con gli array
a=[1 2 3 4] a =
1 2
3 4
a ora egrave una matrice 2x2 ldquordquo
separa le righe
a a =
1 2
3 4
restituisce il valore della
variabile a
x=[-13 sqrt(3)
(1+2)5]
x =
-130000 173205 060000elementi possono essere
espressioni
x(5)=abs(x(1)) x =
-130000 173205 060000
000000 130000
Notazione con () per
accedere a elementi di una
matrice abs valore assoluto
NB vettore x esteso per
includere nuovo elemento
b=arsquo b =
1 3
2 4
matrice trasposta
(scambiate righe e colonne)
c=a+b c =
2 5
5 8
somma di matrici elemento
per elemento (sottrazione
con ldquo-rdquo simile)
x=[-1 0 2] y=x y =
-1
0
2
il ldquordquo blocca lrsquooutput ma
non impedisce la valutazione
-- 99 --
Altre operazioni con gli array
x=15 x =
1 2 3 4 5
operatore ldquordquo per produrre
vettori di numeri
y=0pi4pi y =
000000 078540
157080 235619
314159
operatore ldquordquo con passo di
incremento e valori non interi
(pi egrave pigreco)
v=10-4-3 v =
10 6 2 -2
valori negativi del passo e degli
estremi
sin(y) ans =
000000 070711
100000 070711
000000
funzioni predefinite si applicano
ai vettori
x=[0pi100pi2]
[x sin(x)]
ans =
000000 000000
003142 003141
153938 099951
157080 100000
produce la tabella di sin(x)
0lelelelexleleleleππππ2
Diagrammi a due dimensioni
Diagramma = insieme di coppie che rappresentano coordinate di punti
Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate
plot(xy) disegna digramma cartesiano dei punti che hanno
valori delle ascisse in x delle ordinate in y
e li congiunge con una linea per dare continuitagrave al grafico
funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ord
inate
cubica
-- 1010 --
-- 1111 --
Un esempio di cinematica
Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione
Il piugrave veloce impiega 1500050=300s
DistanzaTreno1=50t
DistranzaTreno2=15000-30t (per mostrare la provenienza dalla direzione opposta)
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
-- 33 --
Caratteristiche del linguaggio di MatlabOctave (1)
Linguaggio di alto livello
simile a linguaggi di programmazione C Java Pascal
possiede comandi sintetici per effettuare complesse elaborazioni numeriche
Linguaggio interpretato comandi e istruzioni
NON tradotti in codice eseguibile dallrsquohardware
MA manipolati da un programma (lrsquointerprete) che li analizza ed esegue azioni da essi descritte
Linguaggio dinamico
NON occorre dichiarare le variabili
risultano definite dal punto in cui vengono introdotte
ndash e vengono incluse in una struttura detta tabella dei simboli
il tipo delle variabili egrave dinamico
a una variabile si possono assegnare successivamente valori di tipo diverso (scalari stringhe vettori matrici)
-- 44 --
Caratteristiche del linguaggio di MatlabOctave (2)
In MatlabOctave tutto egrave un array
ci sono casi particolari significativi di array
array 1x1 sono gli scalari
array con una sola riga o colonna sono i vettori
array con due dimensioni sono le matrici
Screenshot dellrsquoambiente MATLAB
-- 55 --
Contenuto delladirectory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
-- 66 --
Comandi in Matlab
Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt
es gtgt a = 10Assegna alla variabile a il valore 10Esempio di alcuni comandi (analizzeremo quelli piugrave importanti)
Il prompt accetta i comandi del sistema operativo (DOS UNIXhellip)
Esempio in ambiente dos dir mostra il contenuto della directory corrente
help richiama la guida in lineadiary puograve essere utilizzato per salvare la sessione di lavorowho whos e workspace mostrano lrsquoelenco delle variabili definitesave permette di salvare in un file le variabili definite Load le ricarica
clear cancella tutte le variabili
-- 77 --
Esempi
Input Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del
risultato di 12346
eps eps = 22204e-16 variabile predefinita il piugrave piccolo valore
possibile
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che
restituisce la parte reale di un numero
complesso
1+1==2
1+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo
diverso
-- 88 --
Esempi con gli array
a=[1 2 3 4] a =
1 2
3 4
a ora egrave una matrice 2x2 ldquordquo
separa le righe
a a =
1 2
3 4
restituisce il valore della
variabile a
x=[-13 sqrt(3)
(1+2)5]
x =
-130000 173205 060000elementi possono essere
espressioni
x(5)=abs(x(1)) x =
-130000 173205 060000
000000 130000
Notazione con () per
accedere a elementi di una
matrice abs valore assoluto
NB vettore x esteso per
includere nuovo elemento
b=arsquo b =
1 3
2 4
matrice trasposta
(scambiate righe e colonne)
c=a+b c =
2 5
5 8
somma di matrici elemento
per elemento (sottrazione
con ldquo-rdquo simile)
x=[-1 0 2] y=x y =
-1
0
2
il ldquordquo blocca lrsquooutput ma
non impedisce la valutazione
-- 99 --
Altre operazioni con gli array
x=15 x =
1 2 3 4 5
operatore ldquordquo per produrre
vettori di numeri
y=0pi4pi y =
000000 078540
157080 235619
314159
operatore ldquordquo con passo di
incremento e valori non interi
(pi egrave pigreco)
v=10-4-3 v =
10 6 2 -2
valori negativi del passo e degli
estremi
sin(y) ans =
000000 070711
100000 070711
000000
funzioni predefinite si applicano
ai vettori
x=[0pi100pi2]
[x sin(x)]
ans =
000000 000000
003142 003141
153938 099951
157080 100000
produce la tabella di sin(x)
0lelelelexleleleleππππ2
Diagrammi a due dimensioni
Diagramma = insieme di coppie che rappresentano coordinate di punti
Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate
plot(xy) disegna digramma cartesiano dei punti che hanno
valori delle ascisse in x delle ordinate in y
e li congiunge con una linea per dare continuitagrave al grafico
funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ord
inate
cubica
-- 1010 --
-- 1111 --
Un esempio di cinematica
Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione
Il piugrave veloce impiega 1500050=300s
DistanzaTreno1=50t
DistranzaTreno2=15000-30t (per mostrare la provenienza dalla direzione opposta)
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
-- 44 --
Caratteristiche del linguaggio di MatlabOctave (2)
In MatlabOctave tutto egrave un array
ci sono casi particolari significativi di array
array 1x1 sono gli scalari
array con una sola riga o colonna sono i vettori
array con due dimensioni sono le matrici
Screenshot dellrsquoambiente MATLAB
-- 55 --
Contenuto delladirectory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
-- 66 --
Comandi in Matlab
Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt
es gtgt a = 10Assegna alla variabile a il valore 10Esempio di alcuni comandi (analizzeremo quelli piugrave importanti)
Il prompt accetta i comandi del sistema operativo (DOS UNIXhellip)
Esempio in ambiente dos dir mostra il contenuto della directory corrente
help richiama la guida in lineadiary puograve essere utilizzato per salvare la sessione di lavorowho whos e workspace mostrano lrsquoelenco delle variabili definitesave permette di salvare in un file le variabili definite Load le ricarica
clear cancella tutte le variabili
-- 77 --
Esempi
Input Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del
risultato di 12346
eps eps = 22204e-16 variabile predefinita il piugrave piccolo valore
possibile
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che
restituisce la parte reale di un numero
complesso
1+1==2
1+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo
diverso
-- 88 --
Esempi con gli array
a=[1 2 3 4] a =
1 2
3 4
a ora egrave una matrice 2x2 ldquordquo
separa le righe
a a =
1 2
3 4
restituisce il valore della
variabile a
x=[-13 sqrt(3)
(1+2)5]
x =
-130000 173205 060000elementi possono essere
espressioni
x(5)=abs(x(1)) x =
-130000 173205 060000
000000 130000
Notazione con () per
accedere a elementi di una
matrice abs valore assoluto
NB vettore x esteso per
includere nuovo elemento
b=arsquo b =
1 3
2 4
matrice trasposta
(scambiate righe e colonne)
c=a+b c =
2 5
5 8
somma di matrici elemento
per elemento (sottrazione
con ldquo-rdquo simile)
x=[-1 0 2] y=x y =
-1
0
2
il ldquordquo blocca lrsquooutput ma
non impedisce la valutazione
-- 99 --
Altre operazioni con gli array
x=15 x =
1 2 3 4 5
operatore ldquordquo per produrre
vettori di numeri
y=0pi4pi y =
000000 078540
157080 235619
314159
operatore ldquordquo con passo di
incremento e valori non interi
(pi egrave pigreco)
v=10-4-3 v =
10 6 2 -2
valori negativi del passo e degli
estremi
sin(y) ans =
000000 070711
100000 070711
000000
funzioni predefinite si applicano
ai vettori
x=[0pi100pi2]
[x sin(x)]
ans =
000000 000000
003142 003141
153938 099951
157080 100000
produce la tabella di sin(x)
0lelelelexleleleleππππ2
Diagrammi a due dimensioni
Diagramma = insieme di coppie che rappresentano coordinate di punti
Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate
plot(xy) disegna digramma cartesiano dei punti che hanno
valori delle ascisse in x delle ordinate in y
e li congiunge con una linea per dare continuitagrave al grafico
funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ord
inate
cubica
-- 1010 --
-- 1111 --
Un esempio di cinematica
Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione
Il piugrave veloce impiega 1500050=300s
DistanzaTreno1=50t
DistranzaTreno2=15000-30t (per mostrare la provenienza dalla direzione opposta)
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Screenshot dellrsquoambiente MATLAB
-- 55 --
Contenuto delladirectory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
-- 66 --
Comandi in Matlab
Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt
es gtgt a = 10Assegna alla variabile a il valore 10Esempio di alcuni comandi (analizzeremo quelli piugrave importanti)
Il prompt accetta i comandi del sistema operativo (DOS UNIXhellip)
Esempio in ambiente dos dir mostra il contenuto della directory corrente
help richiama la guida in lineadiary puograve essere utilizzato per salvare la sessione di lavorowho whos e workspace mostrano lrsquoelenco delle variabili definitesave permette di salvare in un file le variabili definite Load le ricarica
clear cancella tutte le variabili
-- 77 --
Esempi
Input Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del
risultato di 12346
eps eps = 22204e-16 variabile predefinita il piugrave piccolo valore
possibile
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che
restituisce la parte reale di un numero
complesso
1+1==2
1+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo
diverso
-- 88 --
Esempi con gli array
a=[1 2 3 4] a =
1 2
3 4
a ora egrave una matrice 2x2 ldquordquo
separa le righe
a a =
1 2
3 4
restituisce il valore della
variabile a
x=[-13 sqrt(3)
(1+2)5]
x =
-130000 173205 060000elementi possono essere
espressioni
x(5)=abs(x(1)) x =
-130000 173205 060000
000000 130000
Notazione con () per
accedere a elementi di una
matrice abs valore assoluto
NB vettore x esteso per
includere nuovo elemento
b=arsquo b =
1 3
2 4
matrice trasposta
(scambiate righe e colonne)
c=a+b c =
2 5
5 8
somma di matrici elemento
per elemento (sottrazione
con ldquo-rdquo simile)
x=[-1 0 2] y=x y =
-1
0
2
il ldquordquo blocca lrsquooutput ma
non impedisce la valutazione
-- 99 --
Altre operazioni con gli array
x=15 x =
1 2 3 4 5
operatore ldquordquo per produrre
vettori di numeri
y=0pi4pi y =
000000 078540
157080 235619
314159
operatore ldquordquo con passo di
incremento e valori non interi
(pi egrave pigreco)
v=10-4-3 v =
10 6 2 -2
valori negativi del passo e degli
estremi
sin(y) ans =
000000 070711
100000 070711
000000
funzioni predefinite si applicano
ai vettori
x=[0pi100pi2]
[x sin(x)]
ans =
000000 000000
003142 003141
153938 099951
157080 100000
produce la tabella di sin(x)
0lelelelexleleleleππππ2
Diagrammi a due dimensioni
Diagramma = insieme di coppie che rappresentano coordinate di punti
Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate
plot(xy) disegna digramma cartesiano dei punti che hanno
valori delle ascisse in x delle ordinate in y
e li congiunge con una linea per dare continuitagrave al grafico
funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ord
inate
cubica
-- 1010 --
-- 1111 --
Un esempio di cinematica
Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione
Il piugrave veloce impiega 1500050=300s
DistanzaTreno1=50t
DistranzaTreno2=15000-30t (per mostrare la provenienza dalla direzione opposta)
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
-- 66 --
Comandi in Matlab
Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt
es gtgt a = 10Assegna alla variabile a il valore 10Esempio di alcuni comandi (analizzeremo quelli piugrave importanti)
Il prompt accetta i comandi del sistema operativo (DOS UNIXhellip)
Esempio in ambiente dos dir mostra il contenuto della directory corrente
help richiama la guida in lineadiary puograve essere utilizzato per salvare la sessione di lavorowho whos e workspace mostrano lrsquoelenco delle variabili definitesave permette di salvare in un file le variabili definite Load le ricarica
clear cancella tutte le variabili
-- 77 --
Esempi
Input Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del
risultato di 12346
eps eps = 22204e-16 variabile predefinita il piugrave piccolo valore
possibile
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che
restituisce la parte reale di un numero
complesso
1+1==2
1+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo
diverso
-- 88 --
Esempi con gli array
a=[1 2 3 4] a =
1 2
3 4
a ora egrave una matrice 2x2 ldquordquo
separa le righe
a a =
1 2
3 4
restituisce il valore della
variabile a
x=[-13 sqrt(3)
(1+2)5]
x =
-130000 173205 060000elementi possono essere
espressioni
x(5)=abs(x(1)) x =
-130000 173205 060000
000000 130000
Notazione con () per
accedere a elementi di una
matrice abs valore assoluto
NB vettore x esteso per
includere nuovo elemento
b=arsquo b =
1 3
2 4
matrice trasposta
(scambiate righe e colonne)
c=a+b c =
2 5
5 8
somma di matrici elemento
per elemento (sottrazione
con ldquo-rdquo simile)
x=[-1 0 2] y=x y =
-1
0
2
il ldquordquo blocca lrsquooutput ma
non impedisce la valutazione
-- 99 --
Altre operazioni con gli array
x=15 x =
1 2 3 4 5
operatore ldquordquo per produrre
vettori di numeri
y=0pi4pi y =
000000 078540
157080 235619
314159
operatore ldquordquo con passo di
incremento e valori non interi
(pi egrave pigreco)
v=10-4-3 v =
10 6 2 -2
valori negativi del passo e degli
estremi
sin(y) ans =
000000 070711
100000 070711
000000
funzioni predefinite si applicano
ai vettori
x=[0pi100pi2]
[x sin(x)]
ans =
000000 000000
003142 003141
153938 099951
157080 100000
produce la tabella di sin(x)
0lelelelexleleleleππππ2
Diagrammi a due dimensioni
Diagramma = insieme di coppie che rappresentano coordinate di punti
Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate
plot(xy) disegna digramma cartesiano dei punti che hanno
valori delle ascisse in x delle ordinate in y
e li congiunge con una linea per dare continuitagrave al grafico
funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ord
inate
cubica
-- 1010 --
-- 1111 --
Un esempio di cinematica
Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione
Il piugrave veloce impiega 1500050=300s
DistanzaTreno1=50t
DistranzaTreno2=15000-30t (per mostrare la provenienza dalla direzione opposta)
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
-- 77 --
Esempi
Input Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del
risultato di 12346
eps eps = 22204e-16 variabile predefinita il piugrave piccolo valore
possibile
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che
restituisce la parte reale di un numero
complesso
1+1==2
1+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo
diverso
-- 88 --
Esempi con gli array
a=[1 2 3 4] a =
1 2
3 4
a ora egrave una matrice 2x2 ldquordquo
separa le righe
a a =
1 2
3 4
restituisce il valore della
variabile a
x=[-13 sqrt(3)
(1+2)5]
x =
-130000 173205 060000elementi possono essere
espressioni
x(5)=abs(x(1)) x =
-130000 173205 060000
000000 130000
Notazione con () per
accedere a elementi di una
matrice abs valore assoluto
NB vettore x esteso per
includere nuovo elemento
b=arsquo b =
1 3
2 4
matrice trasposta
(scambiate righe e colonne)
c=a+b c =
2 5
5 8
somma di matrici elemento
per elemento (sottrazione
con ldquo-rdquo simile)
x=[-1 0 2] y=x y =
-1
0
2
il ldquordquo blocca lrsquooutput ma
non impedisce la valutazione
-- 99 --
Altre operazioni con gli array
x=15 x =
1 2 3 4 5
operatore ldquordquo per produrre
vettori di numeri
y=0pi4pi y =
000000 078540
157080 235619
314159
operatore ldquordquo con passo di
incremento e valori non interi
(pi egrave pigreco)
v=10-4-3 v =
10 6 2 -2
valori negativi del passo e degli
estremi
sin(y) ans =
000000 070711
100000 070711
000000
funzioni predefinite si applicano
ai vettori
x=[0pi100pi2]
[x sin(x)]
ans =
000000 000000
003142 003141
153938 099951
157080 100000
produce la tabella di sin(x)
0lelelelexleleleleππππ2
Diagrammi a due dimensioni
Diagramma = insieme di coppie che rappresentano coordinate di punti
Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate
plot(xy) disegna digramma cartesiano dei punti che hanno
valori delle ascisse in x delle ordinate in y
e li congiunge con una linea per dare continuitagrave al grafico
funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ord
inate
cubica
-- 1010 --
-- 1111 --
Un esempio di cinematica
Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione
Il piugrave veloce impiega 1500050=300s
DistanzaTreno1=50t
DistranzaTreno2=15000-30t (per mostrare la provenienza dalla direzione opposta)
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
-- 88 --
Esempi con gli array
a=[1 2 3 4] a =
1 2
3 4
a ora egrave una matrice 2x2 ldquordquo
separa le righe
a a =
1 2
3 4
restituisce il valore della
variabile a
x=[-13 sqrt(3)
(1+2)5]
x =
-130000 173205 060000elementi possono essere
espressioni
x(5)=abs(x(1)) x =
-130000 173205 060000
000000 130000
Notazione con () per
accedere a elementi di una
matrice abs valore assoluto
NB vettore x esteso per
includere nuovo elemento
b=arsquo b =
1 3
2 4
matrice trasposta
(scambiate righe e colonne)
c=a+b c =
2 5
5 8
somma di matrici elemento
per elemento (sottrazione
con ldquo-rdquo simile)
x=[-1 0 2] y=x y =
-1
0
2
il ldquordquo blocca lrsquooutput ma
non impedisce la valutazione
-- 99 --
Altre operazioni con gli array
x=15 x =
1 2 3 4 5
operatore ldquordquo per produrre
vettori di numeri
y=0pi4pi y =
000000 078540
157080 235619
314159
operatore ldquordquo con passo di
incremento e valori non interi
(pi egrave pigreco)
v=10-4-3 v =
10 6 2 -2
valori negativi del passo e degli
estremi
sin(y) ans =
000000 070711
100000 070711
000000
funzioni predefinite si applicano
ai vettori
x=[0pi100pi2]
[x sin(x)]
ans =
000000 000000
003142 003141
153938 099951
157080 100000
produce la tabella di sin(x)
0lelelelexleleleleππππ2
Diagrammi a due dimensioni
Diagramma = insieme di coppie che rappresentano coordinate di punti
Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate
plot(xy) disegna digramma cartesiano dei punti che hanno
valori delle ascisse in x delle ordinate in y
e li congiunge con una linea per dare continuitagrave al grafico
funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ord
inate
cubica
-- 1010 --
-- 1111 --
Un esempio di cinematica
Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione
Il piugrave veloce impiega 1500050=300s
DistanzaTreno1=50t
DistranzaTreno2=15000-30t (per mostrare la provenienza dalla direzione opposta)
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
-- 99 --
Altre operazioni con gli array
x=15 x =
1 2 3 4 5
operatore ldquordquo per produrre
vettori di numeri
y=0pi4pi y =
000000 078540
157080 235619
314159
operatore ldquordquo con passo di
incremento e valori non interi
(pi egrave pigreco)
v=10-4-3 v =
10 6 2 -2
valori negativi del passo e degli
estremi
sin(y) ans =
000000 070711
100000 070711
000000
funzioni predefinite si applicano
ai vettori
x=[0pi100pi2]
[x sin(x)]
ans =
000000 000000
003142 003141
153938 099951
157080 100000
produce la tabella di sin(x)
0lelelelexleleleleππππ2
Diagrammi a due dimensioni
Diagramma = insieme di coppie che rappresentano coordinate di punti
Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate
plot(xy) disegna digramma cartesiano dei punti che hanno
valori delle ascisse in x delle ordinate in y
e li congiunge con una linea per dare continuitagrave al grafico
funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ord
inate
cubica
-- 1010 --
-- 1111 --
Un esempio di cinematica
Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione
Il piugrave veloce impiega 1500050=300s
DistanzaTreno1=50t
DistranzaTreno2=15000-30t (per mostrare la provenienza dalla direzione opposta)
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Diagrammi a due dimensioni
Diagramma = insieme di coppie che rappresentano coordinate di punti
Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate
plot(xy) disegna digramma cartesiano dei punti che hanno
valori delle ascisse in x delle ordinate in y
e li congiunge con una linea per dare continuitagrave al grafico
funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ord
inate
cubica
-- 1010 --
-- 1111 --
Un esempio di cinematica
Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione
Il piugrave veloce impiega 1500050=300s
DistanzaTreno1=50t
DistranzaTreno2=15000-30t (per mostrare la provenienza dalla direzione opposta)
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
-- 1111 --
Un esempio di cinematica
Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione
Il piugrave veloce impiega 1500050=300s
DistanzaTreno1=50t
DistranzaTreno2=15000-30t (per mostrare la provenienza dalla direzione opposta)
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
-- 1212 --
Soluzione
t=01300
p1=50 t
p2=15000-30 t
plot(tp1)
hold on adesso egrave possibile inserire nuove curve sul grafico
plot(tp2)
hold off
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
-- 1313 --
Risultati ottenuti con lrsquoesempio
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Istruzioni e lsquorsquo
Le istruzioni possono essere seguite da lsquorsquo ma non e`
obbligatorio
Il lsquorsquo blocca la visualizzazione del valore delle variabili
coinvolte nellrsquoistruzione
Maggiore velocitagrave di esecuzione
Regola di buona programmazione
Inserire sempre il lsquorsquo a meno che non si vogliaispezionare il valore di una variabile a scopo di
debugging
-- 1414 --
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Commenti
Il simbolo di commento puograve essere messo in
qualsiasi punto della linea
MATLAB ignoreragrave tutto quello che viene scritto alla
destra del simbolo
Per esempio
gtgt This is a comment
gtgtx = 2+3 So is this
x =
5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Variabili e array
-- 1616 --
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Array e variabili
Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarray
Una variabile in MATLAB egrave una regione di memoria checontiene un array
Ha un nome definito dallrsquoutente
Per i nomi valgono regole simili a quelle del C
C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquouso
MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
-- 1717 --
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Tipo double
Una variabile di tipo double contiene uno scalare o
un array di numeri espressi in 64 bit con doppiaprecisione
Questi numeri possono essere
Reali es var1 = -107
Immaginari es var2 = 4i var3 = 4j
Complessi es var3 = 103 + 10i
Es x = [-13 31+53j 0]
Le parti reali e immaginarie possono essere positive e negative nellrsquointervallo di valori [10-308 10308] con
accuratezza di 15-16 cifre decimali
-- 1818 --
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Tipo char
Una variabile di tipo char contiene uno scalare o un
array di valori a 16 bit ciascuno dei qualirappresenta un carattere
Es commento = lsquoquesta e` una stringarsquo
whos commento
Name Size Bytes Class Attributes
commento 1x21 42 char
-- 1919 --
Nome della variabile Array di 1x21 caratteri
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Creazione ed inizializzazione di unavariabile
Le variabili sono create al momento
dellrsquoinizializzazione
Modi di inizializzazione
Assegnamento
Lettura dati da tastiera
Lettura da file
-- 2020 --
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Assegnamento
variabile = espressione
Esempi
a = [0 7+1]
b = [a(2) 5 a]
Risultato
a = [0 8]
b = [8 5 0 8]
Non tutti gli elementi devono essere specificati allacreazionehellip
c(2 3) = 5
-- 2121 --
secondo elemento di a
contenuto di a
0 0 00 0 5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Assegnamento (2)
Lrsquoarray puograve essere esteso successivamente hellip
d = [2 5] d(4)=2 d = [2 5 0 2]
Operatore di trasposizione
g = drsquo 2
5
0
2
Come evitare di enumerare esplicitamente tutti i
valori uso dellrsquooperatore
x = 1210 x = [1 3 5 7 9]
l = 13
m = [lrsquo lrsquo]
-- 2222 --
1 12 23 3
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Assegnamento (3) ndash funzionipredefinite
-- 2323 --
Funzione Significato
zeros (n) Genera una matrice nxn di zeri
zeros (mn) Genera una matrice mxn di zeri
zeros (size(arr)) Genera una matrice di zeri della stessa
dimensione di arr
ones(n) Genera una matrice nxn di uno
ones(mn) Genera una matrice mxn di uno
ones(size(arr)) Genera una matrice di uno della stessa
dimensione di arr
eye(n) Genera la matrice identitagrave nxn
eye(mn) Genera la matrice identitagrave mxn
length(arr) Ritorna la dimensione piugrave lunga del
vettore
size(arr) Ritorna il numero di righe e colonne
dellrsquoarray
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Assegnamento (4) ndash funzionipredefinite
Esempi
a = zeros(2)
b = zeros(23)
c = [1 2 3 4]
d = zeros(size(c))
-- 2424 --
0 00 0
0 0 00 0 0
0 00 0
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Assegnamento (5) ndash uso di uno scalare per assegnare valori ad un array
Esempio
m(14 13) = 3
Regola il modo con cui uno scalare viene assegnato
ad un array dipende dalla forma dellrsquoarray che viene
specificata a sinistra dellrsquoassegnamento
Esempio 2
m(12 12) = 4
hellip la regola si applica anche ai sottoarray
-- 2525 --
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Variabili predefinite
Matlab definisce un insieme di variabili predefinite
(es pi)
Queste variabili corrispondono in qualche caso a
costanti
Attenzione Il valore di queste variabili puograve essere modificato per esempio
circ1=2pi10
pi = 3
circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
E` fortemente sconsigliato modificare il valore di unavariabile predefinita
-- 2626 --
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Variabili predefinite piugrave comuni
-- 2727 --
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito(ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di unaoperazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenzarappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Operazioni con scalari e array
Operazioni per gli scalari + - ^ elevamento a potenza
Operazioni per gli array
Array operation viene eseguita sugli elementi degli array coinvolti (devono avere lo stesso numero di righe e colonne)
a= b= a+b = ab=
Matrix operation segue le regole dellrsquoalgebra lineare(prodotto righe per colonne)
a= b= ab =
-- 2828 --
1 23 4
2 35 7
3 58 11
2 615 28
1 23 4
2 35 7
12 1726 37 ( ) sum=
k kjikij baba
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Operazioni tipiche per gli array
-- 2929 --
Operazione SintassiMatlab
Commenti
Array addition a + b Array e matrix addition sono
identiche
Array subtraction a ndash b Array e matrix subtraction sono
identiche
Array multiplication a b Ciascun elemento del risultato egrave
pari al prodotto degli elementi
corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici
Array right division a b risultato(ij)=a(ij)b(ij)
Array left division a b risultato(ij)=b(ij)a(ij)
Matrix right division a b ainversa(b)
Matrix left division a b inversa(a)b
Array
exponentiation
a ^ b risultato(ij)=a(ij)^b(ij)
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Matrix left division
Serve per risolvere sistemi di equazioni lineari
a11x1+a12x2+a13x3=b1
a21x1+a22x2+a23x3=b2
a31x1+a32x2+a33x3=b3
puograve essere espresso come Ax=B con
A = B= x =
di conseguenza x = A-1B=inversa(A)b=AB
-- 3030 --
a11 a12 a13
a21 a22 a23
a31 a32 a33
b1
b2
b3
x1
x2
x3
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Altre funzioni
-- 3131 --
Funzione Scopo
ceil(x) approssima x allrsquointeroimmediatamente maggiore
floor(x) approssima x allrsquointeroimmediatamente minore
fix(x) approssima x allrsquointero piugrave vicinoverso lo zero
max(x) ritorna il valore massimo nel vettorex e opzionalmente la collocazionedi questo valore in x
min(x) ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore
mod(mn) mod(xy) egrave x - ny dove n = floor(xy) se y ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numericasuali
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Inputoutput
-- 3232 --
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Acquisizione dati da tastiera
Funzione input
valore = input(lsquoinserisci un valore lsquo)
Matlab stampa a video la stringa lsquoinserisci un valorersquo
ed aspetta di ricevere un dato
Valore scalare
Array racchiuso tra []
Stringa racchiusa tra lsquorsquo
Il dato inserito dallrsquoutente viene memorizzato in
valore
-- 3333 --
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Stampa dei risultati (1)
I risultati di unrsquooperazione sono mostrati
immediatamente se non si inserisce il
Altri due modi
disp
accetta come parametro un array Se questo array egrave di tipo char lo stampa
viene usato in congiunzione con num2str
Esempio
ndash str = [lsquoil valore di pi e` lsquo num2str(pi)]
ndash disp(str)
Stampa ldquoil valore di pi e` 31416rdquo
-- 3434 --
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Stampa dei risultati (2)
hellipaltro modo
fprintf
fprintf(lsquoIl valore di pi e` f nrsquo pi)
stringhe di formato d (interi) e (formatoesponenziale) f (virgola mobile) g (il piugrave corto tra ilformato esponenziale e quello in virgola mobile)
disp vs fprintf
disp egrave in grado di stampare anche valori complessi
x=2(1-2i)^3
str=[lsquodisp x = lsquo num2str(x)]
disp(str) disp x = -22+4i
fprintf ne stampa solo la parte reale
fprintf(lsquofprintf x = 84fnrsquo x) fprintf x = -220000
-- 3535 --
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Lettura e scrittura di dati su file
Tipi di file gestiti
ascii = file di testo
mat = file proprietari di Matlab
Comandi piugrave semplici da usare
save
load
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Salvataggio dei dati su file (1)
file mat
save filename salva su filenamemat tutte le variabili
contenute nello spazio di lavoro
save filename array1 array2 salva su filenamemat le variabili array1 e array2
I file mat hanno un formato compatto
Contengono
Nomi tipi e valori di ogni variabile
La dimensione degli array
hellip in generale tutto ciograve che serve per ripristinare lo
stato dello spazio di lavoro
Possono essere portati da un computer allrsquoaltro anche
con sistemi operativi diversi
-- 3737 --
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Salvataggio dei dati su file (2)
Limitazione dei file mat
E` un formato proprietario di MATLAB
Non egrave utilizzabile per leggerescrivere dati con un altroprogramma
Es un editor di testi excel hellip
Soluzione
Uso dei file di testo (ascii) esempio
x = [123 314 628 -51 700 0]
save ndashascii filenamedat x
Produce il file filenamedat organizzato come segue
12300000e+000 31400000e+000 62800000e+000
-51000000e+000 70000000e+000 00000000e+000
o Nota si puograve usare qualsiasi estensione per questi file egrave buonanorma distinguerli dai file mat
-- 3838 --
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Acquisizione dati da file
load carica dati da file nello spazio di lavoro di
MATLAB
load filename carica nello spazio di lavoro tutte le
variabili nel file
load filename x y carica nello spazio di lavoro solo le
variabili x ed y
Se filename non ha estensione o ha estensione mat
viene trattato come un file mat
File ascii
load filenamedat crea una variabile di nome filename che conterragrave i dati in filenamedat
Il file deve contenere dati separati da virgole o spazi
-- 3939 --
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Acquisizione di dati da fogli di calcolo
A = xlsread(rsquofilenamersquo) importa il file di Microsoft
Excel filenamexls nella matrice A
Alcuni fogli di calcolo salvano i dati nel formato wk1
M = wk1read(rsquofilenamersquo)
per importare questi dati nella matrice M
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Script in MATLAB
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Script (m-file)
Uno script egrave un file di testo contenente una sequenza di comandi MATLAB
non deve contenere caratteri di formattazione (solo testo puro)
viene salvato con estensione m
I comandi allrsquointerno di uno script sono eseguiti
sequenzialmente come se fossero scritti nella finestra deicomandi
Per eseguire Il file si digita il suo nome (senza m)
I risultati appaiono nella finestra dei comandi (se non usiamo il )
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
4343
VantaggiSvantaggi
Uno script puograve
essere ri-eseguito
essere facilmente modificato
essere spedito a qualcuno
Uno script NON
accetta variabili di input
genera variabili di output
Uno script opera sulle variabili del workspace che
puograve essere arricchito introducendone di nuove
43
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
4444
Come creare uno script
Puograve essere creato utilizzando un qualsiasi editor di
testo
Ricordarsi di salvare il file come ldquosolo testordquo e di dare
lrsquoestensione m
Il file di script deve essere presente nella directory
corrente o il cammino (path) che identifica la directory in cui si trova lo script deve essere salvato tra i path di
Matlab
Matlab include un editor per creare o modificare
script
44
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Nomi degli script
Il nome del file deve cominciare con una lettera e puogravecontenere cifre e il carattere underscore fino a 31 caratteri
Non dare lo stesso nome al file di script e a una variabile
Non chiamare uno script con lo stesso nome di un comando
o funzione MATLAB
Per verificare se esiste giagrave qualcosa che ha un certo nome
si puograve utilizzare la funzione exist
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Suggerimenti per strutturare e documentare uno script
1 Sezione dei commenti
Il nome del programma e le parole chiave nella prima riga
La data di creazione e i nomi degli autori nella seconda riga
La definizione dei nomi delle variabili per ogni variabile di input e di output
Il nome di ogni funzione creata dallrsquoutente che viene usata nelprogramma
Il comando help visualizza tutta la sezione dei commenti allrsquoinizio delloscript
2 Sezione di Input inserimento dei dati in input eo uso di
funzioni di input
3 Sezione di calcolo
4 Sezione di output uso si funzioni per visualizzare i risultatidel programma
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Dati su cui opera uno script file
Gli script non accettano argomenti drsquoentrata e drsquouscita
Usano
variabili giagrave presenti nel workspace
variabili acquisite da tastiera o file
nuove variabili introdotte nello script
Le variabili interne allo script diventano variabili del workspace
Permangono dopo lrsquoesecuzione dello script
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
4848
Sezione di calcolo
Calcoli matematici
Assegnamenti
Strutture di controllo
Condizioni
Cicli
Comandi per la costruzione di grafici
Chiamate a funzioni
48
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5
Istruzioni della programmazione strutturata if e while
Hanno sintassi simile a quella di C semantica uguale
Vediamo due script che ne fanno uso
script nel file quadWhilem
quad=[]
i = 1
while (i lt= x)
quad (i) = ii
i=i+1
end
quad
gtgt x=3
x = 3
gtgt quadWhile
quad =
1 4 9
gtgt
script nel file divisiblem
if (rem (x 2) == 0)
fprintf (evenn)
elseif (rem (x 3) == 0)
fprintf (divisible by 3n)
elseif (rem(x5)==0)
fprintf (divisible by 5n)
else
fprintf (prime or divisible by xgt5n)
end
gtgt x=8
x = 8
gtgt divisible
even
gtgt x=15
x = 15
gtgt divisible
divisible by 3
gtgt x=17
x = 17
gtgt divisible
prime or divisible by xgt5