Presentazione MatLab nuova versione
Transcript
Presentazione MatLab nuova versione
Riferimenti bibliografici • Guida per l’utente (http://www.mathworks.com) • G. Naldi, L. Pareschi, Matlab concetti e progetti, Apogeo ed. • Tutorials e programmi disponibili in rete: Introduzione all’ambiente Matlab http:// www.dti.supsi.ch/~bucher/matlab.pdf http://www.dm.unibo.it/ /~guerrini/html/matlab.html http:// www.dm.unibo.it/ /~guerrini/html/primer.ps • Lucidi delle lezioni nella pagina web del corso Introduzione Matlab Carla Guerrini 1 Introduzione Matlab Che Cosa è MATLAB Carla Guerrini 2 Cos’è Matlab? • La struttura di base è la matrice per la quale sono già predefinite numerosi tipi elementari (identità, matrice nulla, matrice unità,..) funzioni algebriche e di manipolazione • Matlab fa largo uso di librerie di calcolo (in particolar modo di algebra lineare) per risolvere problemi numerici al calcolatore • E’ uno dei programmi scientifici di maggior diffusione, usato nella ricerca e per il calcolo tecnico e scientifico • Matrix Laboratory è un ambiente di calcolo sviluppato per gestire oggetti di tipo matrice • E' un ambiente di calcolo scientifico con routines altamente specializzate • E' un ambiente grafico • E' un linguaggio di programmazione Introduzione Matlab Carla Guerrini 3 Introduzione Matlab Carla Guerrini 4 1 Per iniziare…. Command Window • Per lanciare Matlab (in ambiente Windows) è sufficiente cliccare col mouse sull’icona corrispondente • All’avvio appare il Desktop di Matlab che contiene le finestre: • • dei comandi (command window) • • dello spazio di lavoro (workspace window) • • della directory corrente (current directory) • • della storia dei comandi (command history) • Per terminare la sessione di lavoro basta digitare il comando quit dal prompt Introduzione Matlab Carla Guerrini • Nella command window vengono digitati i comandi Matlab – valutazione di un’espressione – assegnazione di un valore ad una variabile – esecuzione di una funzione • • ….. • Le istruzioni vengono immesse dal prompt (seguite da invio) ed eseguite una ad una 5 Introduzione Matlab Le istruzioni elementari • • • • • • • • • • • • Carla Guerrini 6 Workspace window • Matlab come calcolatrice >> 2+3 ans = 5 • Assegnazione del valore 3 alla variabile a: >> a = 3 a= 3 • Valutazione di un’espressione >> b=a*2 b= 6 Introduzione Matlab Carla Guerrini • La finestra workspace elenca le variabili presenti nello spazio di lavoro insieme ad alcune informazioni su di esse (dimesioni,tipo, memoria occupata,..) • 7 E’ possibile modificare il valore di una variabile utilizzando l’apposito workspace array editor Introduzione Matlab Carla Guerrini 8 2 Come ottenere aiuto Command History/Current Directory • Con il comando help (help in linea di comando) >> help sin SIN Sine. SIN(X) is the sine of the elements of X. • Dal menu Help • Help Window: l’help che si può ottenere da linea di comando messo sotto forma di finestra grafica di più agevole consultazione • Help Desk: Un help in HTML molto completo e di facile navigazione fornito anche di svariati esempi • La finestra Command History contiene una lista dei comandi digitati con funzioni di copia ed incolla • Tramite la finestra Current Directory è possibile spostarsi tra le cartelle come con un qualsiasi File Maneger Introduzione Matlab Carla Guerrini 9 Introduzione Matlab Le informazioni e la memoria • >> dir - visualizza il contenuto della directory corrente • >> what – visualizza i files di tipo Matlab nella directory corrente • >> cd – permette di spostarsi nell’albero delle directory • >> pwd – ritorna la directory corrente • >> type nomefile – visualizza il contenuto del file – Il nome, che la identifica. – Il valore, cioè il dato che essa rappresenta e che viene memorizzato nella RAM. Carla Guerrini 10 Gestione dei files • Le informazioni (dati in forma numerica o alfanumerica)vengono memorizzati nella RAM utilizzando quelle che vengono chiamate nei linguaggi di programmazioni “variabili” • Una variabile ha due caratteristiche: Introduzione Matlab Carla Guerrini 11 Introduzione Matlab Carla Guerrini 12 3 Le variabili in Matlab • • • Matlab lavora tramite espressioni, convertendole in variabili In Matlab qualsiasi dato è trattato come una variabile Per introdurre una variabile basta assegnarle un nome e un valore • >> a=5-2 a= 3 >> 5-2 ans = Le variabili in Matlab (II) >> b=7; 3 • Matlab crea automaticamente le variabili nel momento in cuisono definite come termini alla sinistra di un’uguaglianza(ASSEGNAZIONE DI UNA VARIABILE) Introduzione Matlab Carla Guerrini 13 Le variabili Matlab (III) >>who Your variable are: abc • Il comando whos dà maggiori informazioni sulle variabili in memoria Il comando clear cancella il contenuto del workspace • Il comando clear seguito dai nomi di alcune variabili (non separati dalla virgola) cancella soltanto quelle variabili • >> clear Introduzione Matlab • Memoria: >>base=3; altezza=5; >> base*altezza ans= 15 Carla Guerrini 14 Le variabili Matlab (IV) • Matlab memorizza tutte le variabili definite durante la sessione di lavoro • L’insieme delle variabili attive costituisce il workspace di Matlab • Il comando who elenca tutte le variabili nel workspace Introduzione Matlab • Variabile: nome associato ad una cella di memoria utilizzata per contenere dati • Ogni volta che si utilizza un nuovo identificatore assegnandogli un valore, viene associata al nome dell’identificatore un insieme di celle di memoria contenente un dato dello stesso tipo del valore assegnato • • Se il dato è di tipo numerico (intero o reale) ogni cella occupa 8 bytes di memoria • I nomi delle variabili possono essere lunghi al massimo 63 caratteri • • Sono nomi ammissibili di variabili tutte le sequenze di caratteri • contenenti lettere, numeri e il carattere _ (underscore) • • Matlab fa distinzione fra lettere maiuscole e minuscole • • Il primo carattere deve essere una lettera • • Non possono coincidere con le parole riservate. Per controllare se un • nome è una parola riservata, vedere il comando iskeyword >> clear a b Carla Guerrini 15 Introduzione Matlab Carla Guerrini 16 4 Variabili predefinite Tipi di variabili • ans most recent answer • • eps accuratezza relativa per i numeri in doppia precisione. Ritorna la distanza fra 1.0 e il numero (> di 1.0) più vicino ad 1.0. • Viene usato come tolleranza in molte funzioni numeriche. • pi • i,j unità immaginaria • NaN “Not-a-Number” (l’espressione calcolata non è un numero macchina, si ottiene come risultato di operazioni aritmetiche indefinite, ad esempio la divisione 0/0) • inf,-inf si ottengono per overflow, underflow o divisione per zero • version Versione di Matlab • Tipi interi definiti in Matlab: • int8, int16, int32, int64 (interi con segno) • uint8, uint16, uint32, uint64 (interi senza segno) Tipi floating point • • Single (32 bits), double (64bits) • • ATTENZIONE! Le operazioni aritmetiche vengono eseguite solo fra elementi double. Per fare delle operazionimatematiche su dati interi o in singola precisione, si devono convertire in doppia precisione usando la funzionedouble. Introduzione Matlab Introduzione Matlab Carla Guerrini 17 >>s=3 ; us=uint8(s); >>us+4 ??? Error using + Function '+' is not defined for For values of class ‘uint8’ • I dati di tipo logical possono avere due valori: – vero corrispondente al valore 1 – falso corrispondente al valore 0 • I dati di tipo char contengono dati di tipo carattere. Carla Guerrini 18 Formati di visualizzazione delle variabili Tipi di Variabili Introduzione Matlab Carla Guerrini Matlab di deafult visualizza una variabile numerica con 4 cifre decimali: >>pi ans= 3.1416 • • Per modificare il formato di visualizzazione, Sintassi del comando: >> format tipoformato >> format long >>pi ans= 3.14159265358979 19 Introduzione Matlab Carla Guerrini 20 5 Formato di visualizzazione Introduzione Matlab Carla Guerrini 21 Introduzione Matlab • Tutte le variabili sono array (matrici) • Un array è una struttura dati, cioè memorizza piu’ dati all’interno di una struttura identificata da un singolo nome • Un array ha due dimensioni: la prima dimensione rappresenta il numero di righe, la seconda il numero di colonne • Costruzione di un array • Indicizzazione di un array • Operazioni array-scalari • Operazioni array-array • Funzioni di manipolazione degli array. • Array e utilizzo della memoria. • Scalare: array 1 x 1 • Vettore riga: array 1 x n • Vettore colonna: array n x 1 • Matrice: array n x m • Carla Guerrini 22 Array Array Introduzione Matlab Carla Guerrini 23 Ogni elemento dell’array è estratto specificando l’indice dell’elemento dall’inizio dell’array Introduzione Matlab Carla Guerrini 24 6 Esempi di costruzione di un array Array: vettore o matrice Vettore riga 1x4 V=[1 7 3 5] Z=[1;4;5;7] A=[1 9; 5 -3;0.1 0.3] vettore colonna 4x1 Matrice 3 x 3 Elemento 7 e’ individuato dall’indice 2: v(2) L’elemento 5 e’ individuato dall’indice 3 : z(3) L’elemento 0.1 e’ individuato dagli indici (3,1): A(3,1) Introduzione Matlab Carla Guerrini 25 • >> b=[2 1 5 4] • b= • 2154 • >> b=[2, 1, 5, 4] • b= • 2154 • >> b=[2; 1; 5; 4] • b= • 2 • 1 • 5 Introduzione Matlab • 4 • • • • >> b=[2 1 5 4] Carla Guerrini 26 Costruzione di un array con funzioni Matlab Costruzione di array: • • • • • • >> a=[1:2:9] a= 13579 >> a=[5:-1:1] a= 54321 Introduzione Matlab v=[inizio:incremento:fine] • • • • • • linspace - elementi equispaziati >> linspace(0,pi,11) ans = Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 >> a=1:5 a= 12345 >> a=[0:0.1:0.3] a= 0 0.1000 0.2000 0.3000 Carla Guerrini 27 Introduzione Matlab logspace – elementi con distribuzione logaritmica >> x=logspace(0,1,10) x= Columns 1 through 7 1.0000 1.2915 1.6681 2.1544 2.7826 3.5938 4.6416 Columns 8 through 10 5.9948 7.7426 10.0000 Carla Guerrini 28 7 Costruzione di un array Costruzione di array • A partire da altre matrici L’assegnazione a blocchi è analoga a quella per elementi, con la differenza che ogni elemento introdotto durante l’assegnazione può essere un array anziché uno scalare Introduzione Matlab >> y = [3;4]; B=[1 2; 1 2]; >> C=[y B; 5 6 7] C= 3 1 2 412 Carla Guerrini 567 29 • • • • • • • • • • Funzioni predefinite per generare matrici particolari • eye(n) genera la matrice identità di ordine n, cioè la matrice che ha elementi 1 sulla diagonale principale e 0 altrove • zeros(m,n) genera una matrice m x n con elementi tutti uguali a 0; fornendo in ingresso un solo elemento n si genera una matrice quadrata n x n • ones(m,n) analogo a zeros, ma tutti gli elementi della matrice generata sono uguali a 1 • diag(v) crea una matrice diagonale con il vettore v sulla diagonale • Si veda help elmat Introduzione Matlab Carla Guerrini 30 Introduzione Matlab Carla Guerrini 32 Indicizzazione di array Dato un vettore riga o colonna: • Il singolo elemento del vettore si individua indicando l’indice fra parentesi tonda: v(4) • • Una porzione dell’array si individua indicando gli indici del primo e ultimo elemento da considerare: v(2:4) Data una matrice A m x n: • Per individuare il singolo elemento si usano due indici, il primonriferito alla riga e il secondo alla colonna Per ogni dimensione della matrice valgono le regole di • indicizzazione viste per i vettori Per individuare un blocco di tutti gli elementi di una dimensione • si usa la notazione : • Usando un solo indice si fa riferimento alla matrice come array di colonne Introduzione Matlab Carla Guerrini 31 8 Operatori algebrici • • • • • • • • • • • Operazioni elementari array-scalari E’ possibile effettuare in modo trasparente tutte le usuali operazioni elementari (+,-,*,/,^) ben definite tra matrici, vettori e scalari • Operazioni scalare-scalare • Operazioni array-scalare • Operazioni array-array • Gli operatori algebrici possono essere applicati anche “elemento per elemento” ad array delle stesse dimensioni usando la così detta “sintassi del punto” • Valgono le solite regole di precedenza tra gli operatori e nell’uso delle parentesi Introduzione Matlab Carla Guerrini % moltiplicazione di un array per % uno scalare >> D=A*b D= 5 15 20 10 % divisione di un array per uno % scalare >> E=A/b E= 0.2000 0.6000 0.8000 0.4000 A matrice m x n b scalare 1 x 1 C= A +b C(i,j)=A(i,j)+b A=magic(2) A= 1 3 4 2 >> b=5; C=A+b C= 6 8 9 7 33 Introduzione Matlab Carla Guerrini 34 Prodotto fra vettori Prodotto elemento per elemento D(i)=A(i)*B(i) per i=1…4 Prodotto SCALARE n • Le operazioni elementari + - * si estendo in modo naturale (quando ben definite!) agli array • Non si estende l’operazione / (Il simbolo / risolve un sistema lineare) • L’operazione ^ è definita solo per matrici quadrate Introduzione Matlab Carla Guerrini 35 c=Σ A(k)*B(k) k=1 >> A=[9 – 3 5 0] % vettore riga (1 x 4) >> B=[-1 4 3 7 ] % vettore riga (1 x4) >> c =dot(A*B) c= 6 % oppure >>c = A*B’ % ove B’ trasposto di B Introduzione Matlab >> D=A.*B D= -9 -12 15 0 % i vettori devono avere la stessa lunghezza Carla Guerrini 36 9 Introduzione Matlab Carla Guerrini 37 Introduzione Matlab Carla Guerrini 38 39 Introduzione Matlab Carla Guerrini 40 Operazioni elemento per elemento • Moltiplicazione .* • Divisione ./ • Elevamento a potenza .^ Introduzione Matlab Carla Guerrini 10 Dimensioni di un array L'operatore [ ] può essere usato per concatenare matrici • • • • • • Data una matrice A m x n ed un vettore v (riga o colonna) di dimensione n: size(A) fornisce le dimensioni m e n della matrice A .Possiamo memorizzare il risultato in un vettore scrivendo: [m,n]=size(A) length(v) fornisce la lunghezza del vettore v numel(A) restituisce il numero di elementi di A Introduzione Matlab A’: crea la matrice trasposta di A diag(v): crea una matrice diagonale con il vettore v sulla diagonale diag(A): estrae la diagonale della matrice A tril(A): estrae da la parte triangolare inferiore triu(A): estrae da la parte triangolare superiore abs(A): produce la matrice dei valori assoluti degli elementi di A Carla Guerrini 41 Introduzione Matlab Carla Guerrini 42 Manipolazione di array • Indirizzamento indiretto • L'indirizzamento indiretto tramite array numerico (ind) • Estrae gli elementi che hanno quell'indice numerico Introduzione Matlab Carla Guerrini 43 Introduzione Matlab Carla Guerrini 44 11 Manipolazione di array • L'indirizzamento indiretto tramite array logico estrae gli elementi che hanno indice logico =1 (true) • N.B. Il vettore [1 1 0 0 0 1 1] non è equivalente ad un vettore numerico contenente gli stessi valori Introduzione Matlab Carla Guerrini 45 Manipolazione di array Carla Guerrini Carla Guerrini 46 Come salvare il proprio lavoro Per salvare una cronaca della sessione di lavoro si deve eseguire all'inizio della sessione stessa il comando diary nomefile.txt Il file di testo NON permette di recuperare il contenuto delle variabili; per conservare il contenuto delle variabili si deve invece salvare tutta l'area di memoria (o parte di essa) con il comando save Ad esempio: >> x = 1; >> a = 3; >> save areawork >> save xarea x • I file generati (binari) hanno estensione .mat. Per ricaricarli nello spazio di lavoro si usa il comando load: >> load areawork >> load xarea flipud “rigira” l’array dalla prima all’ultima riga fliplr “rigira” l’array dalla prima • all’ultima colonna rot90 ruota l’array di 90 gradi in direzione oraria reshape cambia la dimensione dell’array mantenendo il numero degli elementi. >>Y= RESHAPE(X,M,N) returns the M-by-N matrix whose elements are taken columnwise from X. An error results if X does not have M*N elements. Introduzione Matlab Introduzione Matlab 47 Introduzione Matlab Carla Guerrini 48 12 Funzioni matematiche elementari • • help elfun Funzioni trigonometriche: cos, cosh sin, sinh tan, tanh sec, sech csc, csch cot, coth Introduzione Matlab Funzioni matematiche elementari asb(x) valore assoluto di x sqrt(x) radice quadrata di x round(x) arrotonda all’intero più vicino fix(x) tronca all’intero più vicino verso 0 floor(x) arrotonda all’intero più vicino verso – ceil(x) arrotonda all’intero più vicino verso sign(x) segno di x rem(x,y) resto di x/y Carla Guerrini 49 Linguaggio di programmazione Matlab Il linguaggio Matlab Matlab ha anche un linguaggio proprio per programmare. E’ un linguaggio interpretato e non compilato. Questo significa che le istruzioni vengono tradotte in linguaggio macchina e subito eseguite una per volta. • Matlab può essere usato come libreria di funzioni (matematiche o grafiche) e/o come linguaggio di programmazione Introduzione Matlab Il linguaggio di Matlab e’ un linguaggio “case sensitive”, cioe’ che distingue fra lettere minuscole e maiuscole. Il linguaggio di Matlab e’ un linguaggio orientato agli oggetti. L’oggetto fondamentale e’ l’array (matrice). Gli oggetti e le istruzioni possono essere organizzati all’interno di flussi di controllo delle istruzioni. Carla Guerrini 51 Funzioni esponenziali: exp log log10 log2 pow2 Realsqrt, sqrt Funzioni complesse: abs, angle, complex, conj, imag, real Funzioni dell'algebra lineare det determinante di una matrice rank rango di una matrice eig autovalori di una matrice inv inversa di una matrice Introduzione Matlab mean(x) valor medio degli elementi di x sum(x) somma degli elementi di x prod(x) prodotto degli elementi di x Carla Guerrini L’istruzione di assegnazione • I dati possono essere inseriti in memoria tramite l’operazione di assegnazione. • L’operazione di assegnazione (fatta utilizzando il simbolo =) permette di memorizzare un dato che puo’ essere un dato costante, il contenuto di un’altra variabile oppure il risultato di un’espressione aritmetica. Sintassi: variabile = espressione >> x=5.4; >>y=x; >>z=x+y Introduzione Matlab max(x),min(x) elemento massimo o minimo di un vettore x. Per una matrice massimo su riga o colonna 50 Assegnazione di un’espressione aritmetica: Variabile=espressione In Matlab tutti i calcoli sono fatti con valori in doppia precisione (64 bit) Sintassi variabile = espressione Valore= x+2-(y*4)/(x^2) Carla Guerrini 52 13 Operatori relazionali fra array (III) Operatori relazionali: < minore <= minore o uguale > maggiore >= maggiore o uguale = = uguale ~= diverso Gli operatori relazionali operano elemento per elemento dell’array e restituiscono un valore logico: vero(1) oppure falso (0). Introduzione Matlab Operatori relazionali fra array (II) Possono essere utilizzati per confrontare due array della stessa dimensione oppure un array e uno scalare. >> X = 5; X >= [1 2 3; 4 5 6; 7 8 10] ans = 111 110 000 >> X = 5*ones(3,3); X >= [1 2 3; 4 5 6; 7 8 10] ans = 111 110 000 Carla Guerrini 53 Introduzione Matlab Introduzione Matlab Carla Guerrini 54 Controllo del flusso delle istruzioni Operatori logici agiscono elemento per elemento Operatore AND : & restituisce un valore logico vero (1) oppure falso (0) >>A = [0 1 1 0 1]; >> B = [1 1 0 0 1]; >>A&B ans = 0 1 0 0 1 % Returns 1 for every element location that is true (nonzero) in both array and 0 for all other elements. N.B. I sim boli = e = = hanno due significati diversi: = assegna un valore ad una variabile == confronta il valore di due valori e ritorna 1 (vero) oppure 0 (falso) N.B. Il confronto di uguaglianza fra due variabili di tipo floating point (reali) è sconsigliato. Esempio: >> x=(-0.08+0.5-0.42)==(0.5-0.42-0.08) x= 0 Operatore OR: | >> A|B ans = 1 1 1 0 1 % Returns 1 for every element location that is true (nonzero) in either one or • Ciclo for • Ciclo while • Costrutto if … else • Costrutto switch the other, or both arrays, and 0 for all other elements. xor(A,B) ans = 1 0 1 0 0 % Returns 1 for every element location that is true (nonzero) in only one array, and 0 for all other elements. Carla Guerrini 55 Introduzione Matlab Carla Guerrini 56 14 Istruzione FOR Ciclo FOR Formato for variable = initval:endval statement ... statement end Introduzione Matlab i=0; for n=(1:10)' i=i+1; x(n)=sin(n*pi/10); end plot(n,x) % Esempio: generazione della % matrice di Hilbert di ordine 10 N=10; for R = 1:N for C = 1:N A(R,C) = 1/(R+C-1); end end Carla Guerrini _________________________ Esempio di codice vettoriale il ciclo for viene eseguito 1 sola volta >>i =1 57 Istruzione FOR Introduzione Matlab i=0; for s = 1.0: -0.1: 0.0 y=exp(s); plot(s,y,'o') hold on i=i+1; end _________________________ Nell’esempio le 4 istruzioni dentro il ciclo for sono ripetute 11 volte Carla Guerrini 58 • Esempio: Calcolo exp(x) per x=0,0.1,0.2,.......5 • I cicli for si possono annidare, ma molto spesso non sono il modo piu' efficiente di programmare perchè non consentono la vettorizzazione del codice Introduzione Matlab Carla Guerrini 59 Introduzione Matlab Carla Guerrini 60 15 Struttura condizionale Introduzione Matlab Carla Guerrini While 61 While (II) Introduzione Matlab Carla Guerrini 62 Break - Continue • L'istruzione break può essere utilizzato solo entro un ciclo for o while permette di terminare l'esecuzione. Quando viene incontrata l'istruzione break, Matlab salta alla prima istruzione successiva al “end” del ciclo in cui compare ( for o while). • CONTINUE passa il controllo all’ iterazione successiva del FOR o del WHILE loop saltando tutte le istruzioni rimanenti che compaio all’interno del loop. • RETURN ritorna alla function chiamante _________________________________________________________ Il ciclo a sinistra termina quando l’utente inserisce un numero maggiore di 5 nel ciclo a destra non c’e’ l’opportunita’ di modificare il contenuto della variabile “a” Introduzione Matlab Carla Guerrini 63 function d = det(A) %DET det(A) is the determinant of A. if isempty(A) d = 1; return else ... end Introduzione Matlab Carla Guerrini 64 16 Struttura selezione If ...........else • Espressione: contiene un valore logico • Se = 1 vengono eseguiti i comandi sino a “else” • Se =0 vengono eseguiti i comandi dopo l'”else” Introduzione Matlab Carla Guerrini 65 Introduzione Matlab Carla Guerrini 66 67 Introduzione Matlab Carla Guerrini 68 IF…….ELSEIF……..ELSE…….. END Se condizione1 è vera Se condizione 2 e' vera Istruzione 1 Altrimenti Istruzione 2 Altrimenti Istruzione 3 Introduzione Matlab Carla Guerrini 17 Esempi % Ricerca del massimo fra 3 numeri disp(‘inserisci 3 numeri’) a=input(‘inserisci 1 numero ‘) b=input(‘inserisci 1 numero’) c=input(inserisci un numero’) if a>b if a>c massimo=a; else massimo=c; end elseif b>c massimo=b; else massimo=c; end disp('il massimo fra i tre numerica calcolate e" '),massimo Introduzione Matlab SWITCH………END % Ordinamento di 3 numeri disp(‘inserisci 3 numeri’) a=input(‘inserisci 1 numero ‘) b=input(‘inserisci 1 numero’) c=input(inserisci un numero’) SWITCH Switch tra svariate possibilita’ secondo il valore dell’espressione. La forma generale e’: SWITCH switch_expr CASE case_expr, statement, ..., statement CASE {case_expr1, case_expr2, case_expr3,...} statement, ..., statement ... OTHERWISE, statement, ..., statement END Le istruzioni seguenti il primo CASE ove la switch_expr coincide con case_expr sono eseguite. Quando case_expr e’ un cell array (nel secondo caso sopra) case_expr coincide se un qualsiasi elemento del cell array coincide con switch_expr Se nessuna delle case_expr coincide con switch_expr allora viene eseguito OTHERWISE case (se esiste), solo un caso viene eseguito e il calcolo con tinua dopo l’END if a>b if b>c ordina=[a,b,c]; elseif c>a ordina=[c,a,b] else ordina=[a,c,b] end else if b>c if a>c ordina=[b,a,c]; else ordina=[b,c,a]; end else ordina=[c,b,a]; end disp('ordine decrescente dei tre numeri'), ordina disp('ordine crescente dei tre Carla Guerrini numeri'),fliplr(ordina) 69 Introduzione Matlab Carla Guerrini 70 ESEMPIO SWITCH…..END Operazioni sui singoli elementi di un array % l’istruzione lower(stringa) method = 'Bilinear'; switch lower(method) case {'linear','bilinear'} disp('Method is linear') case 'cubic' disp('Method is cubic') case 'nearest' disp('Method is nearest') otherwise disp('Unknown method.') end % converte il contenuto di % stringa in caratteri minuscoli >>Method is linear Introduzione Matlab Carla Guerrini 71 Esempio 1: somma degli elementi di un vettore di n componenti >>Somma=0; >>for i=1:n somma=somma+v(i); end Esempio 2: moltiplicazione degli elementi di un vettore di n componenti prodotto=1; for i=1:n prodotto=prodotto*v(i); end Introduzione Matlab Istruzioni equivalenti: >> somma=sum(v) >> prodotto=prod(v) Esempio 3: >> A=hilb(2) A= 1.0000 0.5000 0.5000 0.3333 >> sum(A) ans = 1.5000 0.8333 >> prod(A) ans = 0.5000 0.1667 % Nel caso di matrici la somma e il prodotto viene eseguito sui vettori colonna che compongono la matrice per cui viene restituito un vettore riga Carla Guerrini 72 18 Programmi Matlab: M-file • I programmi Matlab sono detti Mfile e sono file di testo che vanno memorizzati con estensione .m (da cui il nome M-file) Matlab dispone di un editor a cui si accede mediante il pulsante FILE new-mfile Si possono creare due tipi di file matlab: SCRIPT file e FUNCTION file Introduzione Matlab Script M-file (I) • Uno script è un file di testo dove ogni riga contiene una (o più di una) istruzione Matlab • Per far eseguire lo script si scrive al prompt il nome del file, senza l’estensione .m, e si preme il tasto “Invio” Matlab esegue automaticamente le righe del file dalla prima all’ultima come se fossero state introdotte, in quell’ordine, manualmente dal prompt • L’M-file deve essere contenuto nella directory corrente (oppure deve essere nel Matlabpath cioè la lista delle directory utilizzate da Matlab per il suo percorso di ricerca...) Carla Guerrini M-file script puo’ contenere: Istruzione di assegnazione • Istruzioni di ingresso/uscita (lettura/scrittura) • Espressioni aritmetiche, calcoli • Chiamate ad altre funzioni • Commenti • Linee bianche • Comandi per la costruzione di grafici Pause: l’esecuzione si arresta finchè non si digita un char da tastiera Pause(n) per n secondi arresta l’esecuzione Keyboard passa il controllo alla tastiera k>> sino al return Echo srive nel command window le istruzioni che ve si stanno eseguendo Break interrompe l’esecuzione dello script M-file function Con questa struttura posso costruire delle nuove funzioni/istruzioni Matlab • possono accettare argomenti in ingresso • possono restituire argomenti in uscita • possiedono variabili interne che hanno visibilità locale • possono essere richiamate da un altro programma (sono sottoprogrammi) o direttamente dalla finestra comandi Le variabili utilizzate dentro un M-file script sono globali compaiono nel work-space 73 Introduzione Matlab Carla Guerrini 74 Introduzione Matlab Carla Guerrini 76 Istruzioni di Input - Output Qualunque programma deve comunicare con l’esterno per avere dati su cui lavorare e fornire i risultati prodotti La forma più semplice di Input/Output avviene attraverso il terminale del programmatore: lettura da tastiera e scrittura su video. I dati possono essere ricevuti dall’esterno tramite un’istruzione di ingresso L’istruzione di ingresso permette di memorizzare un dato introdotto dall’esterno (solitamente attraverso tastiera) Viene detta quindi un’operazione di input • Sintassi : variabile= input(‘ testo commento’) La funzione input mostra in output sullo schermo il testo testo e attende che venga digitato un valore da assegnare alla variabile variabile Notare che il testo è inserito fra ‘ ‘ Di default input restituisce un valore numerico, per inserire una stringa occorre un ulteriore parametro: >> nome=input(‘Scrivi il tuo nome ‘, ‘s’) Introduzione Matlab Carla Guerrini 75 19 • I dati possono essere trasferiti dalla memoria all’esterno durante l’esecuzione di un programma tramite un’istruzione di uscita • L’istruzione di uscita permette di visualizzare sullo schermo un dato contenuto in una cella di memoria • Viene detta quindi un’operazione di output • Una funzione di output utilizzata in Matlab e’ la funzione disp • Sintassi: disp(‘testo’); • mostra in output sullo schermo il testo testo • • Sintassi: disp(x) • mostra in output sullo schermo l’array x L’istruzione di uscita • Disp Prende come ingresso stringhe o matrici. >> disp('Il mio colore preferito è il rosso') • disp ha un solo argomento costituito da una stringa. Quindi se ci sono messaggi che contengono delle varibili, queste devono essere combinate in una singola stringa. • >> nome=input('Scrivi il tuo nome ','s') • >> disp(['Il mio nome è ',nome]) Introduzione Matlab Carla Guerrini 77 Per le variabili numeriche si usa la funzione num2str: >> x=123.76 >> outstring=['x = ', num2str(x)] >> disp(outstring) Se i dati sono costituiti da più array diversi, devono essere combinati in una singola matrice: >> x=0:pi/5:2*pi; >> y=sin(x); >> disp([x' y']) Ricordiamo che: • E’ possibile visualizzare il valore di una variabile OMETTENDO il ; alla fine dell’istruzione che calcola (o assegna) Carla la variabile stessa Guerrini Introduzione Matlab 78 Help • I commenti sono parole inserite dal programmatore per dare informazioni che rendano più comprensibile il programma • I commenti iniziano con % e terminano con la fine della riga; se i commenti occupano più righe occorre mettere il % all’inizio di ciascuna riga Sono ignorati durante l’esecuzione del programma • Sintassi: % parole di commento..... La punteggiatura Il simbolo ; alla fine di un comando sopprime la visualizzazione dell’output del comando Due o piu’ comandi possono essere scritti sulla stessa riga separati da ,o; Introduzione Matlab Carla Guerrini 79 • matlab\elmat - Elementary matrices and matrix manipulation. • matlab\graph2d - Two dimensional graphs. • matlab\graph3d - Three dimensional graphs. matlab\elfun - Elementary math functions. Introduzione Matlab Carla Guerrini 80 20 Riga di definizione: • La prima riga di intestazione definisce il nome della function il numero e l’ordine delle variabili in ingresso e uscita function[lista variabili output] = nome_function(lista variabili input) • le variabili di input contengono le informazioni da utilizzare nella funzione Vanno separate da una virgola e sono contenute fra ( ) • le variabili di output contengono i risultati della funzione • Vanno separate da una virgola e sono contenute fra [ ] • • una sola variabile in uscita x: [output] x • • più variabili in uscita x, y, z: [output] [x,y,z] • • nessuna variabile in uscita: [output] [ ] • • Il nome_funzione e’ un nome simbolico diverso per ogni funzione Introduzione Matlab Carla Guerrini 81 Introduzione Matlab Carla Guerrini 82 • Riga h1 • • E’ la prima riga del testo di help • • Siccome è una riga di commento inizia con % • Testo di help serve per creare un aiuto in linea per la propria funzione introducendo una o più righe di commento immediatamente dopo la riga H1 >> help rettangolo • Corpo della Function • Contiene le istruzioni per il calcolo e l’assegnazione dei valori • alle variabili di output • • Le istruzioni possono essere: • • chiamate di un’altra function • • input/output interattivi • • calcoli • • assegnazioni • • commenti • • linee bianche • • Una funzione termina dopo che l’ultima riga nel file è eseguita • oppure quando è incontrato il comando return. Introduzione Matlab Carla Guerrini 83 Introduzione Matlab Carla Guerrini 84 21 Input/output di una function • • Variabili locali Le variabili che non sono nella lista delle variabili di input e nemmeno in quella delle variabili di output sono dette variabili locali e non compaiono nello spazio di lavoro • Le variabili locali vengono automaticamente cancellate dalla memoria al termine dell’esecuzione • L’M-file deve essere denominato col nome della funzione ed avere estensione .m (rettangolo.m) In realtà, Matlab richiama la funzione sulla base del nome del file e non del nome della function. • E’ necessario assegnare dei valori ai parametri di output • Per poter utilizzare una funzione all’interno di uno script, il file deve essere nella directory dello script. • Chiamata di una funzione [lista output]=nome_function(lista input) Introduzione Matlab Carla Guerrini 85 Workspace della funzione Introduzione Matlab Carla Guerrini 86 Funzioni principali e funzioni secondarie • Tutte le variabili né di input né di output della funzione sono dette locali alla funzione. Le variabili locali non sono visibili nel workspace di Matlab. Ogni funzione ha un suo workspace temporaneo creato nel momento della chiamata e “distrutto” quando la funzione termina l’esecuzione. • Le funzioni possono essere richiamate ricorsivamente, e in questo caso ogni chiamata ha un workspace separato. Introduzione Matlab • Come vengono passati gli argomenti di input a una funzione? • Per valore quando gli argomenti stessi non sono modificati dalla funzione. Se il valore di una variabile di input è modificato, viene allocata una nuova porzione di memoria e ne viene copiato il valore. function = funz1(x) x(3)=0; • Finché l’argomento non è modificato all’interno della funzione,viene solo “referenziato” (delayed copy) per ottimizzare l’uso della memoria • Come vengono trattati gli argomenti di output di una funzione? • Viene allocata memoria nel workspace locale per gli argomenti di output. Quindi se un argomento è sia di input che di output non vale la regola della delayed copy. • Le funzioni Matlab possono non avere argomenti di input e/o di • output. • • Possono essere richiamate con un numero inferiore di argomenti di input e di output rispetto a quelli dichiarati, ma non superiore. • Il numero di argomenti di input e di output effettivamente utilizzati nella chiamata si può ottenere tramite le funzioni nargin e nargout, rispettivamente. • Uno stesso file può contenere più funzioni: – La function principale dà il nome al file e sta all’inizio – Le function secondarie occupano posizione in coda • Solo la function principale può essere richiamata dal prompt o da altre function • Una funzione può essere passata come argomento ad un’altra funzione. • Può essere fatto in diversi modi a seconda di come e’ stata scritta la funzione – Function handles – Feval – Anonymous function Carla Guerrini 87 Introduzione Matlab Carla Guerrini 88 22 Function handles • Function handle è un tipo Matlab che contiene tutte le indicazioni utili per eseguire una funzione. Sintassi per costruire l'handle della funzione: • handle_name = @functionname • E’ possibile eseguire una funzione utilizzando il suo handle. • L’handle viene utilizzato esattamente come se fosse il nome della funzione. Sin(0.6*pi) Ans = 0.9511 >>f=@sin >>f(0.6*pi) Ans = 0.9511 Introduzione Matlab Carla Guerrini 89 Introduzione Matlab Carla Guerrini 90 Introduzione Matlab Carla Guerrini 91 Introduzione Matlab Carla Guerrini 92 23 Introduzione Matlab Carla Guerrini 93 Introduzione Matlab Carla Guerrini 94 Introduzione Matlab Carla Guerrini 95 Introduzione Matlab Carla Guerrini 96 24 • fprintf – Simile alla funzione del linguaggio C – Sintassi: – fprintf(formato) – count=fprintf(formato,variabili) • fprintf(‘Attenzione: x è negativa \n’) • fprintf(‘%s ha %d anni\n’,nome,anni) – La stringa formato contiene i codici e i caratteri opzionali per costruire la stringa di output – count e’ il numero di elementi scritti • Caratteri di conversione: – %d notazione decimale per interi con segno – %i notazione decimale per interi – %f floating poit per reali – %e notazione esponenziale per i reali • E’ possibile specificare la lunghezza del campo e per variabili numeriche il numero di decimali: fprintf(‘%f\n’,sqrt(2)), fprintf(‘%e\n’,sqrt(2)), fprintf(‘%8.4f\n’,sqrt(2), fprintf(‘%12.3°\n’,sqrt(2)) Introduzione Matlab Carla Guerrini 97 Introduzione Matlab Carla Guerrini 98 Introduzione Matlab Carla Guerrini 99 Introduzione Matlab Carla Guerrini 100 25 Grafici bidimensionali Introduzione Matlab Carla Guerrini 101 Introduzione Matlab Carla Guerrini 102 plot(vettore1,vettore2,opzioni) Vttore1 e vettore2 sono riuspettivamente le ascisse e le ordinate dei punti Opzione e’ una stringa opzionale contenente al più 3 caratteri rispettivamente per il colore, simbolo stampato, simbolo usato per tracciare la linea fra i punti plot(vettore) il grafico viene realizzato secondo gli standard MatLab Introduzione Matlab Carla Guerrini 103 Introduzione Matlab Carla Guerrini 104 26 Introduzione Matlab Carla Guerrini 105 Introduzione Matlab Carla Guerrini 106 Introduzione Matlab Carla Guerrini 107 Introduzione Matlab Carla Guerrini 108 27 Introduzione Matlab Carla Guerrini 109 Introduzione Matlab Carla Guerrini 110 Introduzione Matlab Carla Guerrini 111 Introduzione Matlab Carla Guerrini 112 28 • fplot(‘function’,limits) • >>fplot(‘x^3-1’,[-1 1]) • axis([xmin, xmax, ymin, ymax]) – pone limiti definiti da xmin, xmax,ymin, ymax per gli assi • • • • • • axis auto – limiti degli assi di default • axis off – non visualizza gli assi • axis on – visualizza gli assi • axis square – rende gli assi uguali • axis tight – limiti degli assi uguali al range dei dati • • xlim ([xmin, xmax]) – pone limiti definiti da xmin, xmax per l'asse x • • ylim ([ymin, ymax]) – pone limiti definiti da ymin, ymax per l'asse y Introduzione Matlab Carla Guerrini 113 Introduzione Matlab Carla Guerrini 114 Introduzione Matlab Carla Guerrini 116 • box off – rimuove la cornice del grafico • grid on/off – aggiunge/toglie una griglia sulla figura • text(x,y,‘string’) – aggiunge stringhe orizzontali di testo a partire dal punto (x,y) • gtext(‘string’) – aggiunge una stringa di testo posizionandola col mouse • legend – inserisce una legenda per identificare i diversi grafici • xlabel/ylabel – inserisce un nome per l'asse x/y Introduzione Matlab Carla Guerrini 115 29 Introduzione Matlab Carla Guerrini 117 Introduzione Matlab Carla Guerrini 118 Introduzione Matlab Carla Guerrini 119 Introduzione Matlab Carla Guerrini 120 30 • Esportare grafici: – Dal menu File -- Save as – scegliere poi il formato desiderato • DEMO: • >>demo matlab graphics Introduzione Matlab Carla Guerrini 121 31
Documenti analoghi
Mini Manuale Matlab
singoli elementi aij della matrice A. La matrice risultato è posta in B:
Il sistema MATLAB
save dati.dat -ascii -double
salva dati in formato ASCII con 16 cifre
Si possono leggere file scritti con programmi diversi dal matlab, ad esempio excel. I
comandi per leggere diversi tipi di file ...
Introduzione a MATLAB
• Altre funzioni operanti essenzialmente su vettori
(riga o colonna) sono
max,
max min,
min
sort,
sort
sum,
sum prod,
prod
median
• Esistono poi particolari operatori (.*, ./, .^)
che permettono di...