NOZIONI di MATLAB. Francesca Pelosi. Master Scienza e Tecnologia Spaziale a.a. 2011 2012. Dipartimento Matematica Università di Roma Tor Vergata



Documenti analoghi
Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Matlab: Gestione avanzata dei file

Introduzione al MATLAB c Parte 2

MATLAB c Utilizzo di Matlab. Operazioni fondamentali. Elementi di grafica.

Comandi di Input/Output in Matlab

Matlab: Strutture di Controllo. Informatica B

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

Introduzione al MATLAB c Parte 1

Rapida Introduzione all uso del Matlab Ottobre 2002

Finestre grafiche. >> figure >> figure(n)

Grafici tridimensionali

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Dati importati/esportati

SPECIFICHE E LIMITI DI EXCEL

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Introduzione al Foglio Elettronico

I file di dati. Unità didattica D1 1

Lezione 8. La macchina universale

Gestione dei File in C

MATLAB (1) Introduzione e Operazioni con array

4 3 4 = 4 x x x 10 0 aaa

Introduzione alla programmazione in C

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

Funzioni in C. Violetta Lonati

Corso di Visione Artificiale. Matlab per Visione. Samuel Rota Bulò

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Tipi di dato-prima parte

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Script. Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 13 Agosto 2014

Interpolazione ed approssimazione di funzioni

Cosa è un foglio elettronico

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

FORMULE: Operatori matematici

Informatica. Rappresentazione dei numeri Numerazione binaria

Introduzione al Linguaggio C

Introduzione al MATLAB c

Variabili e tipi di dato

Alcune regole di base per scrivere un programma in linguaggio C

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Introduzione agli ambienti

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

INFORMATICA - I puntatori Roberta Gerboni

UD6 - MATLAB. Gestione della grafica

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Logica e codifica binaria dell informazione

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

La Stampa Unione. Individuare la lista indirizzi per la Stampa Unione

Potenzialità statistiche Excel

CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica

Convertitori numerici in Excel

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Statistica 4038 (ver. 1.2)

Matlab: Funzioni. Informatica B. Daniele Loiacono

Laboratorio di Matlab

RAPPRESENTAZIONE GRAFICA E ANALISI DEI DATI SPERIMENTALI CON EXCEL

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

Lezioni su MATLAB. Ingegneria Civile/Meccanica

EXCEL FUNZIONI PRINCIPALI

Aritmetica dei Calcolatori 2

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

LINGUAGGI DI PROGRAMMAZIONE

Richiesta pagina PHP (es: index.php)

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. I file in Matlab

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

INTRODUZIONE A MATLAB Matrix Laboratory

Lezione 5. Fogli di calcolo

MATLAB: FILES. Informatica B/C - A.A. 2013/2014

Arduino: Programmazione

Gli algoritmi: definizioni e proprietà

Documentazione esterna al software matematico sviluppato con MatLab

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Visualizzazione grafica. dell'output di un programma con GNUplot

Il sistema operativo UNIX/Linux. Gli script di shell

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B

Introduzione al Python

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Fogli Elettronici: MS Excel

STRUMENTI DI PRESENTAZIONE MODULO 6

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

I database relazionali (Access)

Ottimizzazione delle interrogazioni (parte I)

3. La sintassi di Java

MODULO 4: FOGLIO ELETTRONICO (EXCEL)

Introduzione a MATLAB. Il Laboratorio. MATLAB Cos è? Oltre alle lezioni. Octave ( ) Scilab ( )

Fasi di creazione di un programma

Microsoft Excel. Il foglio elettronico Microsoft Excel Cartelle, Fogli di lavoro e celle Contenuto delle celle. Numeri, date, formule, testo, funzioni

Il foglio elettronico: Excel

Compilatore risorse display grafico LCD serie IEC-line

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Corso di Matematica per la Chimica

+ / operatori di confronto (espressioni logiche/predicati) / = > < Pseudo codice. Pseudo codice

Uso delle tabelle e dei grafici Pivot

LEZIONE DI MATLAB 2.0. Ing.Irene Tagliente

Transcript:

NOZIONI di MATLAB Francesca Pelosi Dipartimento Matematica Università di Roma Tor Vergata Master Scienza e Tecnologia Spaziale a.a. 2011 2012 NOZIONI di MATLAB p. 1/83

MATLAB = MATrix LAboratory È un sistema interattivo in cui l unità base dei dati è un array (es: vettore=array a 1 indice, matrice=array a 2 indici), per il quale non è chiesto il dimensionamento. È un interprete di comandi: non richiede la fase di traduzione in codice macchina. È un linguaggio di alto livello (come il C o il Java). A differenza del C, le variabili vengono create assegnando ad esse dei valori. Ha una buona potenzialità grafica. Versioni per Unix/Linux, Windows, Mac. I files scritti in Matlab sono portabili da una piattaforma all altra. NOZIONI di MATLAB p. 2/83

Cinque parti principali 1. Il linguaggio MATLAB (con la relative gestione delle principali strutture di programmazione). 2. La gestione dell ambiente di lavoro MATLAB ( The MATLAB Working Environment). 3. La gestione dell ambiente grafico (Handle Graphics). 4. Libreria di funzioni matematiche (Mathematical Functions Library). 5. Libreria per permettere di far interagire programmi scrit- ti in C o FORTRAN con MATLAB (API, Application Program Interface). NOZIONI di MATLAB p. 3/83

