strumenti per il calcolo numerico...

49
Strumenti per il calcolo numerico Matlab/Octave Informatica B Informatica B Prof. A. Prof. A. Morzenti Morzenti

Upload: phungkien

Post on 16-Feb-2019

224 views

Category:

Documents


0 download

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