... a cui si aggiungono Librerie per applicazioni specifiche (TOOLBOX): statistica, curve fitting, ottimizzazione, analisi di immagini, controllo e identificazione di sistemi, logica fuzzy, equazioni alle derivate parziali, matematica finanziaria,... Programmazione grafica per agevolare la modellizzazione e la simulazione di sistemi complessi (SIMULINK). Per maggiori dettagli: www.mathworks.com NOZIONI di MATLAB p. 4/83

Avviare MATLAB All avvio compaiono un pò di informazioni sulla versione, sull help in linea, sui programmi dimostrativi oltre al sito www.mathworks.com, poi c e il prompt < M A T L A B > Copyright 1984-1999 The MathWorks, Inc. Version 5.3.0.14912a (R11) Jun 19 1999 To get started, type one of these: helpwin, helpdesk, or demo. For product information, visit www.mathworks.com. NOZIONI di MATLAB p. 5/83

>> help matlab\general - General purpose commands. matlab\ops - Operators and special characters. matlab\lang - Programming language constructs. matlab\elmat - Elementary matrices and matrix manipulation. matlab\randfun - Random matrices and random streams. matlab\elfun - Elementary math functions. matlab\specfun - Specialized math functions. matlab\matfun - Matrix functions - numerical linear algebra. matlab\datafun - Data analysis and Fourier transforms. matlab\polyfun - Interpolation and polynomials. matlab\funfun - Function functions and ODE solvers. matlab\sparfun - Sparse matrices. matlab\scribe - Annotation and Plot Editing. matlab\graph2d - Two dimensional graphs. matlab\graph3d - Three dimensional graphs. matlab\specgraph - Specialized graphs. matlab\graphics - Handle Graphics. matlab\uitools - Graphical User Interface Tools. NOZIONI di MATLAB p. 6/83

... matlab\strfun - Character strings. matlab\imagesci - Image and scientific data input/output. matlab\iofun - File input and output. matlab\audiovideo - Audio and Video support. matlab\timefun - Time and dates. matlab\datatypes - Data types and structures. matlab\verctrl - Version control. matlab\codetools - Commands for creating and debugging code. matlab\helptools - Help commands. matlab\winfun - Windows Operating System Interface Files (COM/DDE) matlab\demos - Examples and demonstrations. matlab\timeseries - Time series data visualization and exploration. matlab\hds - (No table of contents file) matlab\guide - Graphical User Interface Tools. matlab\plottools - Graphical User Interface Tools. toolbox\local - General preferences and configuration information. NOZIONI di MATLAB p. 7/83

Assegnazione di variabili scalari >> a=2.31» variabile = espressione a: nome della variabile: max 31 caratteri alfanumerici e underscore, il primo dei quali deve essere una lettera; lettere maiuscole e minuscole sono considerate diverse sia nei comandi che nei nomi delle variabili. 2.31: valore numerico assegnato alla variabile. Simbolo ";" >> a=2.31 produce a = 2.3100 >> a=2.31; non produce risposta NOZIONI di MATLAB p. 8/83

Operazioni aritmetiche tra scalari ˆ potenza prodotto / divisione differenza Es: per calcolare x = 4+35 2/3 2 (6+3 2 ) >> x= (4 + 3ˆ5-2/ 3)/(2 (6+3ˆ2)) 1. Sono osservate le precedenze classiche dell artimetica 2. Per alterare le precedenze si utilizzano esclusivamente le parentesi tonde. NOZIONI di MATLAB p. 9/83

Formato di rappresentazione dei numeri >> c=0.123456 c = 0.1235 Il numero è stato rappresentato con 4 cifre decimali (taglio) >> format short e >> c c = 1.2346e-01 Formato esponenziale con 4 cifre di mantissa (arrotondamento) >> format long e >> c c = 1.234560000000000e-01 Formato esponenziale con 15 cifre di mantissa >> format long >> c c = 0.123456000000000 Rappresentato con 15 cifre dimantissa NOZIONI di MATLAB p. 10/83

Formati disponibili: >> help format VARIABILE format format short format long format short e format long e format short g format long g... SIGNIFICATO default virgola fissa scalata con 4 cifre per la mantissa virgola fissa scalata con 15 cifre per la mantissa floating-point (esponenziale) con 4 cifre di mantissa floating-point (esponenziale) con 15 cifre di mantissa sceglie la rappresentazione migliore con 4 cifre Sceglie la rappresentazione migliore con 15 cifre Di default, Matlab lavora con variabili in doppia precisione. Ogni numero memorizzato in doppia precisione occupa 8 Bytes. Le variabili scalari sono viste come array di dimensione 1 1 (una riga e una colonna). NOZIONI di MATLAB p. 11/83

Variabili predefinite: VARIABILE ans i,j pi eps realmax realmin Inf SIGNIFICATO valore ultima operazione eseguita e non assegnata ad una variabile unità immaginaria, 1 approssimazione di π precisione macchina massimo numero macchina positivo rappresentabile minimo numero macchina positivo rappresentabile, ossia un numero maggiore di realmax NaN Not a Number (0=0, Inf/Inf,...) computer version clock date tipo di computer versione di MATLAB contiene data e orario corrente (vettore di 6 elementi) contiene data sotto forma di stringa Il valore di queste variabili può essere modificato, anche se è un operazione fortemente sconsigliata. NOZIONI di MATLAB p. 12/83

VETTORI E MATRICI NOZIONI di MATLAB p. 13/83

Vettori e matrici La struttura principale di MATLAB è l array. Sei tipi di dati possono comporre un array: char, double, sparse, cell, uint8, struct. Assegnazione di array Modi equivalenti per generare un array 1 4, 1 riga e 4 colonne, vettore riga: >> a=[1 2 3 4]; >> a=[1,2,3,4]; >> a=1:4; Per generare un array 4 1, 4 righe e 1 colonna, vettore colonna: >> b=[1; 2; 3; 4]; Per generare un array 2 3, matrice 2 righe e 3 colonne: >> c=[1 2 3; 4 5 6] NOZIONI di MATLAB p. 14/83

Vettori e Matrici Comandi per generare sequenze uniformemente distribuite: notazione due punti: >> vettore = Inizio:Passo:Fine ESEMPI: >> x = 1:2:15 x = 1 3 5 7 9 11 13 15 >> y=1:9 y = 1 2 3 4 5 6 7 8 9 >> z=10:-2:2 z = 10 8 6 4 2 NOZIONI di MATLAB p. 15/83

Vettori e Matrici Comandi per generare sequenze uniformemente distribuite: comando linspace: >> linspace (Inizio, Fine, Numero di Punti) ESEMPI: >> a=0; b=1; n=8; >> x=linspace(a,b,n) x = 0 0.1429 0.2857 0.4286 0.5714 0.7143 0.8571 1.0000 OSS: Il vettore ha componenti: x(i) = a+(i 1) b a n 1 NOZIONI di MATLAB p. 16/83

Vettori e matrici Assegnazione di array OSS: l istruzione >> d(4,3)=10 genera una matrice 4 3 con tutti elementi nulli tranne quello di posto 4,3: >> d= 0 0 0 0 0 0 0 0 0 0 0 10 NOZIONI di MATLAB p. 17/83

Dimensione di un array Il comando size fornisce le dimensioni di una matrice: >> size(c) ans = 2 3 produce il vettore riga di due elementi contenenti il numero di righe e di colonne di c. Il comando length fornisce la lunghezza di un vettore: >> length(a) ans = 4 produce un numero pari alla lunghezza del vettore a. length(a) max(size(a)) NOZIONI di MATLAB p. 18/83

Vettori e matrici: Operazione di trasposizione: >> a ans = 1 2 3 4 Il vettore trasposto di a viene memorizzato nella variabile ans >> c1=c c1 = 1 4 2 5 3 6 La matrice trasposta di c viene memorizzato nella matrice c1 NOZIONI di MATLAB p. 19/83

Vettori e matrici Come accedere agli elementi di array: Per accedere ad un elemento di un vettore: >> a(2) ans = 4 Per accedere ad un elemento di una matrice >> c(2,1) ans = 2 Come lavorare con righe e colonne di array Per estrarre la prima colonna di una matrice >> e=c(:,1) e = 1 4 NOZIONI di MATLAB p. 20/83

Vettori e matrici Come lavorare con righe e colonne di array Per estrarre le prime due colonne di una matrice >> f=c(:,1:2) f = 1 2 4 5 Come modificare un elemento di un array: >> a(2)=10 a = 1 10 3 4 Per modificare un elemento di una matrice: >> c(2,3)=20 c = 1 2 3 4 5 20 NOZIONI di MATLAB p. 21/83

Vettori e matrici: operazioni >> help matlab\ops operazioni dell algebra lineare: + somma di vettori o matrici (elemento per elemento) differenza di vettori o matrici (elemento per elemento) prodotto tra vettori e/o matrici (righe per colonne) ˆ potenza di matrici (matrice quadrata ed esponente scalare) tali che : per somma e differenza: gli operandi devono avere le stesse dimensioni per il prodotto: la dimensione interna dei due array deve coincidere. NOZIONI di MATLAB p. 22/83

Vettori e matrici: operazioni >> help matlab\ops l operazione \ backslash o divisione sinistra: se A è quadrata A\B da come risultato la matrice divisione di B in A ovvero inv(a)*b ma calcolata con opportuni algoritmi (si veda doc mldivide ). In particolare se se A è una matrice quadrata n n e B un vettore colonna di n componenti x=a\b fornisce la soluzione del sistema lineare Ax = B attraverso il metodo di Gauss. se A è una matrice m n con n m e B un vettore colonna di m componenti x=a \B fornisce la soluzione ai minimi quadrati del sistema lineare Ax = B (che sarà sottoderminato o sovradeterminato a seconda che m < n o m > n). NOZIONI di MATLAB p. 23/83

Vettori e matrici: operazioni >> help matlab\ops l operazione / o divisione destra: se A è quadrata B/A da come risultato la matrice divisione di A in B ovvero B*inv(A) (si veda doc mrdivide). se A è una matrice n n e B un vettore riga di n componenti x=a/b fornisce la soluzione del sistema lineare xa = B attraverso il metodo di Gauss con pivot parziale. se B è una matrice m n con n m e A un vettore colonna di m componenti x=b/a fornisce la soluzione ai minimi quadrati del sistema lineare xa = B (che sarà sottoderminato o sovradeterminato a seconda che m < n o m > n). NOZIONI di MATLAB p. 24/83

Vettori e matrici: operazioni >> help matlab\ ops altre utili operazioni (elemento per elemento tra matrici e/o vettori di stesse dimensioni o scalari). prodotto tra gli elementi di vettori e/o matrici.\,./ divisione sinistra e destra tra gli elementi di vettori e/o matrici.ˆ elevamento a potenza tra gli elementi di vettori e/o matrici NOZIONI di MATLAB p. 25/83

Matrici particolari: >> help elmat A=ones(m,n): produce la matrice A di dimensioni m n, i cui elementi sono uguali ad 1. B=zeros(m,n): produce la matrice B di dimensioni mxn, i cui elementi sono uguali ad 0. I=eye(n) produce la matrice identità I di dimensioni n n. I=eye(m,n) produce la matrice I di dimensioni m n, che ha 1 sulla diagonale principale e 0 fuori. R=rand(m,n) produce la matrice R di dimensioni m n, di elementi pseudo-random uniformemente distribuiti. NOZIONI di MATLAB p. 26/83

Matrici particolari: >> help elmat diag: Sia v un vettore di n componenti. diag(v,k) è una matrice quadrata di ordine n+abs(k) che ha gli elementi di v sulla diagonale k-esima. se k = 0 è la diagonale principale (=diag(v)) se k > 0 si trova sopra la diagonale principale se k < 0 si trova sotto la diagonale principale Sia A una matrice. diag(a,k) è un vettore colonna formato dagli elementi della diagonale k-esima di A: diag(a) è la diagonale principale di A. diag(diag(a)) è la matrice diagonale che ha la stessa diagonale principale di A. NOZIONI di MATLAB p. 27/83

Funzioni elementari su matrici: >> help elfun funzioni trigonometriche: sin(x), cos(x), tan(x),... funzioni esponenziali: exp(x), log(x), log10(x),... funzioni complesse: abs(x), conj(x), imag(x), real(x),... funzioni per arrotondamenti numerici: ceil(x), floor(x), fix(x), round(x),... Tali funzioni eseguono la stessa operazione su ogni argomento dell array x. NOZIONI di MATLAB p. 28/83

GRAFICA NOZIONI di MATLAB p. 29/83

Grafica 2D: help graph2d La funzione plot plot(x,y) disegna il diagramma cartesiano dei punti che hanno valori delle ascisse nel vettore x, delle ordinate nel vettore y, congiungendo i punti con una linea blue; sintassi completa: >> plot(x,y, color linestyle marker ) color: c,m,y,r,b,g,w,k linestyle: -,--,:,-.,none marker: +,o,,.,+,x,s,d,ˆ,<,>,p,h Si può arricchire il grafico con le funzioni: xlabel (nome asse ascisse), ylabel (nome asse ordinate), title (titolo) NOZIONI di MATLAB p. 30/83

Grafica 2D ESEMPI: file grafica.m 1000 800 600 400 cubica x = -10:0.1:10; y=x.ˆ3; plot(x,y) xlabel( ascisse ) ylabel( ordinate ) title( cubica ) ordinate 200 0 200 400 600 800 1000 10 8 6 4 2 0 2 4 6 8 10 ascisse 1 0.8 x=[-8:0.1:8]; y= sin (x)./ x; plot(x, y) xlabel( ascisse ) ylabel( ordinate ) ordinate 0.6 0.4 0.2 0 0.2 0.4 8 6 4 2 0 2 4 6 8 ascisse NOZIONI di MATLAB p. 31/83

Grafica 2D ESEMPI t=0:pi/10:2*pi; x=cos(t); y=sin(t); t1=0:pi/100:2*pi; x1=cos(t1); y1=sin(t1); figure plot(x,y, ro ) hold on plot(x1,y1, r- ) xlabel( cos(t) ) ylabel( sin(t) ) title( Cerchio unitario ) axis square sin(t) 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 Cerchio unitario 1 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 cos(t) NOZIONI di MATLAB p. 32/83

Grafica 3D: help graph3d La funzione plot3 plot3(x,y,z) disegna il diagramma cartesiano dei punti nello spazio che hanno valori i valori delle 3 coordinate nei vettori x, y, z; si può aggiungere un quarto input, come per plot per specifiche di linea-colore e simbolo: >> plot(x,y,z, color linestyle marker ) Analogamente si può arricchire il grafico con le funzioni: xlabel, ylabel, zlabel, title NOZIONI di MATLAB p. 33/83

Grafica 3D ESEMPIO t=linspace(0,10*pi,200); figure plot(t.*sin(t),t.*cos(t),t, g ) xlabel( ascisse ) ylabel( ordinate ) zlabel( quote ) title( Curva 3D ) 35 30 25 quote 20 15 10 5 0 40 20 0 ordinate 20 40 30 20 10 0 ascisse 10 20 30 NOZIONI di MATLAB p. 34/83

Grafica 3D: superfici Per rappresentare una superficie (funzione a due variabili z = f(x,y)): La funzioni mesh(xx,yy,zz) e surf(xx,yy,zz) generano una superficie, a partire da tre argomenti xx contiene le ascisse (matrice) yy contiene le ordinate (matrice) zz contiene le quote (matrice) Le due matrici, xx, e yy, si possono costruire, mediante la funzione meshgrid(x,y): [xx,yy]= meshgrid(x,y) x e y sono due vettori xx e yy sono due matrici entrambe di legth(y) righe e length(x) colonne: la prima, xx, contiene, ripetuti in ogni riga, i valori di x la seconda, yy, contiene, ripetuti in ogni colonna, i valori di y trasposto NOZIONI di MATLAB p. 35/83

Grafica 3D: superfici (mesh) ESEMPI: x=-4:0.05:4; y=x; [xx,yy]=meshgrid(x,y); zz=xx.ˆ2 + yy.ˆ2; mesh(xx,yy,zz) xlabel( ascisse ) 35 ylabel( ordinate ) 30 25 zlabel( quote ) quote z 20 15 10 5 0 4 2 4 0 ordinate y 2 4 4 2 0 ascisse x 2 NOZIONI di MATLAB p. 36/83

Grafica 3D: superfici (surf) ESEMPI: x=-8:0.1:8; y=x; [xx, yy] = meshgrid(x, y); r = sqrt(xx.ˆ2 + yy.ˆ2); zz = sin (r)./r; surf(xx,yy,zz) 1 xlabel( ascisse ) 0.8 ylabel( ordinate ) 0.6 0.4 zlabel( quote ) quote 0.2 0 0.2 0.4 10 5 10 0 ordinate 5 10 10 5 0 ascisse 5 NOZIONI di MATLAB p. 37/83

Grafica 2D/3D Altri comandi utili per personalizzare gli assi: axis, grid, box, subplot, hold,... i colori (grafici 3D): colormap, shading,... il punto di vista (grafici 3D): view, rotate3d,... Con il comando print si possono salvare specificando il formato (.eps,.jpg,.tiff,.bmp,...); altre funzioni per altri tipi di grafici: 2D: loglog, polar,... contour, contour3, contourf... fill, fill3,... hist, bar, patch... figure e close: per aprire e chiudere una finestra grafica; una volta creato un grafico molte modifiche possono NOZIONI di MATLAB p. 38/83

SCRIPT e FUNCTION NOZIONI di MATLAB p. 39/83

Script e Function Il processo di programmazione in MATLAB funziona nel modo seguente: (1) Si crea un M-file usando un editore di testi (per es. Editor/Debug); (2) Si chiama l M-file dalla linea di comando oppure da un altro M-file. Esistono due tipi di M-file: Script: + opera sui dati presenti + non accetta variabili in input + non ha variabili in output; + utile per automatizzare una serie di istruzioni che si devono eseguire più volte. Function: + le variabili interne sono locali + può accettare variabili in input + può avere variabili in output; + utile per estendere il linguaggio MATLAB alle applicazioni personali NOZIONI di MATLAB p. 40/83

Script files Uno script è un file di testo contenente una sequenza di comandi MATLAB, senza variabili di input e output, salvato con estensione.m (M-file). Serve per automatizzare una serie di comandi MATLAB che devono essere eseguiti più volte. Opera sui dati esistenti nell ambiente di lavoro di base, oppure può creare nuovi dati. I dati che vengono generati rimangono nell ambiente di lavoro di base e possono essere riutilizzati per altri calcoli. I comandi all interno di uno script sono eseguiti sequenzialmente, come se fossero scritti nella finestra dei comandi; Per eseguire Il file si digita il suo nome (senza.m). NOZIONI di MATLAB p. 41/83

Script files Puó essere creato utilizzando un qualsiasi editor di testo Ricordarsi di salvare il file come `solo testoé di dare l estensione.m Il file di script deve essere presente nella directory corrente o comunque in uno dei path standard di matlab Matlab include un editor dove creare o modificare script Il nome del file deve cominciare con una lettera e può contenere cifre e il carattere, fino a 31 caratteri. Evitare di: avere lo stesso nome per il file di script e a una variabile; creare uno script con lo stesso nome di un comando o funzione MATLAB Per verificare se esiste già qualcosa che ha un certo nome si può utilizzare la funzione exist. NOZIONI di MATLAB p. 42/83

Script files: contenuto Chiamate di un altra function; Cicli for oppure while; if, elseif, else; Input/Output interattivi; Calcoli; Assegnazioni; Commenti; Linee bianche; Comandi per la costruzione di grafici. NOZIONI di MATLAB p. 43/83

Script files: esempio Esempio: file alglin.m % Risoluzione di un sistema lineare % Ax = b % e calcolo dell errore relativo % A: Matrice di Hilbert % b: Ottenuto dalla soluzione esatta % Inizio istruzioni A=hilb(n); % Calcolo x=[1:n] ; b=a x; x1=a\b; errore=norm(x-x1) errorerel=errore/norm(x) NOZIONI di MATLAB p. 44/83

Script files: esempio Esempio: file flower.m % A script to produce % flower peta plots theta = -pi:0.01:pi; % Computations rho(1,:) = 2 sin(5 theta).ˆ2; rho(2,:) = cos(10 * theta).ˆ3; rho(3,:) = sin(theta).ˆ 2; rho(4,:) = 5 * cos(3.5 theta).ˆ 3; for k = 1:4 polar(theta, rho(k,:)) % Graphics output pause end NOZIONI di MATLAB p. 45/83

Script files: input, menu Istruzioni utili per l acquisizione di dati da tastiera: input v=input( stringa di testo ): fa apparire sul prompt la stringa di testo e attende per un input da tastiera che verrà memorizzato in v; menu choice=menu( titolo, scelta1, scelta2,... ): genera un menu di scelta per l utente, formato da un titolo e varie possibile scelte: occorre cliccare una scelta e choice assumerà il valore numerico corrispondente alla scelta effettuata. NOZIONI di MATLAB p. 46/83

Script files: disp, sprintf Istruzioni utili per la stampa di risultati su video: disp disp(x): fa apparire sul prompt l array x senza il nome, se x è una stringa appare il testo contenuto; si veda int2str, num2str, format; sprintf S=sprintf(format, A): formatta i dati in A secondo le specifiche contenute in format e li memorizza in S format: è una stringa che contiene specifiche di conversione del linguaggio C precedute da %, (d, i, o, u, x, X, f, e, E, g, G, c); altri formati speciali sono usati per produrre linee di interruzioni (\n, \r, \t, \b, \f); NOZIONI di MATLAB p. 47/83

Function files: struttura Riga di definizione. Questa riga definisce il nome della function, il numero e l ordine delle variabili in ingresso e in uscita. Riga H1. Con il comando lookfor nome-function MATLAB scrive questa riga. Con il comando help di un intera cartella, MATLAB scrive questa riga per ogni M-file della cartella. Testo per help. Con il comando help nome-function MATLAB scrive il testo per help insieme alla riga H1. Corpo della function. Contiene le istruzioni per il calcolo e assegna il valore alle variabili di uscita (analogamente ai files di tipo script). Commenti. Righe non eseguibili, aiutano la lettura. NOZIONI di MATLAB p. 48/83

Function files: riga di definizione >> function [output] = nome function(input) Output [x]: una sola variabile in uscita x [x,y,z]: più variabili in uscita x,y,z [ ]: nessuna variabile in uscita Input Le variabili in input possono essere array (scalari, vettori, matrici) ma anche il nome di altre function, separati da virgola (notazione posizionale): function [t,y] = ode45( f,[t0,tf],y0) Come nel caso degli script le function possono essere scritte in file di testo sorgenti: devono avere estensione.m, devono avere lo stesso nome della funzione. Attenzione a non ridefinire funzioni esistenti: exist( nomefunzione ) NOZIONI di MATLAB p. 49/83

Function files Quando una function viene eseguita, viene creato un workspace locale in cui vengono memorizzate tutte le variabili usate nella function (inclusi i parametri formali) Quando viene invocata una function: vengono calcolati i valori dei parametri attuali di ingresso viene creato un workspace locale per la funzione i valori dei parametri attuali di ingresso vengono copiati nei parametri formali all interno del workspace locale; viene eseguita la function; vengono copiati i valori di ritorno dal workspace locale a quello principale (nei corrispondenti parametri attuali); il workspace locale viene distrutto. NOZIONI di MATLAB p. 50/83

Function files: esempi Trasposta function [t]=trasposta(m) [r,c]=size(m); for i=1:r for j=1:c t(j,i)=m(i,j); end end Fattoriale function [f]=factric(n) if (n==0) f=1; else f=n factric(n-1); end NOZIONI di MATLAB p. 51/83

Variabili funzione Versioni recenti di MATLAB definiscono in modo pieno il tipo funzione, permettendo di assegnare a variabili valori di tipo funzione definire funzioni che ricevono parametri di tipo funzione; un valore di tipo funzione può essere applicato a opportuni argomenti: si ottiene una invocazione della funzione ESEMPIO: >> f=@(x)(x.ˆ2-4) f è una variabile di tipo funzione, f(x) = x 2 4, che può essere valutata come segue: >> f(3), f([2,4, 5, 7]), >> feval(f, 5) NOZIONI di MATLAB p. 52/83

Variabili funzione Si può assegnare una variabile di tipo funzione anche utilizzando la funzione inline ESEMPIO: >> g=inline( x.ˆ2-4 ) analogamente f è una variabile di tipo funzione che può essere valutata come segue: >> f(3), f([2,4, 5, 7]), feval(f, 5) Entrambe le definizioni possono creare funzioni a piú variabili: >> z=inline( x.ˆ2-y, x, y ) >> z=@(x,y)(x.ˆ2-y) z simula la funzione di due variabili, z(x,y) = x 2 y, in cui è stato specificato l ordine delle variabili, si valuta assegnando valori agli array x,y: >> z(3,4), >> feval(z, 5,7) NOZIONI di MATLAB p. 53/83

STRUTTURE di CONTROLLO NOZIONI di MATLAB p. 54/83

Tipo di dato logico È un tipo di dato che può assumere solo due valori 1 : true (vero) 0 : false (falso) I valori di questo tipo possono essere generati direttamente da due funzioni speciali (true, false) dagli operatori relazionali dagli operatori logici I valori logici occupano un solo byte di memoria (i numeri ne occupano 8): Esempio: >> a = true; a è un vettore 1 1 che occupa 1 byte e appartiene alla classe tipo logico. NOZIONI di MATLAB p. 55/83

Operatori relazionali Gli operatori relazionali operano su tipi numerici o stringhe Forma generale: a OP b a e b possono essere espressioni aritmetiche, variabili, stringhe. Operatori disponibili: 3 < 4 equivale a true (1) 3 == 4 equivale a false (0) ==, =, >, >=, <, <=, Operatori relazionali possono essere usati per confrontare vettori con vettori della stessa dimensione: [ 1 0; -2 1] < 0 equivale a [0 0; 1 0] [1 0; -2 1] >= [2-1; 0 0] equivale a [0 1; 0 1] NOZIONI di MATLAB p. 56/83

Operatori logici &&, & (AND), (OR) (NOT) a b a && b a b a 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0 && e funzionano con gli scalari e valutano prima l operando più a sinistra. Se questo è sufficiente per decidere il valore di verità dell espressione non vanno oltre: (b = 0) && (a/b > 10) controlla prima b =0 e se questo è falso non valuta il secondo termine. & e funzionano con scalari e vettori e valutano tutti gli operandi prima di valutare l espressione complessiva. NOZIONI di MATLAB p. 57/83

Ordine fra gli operatori Un espressione viene valutata nel seguente ordine: operatori aritmetici operatori relazionali da sinistra verso destra NOT ( ) AND (& e &&) da sinistra verso destra OR ( e ) da sinistra verso destra Qualche utilte funzione logica predefinita: all, any, isinf, isempty, finite, ischar, isnumeric, isreal,... NOZIONI di MATLAB p. 58/83

Strutture di controllo: if-then-else if valuta una espressione logica ed esegue un gruppo di istruzioni a seconda del valore dell espressione logica. if espressione logica istruzioni end if espressione logica istruzioni elseif espressione logica istruzioni else istruzioni end NOZIONI di MATLAB p. 59/83

Strutture di controllo: if-then-else ESEMPIO: formula stabile per radici di ax 2 +bx+c = 0 Se b 0 : x 1 = b b 2 c x 2 = 2a c ax 1 altrimenti (b < 0) : x 2 = b+ b 2 c x 1 = 2a c ax 2 dal file: Eq2grado funstab.m... if b>= 0 x1=-b-sqrt(b b-4 a c); x2=c/(a x1) else x2=-b+sqrt(b b-4 a c); x1=c/(a x2) end x1=x1/(2 a) x2=x2/(2 a) NOZIONI di MATLAB p. 60/83

Strutture di controllo: switch case Vengono eseguite solo le istruzioni successive al primo case dove switch-expr assume lo stesso valore di case-expr switch case case-expr istruzioni case case-expr1 istruzioni case case-expr2 istruzioni otherwise istruzioni end switch-expr NOZIONI di MATLAB p. 61/83

Strutture di controllo: switch case ESEMPIO: file esempio while.m... switch numero case -1 disp( uno negativo ); case 0 disp( zero ); case 1 disp( uno ); otherwise disp( altro valore (diverso da -1,0,1) ); end NOZIONI di MATLAB p. 62/83

Strutture di controllo: for Il ciclo for esegue un gruppo di istruzioni un numero fissato di volte. for istruzioni end indice = inizio : incremento : fine incremento di default: 1. Se incremento> 0, allora il ciclo termina quando la variabile indice è maggiore di fine. Se incremento< 0, allora il ciclo termina quando la variabile indice è minore di fine. NOZIONI di MATLAB p. 63/83

Strutture di controllo: for ESEMPIO: Calcolo sommatoria n i=1 b i b: un array che contiene gli addendi b i ; s=0 for i=1:n s = s+b(i); end in MATLAB si può utilizzare sum(b) NOZIONI di MATLAB p. 64/83

Strutture di controllo: while Il ciclo while esegue un gruppo di istruzioni fintanto che l espressione di controllo rimane vera. L espressione di controllo è una qualunque espressione logica. while istruzioni end espressione di controllo ESERCIZIO: la successione di funzioni f n (x) = (x 2 x) n per 0 x 1 è uniformemente convergente alla funzione f(x) = 0. Disegnare in uno stesso grafico le curve per i primi valori di n fintanto che sup fn(x) f(x) > 10 3 0 x 1 file :esempio while.m NOZIONI di MATLAB p. 65/83

FILES INPUT-OUTPUT NOZIONI di MATLAB p. 66/83

Files Input-Output: lettura e scrittura Tipi di file gestiti ascii : file di testo.mat : file binari Comandi più semplici da usare, per la lettura e scrittura di array: save load Comandi più complessi con maggiori specifiche sul salvataggio e lettura dati generici: fwrite fprintf fread fscanf NOZIONI di MATLAB p. 67/83

Files Input-Output:.mat save save filename: salva su filename.mat tutte le variabili contenute nello spazio di lavoro save filename array1 array2: salva su filename.mat le variabili array1 e array2 I file.mat hanno un formato compatto e contengono: Nomi, tipi e valori di ogni variabile La dimensione degli array Possono essere portati da un computer all altro, anche con sistemi operativi diversi (ma sempre letti da Matlab) NOZIONI di MATLAB p. 68/83

Files Input-Output: ascii save Uso dei file di testo (ascii), ESEMPIO >> x = [1.23 3.14 6.28; -5.1 7.00 0]; >> save filename.dat ascii x; Produce il file filename.dat organizzato come segue 1.2300000e+000 3.1400000e+000 6.2800000e+000-5.1000000e+000 7.0000000e+000 0.0000000e+000 Nota: si puó usare qualsiasi estensione per questi file, è buona norma distinguerli dai file.mat NOZIONI di MATLAB p. 69/83

Files Input-Output: load 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, y Se filename non ha estensione o ha estensione.mat, viene trattato come un file.mat load filename.dat: crea una variabile di nome filename che conterrà i dati in filename.dat Il file deve contenere dati separati da virgole o spazi NOZIONI di MATLAB p. 70/83

Files Input-Output: da foglio di calcolo A = xlsread( filename ): importa il file di Microsoft Excel filename.xls nella matrice A Alcuni fogli di calcolo salvano i dati nel formato.wk1 per importare questi dati nella matrice M: M = wk1read( filename ). NOZIONI di MATLAB p. 71/83

Files Input-Output: gestione generale Apertura di un flusso di comunicazione con il file (fid è un intero): fid = fopen(nome, modalità) modalità è una stringa specificata secondo un formato pre-determinato. Scrittura/lettura nel/dal file: fwrite, fprintf, fread, fscanf Chiusura del flusso di comunicazione: status = fclose(fid) NOZIONI di MATLAB p. 72/83

File Input-Output: textread Legge file ASCII organizzati in tabelle [a b c...] = textread(filename, format, n) format: come per sprintf: stringa contenetente caratteri e/o specifiche di conversione d, i, o, u, x, X, f, e, E, g, G, c, s preceduti dal carattete %, e seguiti da lunghezze e campi di precisione opzionali. Formati speciali \n,\r,\t,\b,\f producono linefeed, return, tab, backspace, formfeed. \ produce un backslash character and %% produce %. n: numero di righe da leggere. Se omesso, textread legge fino alla fine del file; a, b, c,...: vettori colonna in cui verranno caricati i dati. NOZIONI di MATLAB p. 73/83

File Input-Output: textread ESEMPIO: Si consoderi il file test input.dat contenente i seguenti dati: James Jones 0+ 3.51 22 yes Sally Smith A+ 3.28 23 No >>[nome cognome gruppo gpa eta risposta]=... textread( test input.dat, %s%s%s%f%d%s ); si veda help textread per le varie opzioni: se si desidera saltare una colonna, per esempio, quella dell età: >>[nome cognome gruppo gpa eta risposta]=... textread( test input.dat, %s%s%s%f% d%s ); NOZIONI di MATLAB p. 74/83

File Input-Output: fopen fid = fopen(nome, modalità) Apre un flusso di comunicazione con il file il cui nome viene specificato come parametro Il nome del file può includere il percorso nell albero delle directory. Se il file non esiste e la modalità di apertura è w il file viene creato Restituisce -1 ed un messaggio di errore se il flusso di comunicazione non è stato aperto, e cioè: Se un file che deve essere aperto in lettura non esiste Se si verifica un errore nell interazione con il supporto di memorizzazione su cui il file risiede NOZIONI di MATLAB p. 75/83

File Input-Output: modalità di apertura r: apre un file esistente in lettura w: apre un file esistente o crea un nuovo file in scrittura con distruzione di quanto già presente nel file a: apre un file esistente o crea un nuovo file in scrittura con posizionamento alla fine del file. rt: come r ma in modalità testuale wt: come w ma in modalità testuale at: come a ma in modalità testuale r+ e rt+: come r/rt ma si può anche scrivere nel file w+ e wt+: come w/wt ma si può anche leggere dal file a+ e at+: come a/at ma si può anche leggere dal file NOZIONI di MATLAB p. 76/83

File Input-Output: fclose status = fclose(fid) Determina la chiusura del flusso di comunicazione con il file identificato da fid. Restituisce 0 se la chiusura è avvenuta senza errori, il valore -1 in caso di problemi. status = fclose( all ) chiude tutti i file NOZIONI di MATLAB p. 77/83

File Input-Output: fwrite cont=fwrite(fid,array,formato) cont: indica il numero di valori effettivamente scritti nel file fid: identificatore del file su cui scrivere (il file deve essere stato aperto in precedenza) array: array contenente i dati da salvare formato: specifica il formato in cui i dati verranno salvati. Formati principali: char, int8, int16, int32, int64, float32, float64 (i numeri indicano il numero di bit usati per rappresentare i valori) NOZIONI di MATLAB p. 78/83

File Input-Output: fread [array cont]=fread(fid, size, formato) I dati letti vengono memorizzati in array size è la dimensione dei dati da leggere: n: legge esattamente n valori. Inf: legge fino alla fine del file. [n m]: legge esattamente n m valori. Dopo l esecuzione di questa istruzione array sarà una matrice n m contenente tutti i valori letti NOZIONI di MATLAB p. 79/83

ESEMPIO: Caricamento di un File: da file esempi.m filename=input( inserisci un nome di file ); [fid msg]=fopen(filename, r ); if(fid>0) [vett cont]=fread(fid, [1 1000], float64 ); disp([num2str(cont) valori letti... ]); fclose(fid); else disp( errore! ); end NOZIONI di MATLAB p. 80/83

ESEMPIO: Salvataggio dati su file: da file esempi.m a=rand(1,1000); filename=input( inserisci un nome di file ); [fid msg]=fopen(filename, w ); if(fid>0) cont=fwrite(fid, a, float64 ); disp([num2str(cont) valori scritti... ]); fclose(fid); else disp( errore! ); end NOZIONI di MATLAB p. 81/83

File Input-Output: fscanf [array cont]=fscanf(fid,format,size) legge i dati contenuti nel file identificato da fid, li converte secondo le specifiche nelle stringa format e li memorizza in array. size (opzionale) limita gli elementi da leggere e cont è il numero elementi letti con successo. Si consideri un file contenente i seguenti dati il cui descrittore è contenuto in fid: 0.00 20.00 30.00 40.00 [z cont] = fscanf(fid, %f ); z é un array: z=[10 20 30 40] [z cont] = fscanf(fid, %f, [2 2]); z é una matrice: z=[10 20; 30 40] NOZIONI di MATLAB p. 82/83

File Input-Output: fprintf cont=fprintf(fid,format,array) formatta la parte reale dei dati contenuti in array secondo le specifiche nelle stringa format e la scrive nel file identificato da fid. cont è il numero dei bytes scritti con successo ESEMPIO x = 0:.1:1; y = [x; exp(x)]; fid = fopen( exp.txt, wt ); fprintf(fid, %6.2f %12.8f\n,y); fclose(fid); si genera il file type exp.txt: 0.00 1.00000000 0.10 1.10517092 NOZIONI di MATLAB p. 83/83