Introduzione a MATLAB Stefano Vigogna Dipartimento di Matematica
Lezione 1 Cosè MATLAB Primo utilizzo Vettori e matrici Esercizi
Cosè MATLAB MATLAB sta per Matrix Laboratory. È un ambiente informatico che integra diverse funzionalità: Calcolo Sviluppo Grafica Analisi dati Simulazione
Alcune potenzialità di MATLAB Calcoli matriciali e operazioni su matrici Risoluzione di sistemi lineari Calcolo di autovalori e autovettori Grafici 2D e 3D Programmazione
Primo utilizzo command window history workspace current directory
Diary e commenti >> diary lezione1 crea nella directory corrente un file di testo lezione1 che registra lintera sessione. Per inserire titoli o commenti: >> % Ad esempio: >> % lezione 1 Alla fine della lezione, >> diary off Per riaprire il diary: >> diary on
Calcolatrice In MATLAB sono definite le operazioni elementari: + - * / ^. Il risultato viene salvato nella variabile ans. È possibile definire e ridefinire una variabile. Ad esempio, >> x = 0 >> x = x + 1
Alcuni utili comandi (1) >> clear x cancella la variabile x. >> clear cancella tutte le variabili. >> who e >> whos stampano sulla finestra dei comandi la lista delle variabili, rispettivamente senza e con informazioni. >> clc ripulisce la finestra dei comandi.
Alcuni utili comandi (2) Con le frecce è possibile richiamare comandi precedenti della storia. Premere Esc per cancellare la riga.
Formati numerici (1) Es: >> >> format short virgola fissa 5 cifre. Es: >> format short e virgola mobile 5 cifre. Es: e+02 >> format short g MATLAB sceglie la rappresentazione migliore a 5 cifre. Es:
Formati numerici (2) >> format long virgola fissa 15 cifre. Es: e+02 >> format long e virgola mobile 15 cifre. Es: e+02 >> format long g Rappresentazione migliore a 15 cifre. Es:
Formati numerici (3) >> format bank fissa dollari e centesimi. Es: >> format rat notazione frazionaria (rapporto fra interi eventualmente approssimante). Es: 10000/81 NB: format determina solo la modalità di stampa, non la precisione di calcolo.
Costanti pi : pi greca i, j : unità immaginaria eps : precisione di macchina realmax, realmin : massimo e minimo numero rappresentabile (realmax * 2 = inf) inf : numero maggiore di realmax NaN (Not a Number): forma indeterminata (0/0, inf/inf, 0*inf, …)
Funzioni In MATLAB sono definite (quasi) tutte le funzioni matematiche: sqrt, exp, log, sin, cos … Per una lista di tutte le funzioni elementari, ordinate per categoria: >> help elfun Per ciascuna funzione, >> help
Help Il comando help è molto utile per ottenere informazioni su funzioni, operatori, caratteri, sintassi, comandi… >> help Es: >> help format … compreso se stesso: >> help help
Vettori e matrici In MATLAB tutte le variabili sono trattate come matrici: scalari : matrici 1 x 1 vettori riga : matrici 1 x n vettori colonna : matrici n x 1 matrici : matrici m x n
Vettori vettore riga: >> v = [ ] oppure >> v = [1,2,3,4,5] vettore colonna: >> v = [1; 2; 3; 4; 5] oppure >> v = [ ] ; cambia riga, traspone. Per selezionare li-esima entrata: >> v(i) In particolare, lultima entrata è v(end).
Alcune funzioni sui vettori >> max(v) restituisce la massima entrata di v. >> min(v) restituisce la minima entrata di v. >> sum(v) restituisce la somma delle entrate di v. >> lenght(v) restituisce la lunghezza di v.
Vettori progressivi Vettore progressione aritmetica di valore iniziale a, valore finale b e passo p (anche negativo): >> x = a:p:b Se il passo è 1, si può omettere. Es: >> x = 1:10 x = NB: Loperatore : è molto importante.
Matrici Per definire una matrice, ad esempio >> A = [ ; ] oppure >> A = [ ] Per selezionare lentrata (i,j): >> A(i,j)
Alcune funzioni sulle matrici Le funzioni max e min operano anche sulle matrici con lo stesso significato. >> sum(A) restituisce un vettore riga le cui entrate sono le somme delle entrate di ciascuna colonna di A. >> size(A) restituisce un bivettore con le dimensioni di A. >> length(A) Restituisce la dimensione massima di A.
Esercizio 1 Costruire un vettore v composto da 40 elementi in modo che: i primi 20 elementi siano 1,2,…,20 gli ultimi 20,19,…,1
Note >> ; Matlab esegue il comando senza stampare il risultato. Per spezzare un comando su più righe: >> … Per terminare forzatamente un comando in esecuzione, digitare ctrl c.
Matrici come vettori >> A(:) produce un vettore colonna contenente tutte le entrare di A, colonna per colonna. >> A(i) seleziona li-esima entrata di A(:). Se i è un vettore di indici, A(i) seleziona le entrate corrispondenti.
Entrate inesistenti (1) Se si cerca di usare unentrata inesistente, i.e. di riga o colonna troppo grande, Matlab stampa un messaggio di errore. Es: >> A = [1 2 ; 3 4] ; >> A(1,3) errore
Entrate inesistenti (2) È però possibile definire entrate inesistenti: Matlab definirà automaticamente le entrate mancanti, ponendole uguali a 0. Es: >> A(1,3) = 5 >> A =
Concatenazione di matrici >> A = [v w] crea la matrice le cui colonne sono i vettori colonna v e w, nellordine. >> A = [v ; w] crea la matrice le cui righe sono i vettori riga v e w. >> A = [B C ; D E] crea la matrice di blocchi B C D E, nella posizione indicata. NB: attenzione alla consistenza delle dimensioni! Altrimenti errore…
Estrazione di matrici (1) >> A(i,:) estrae li-esima riga della matrice A. >> A(:,j) estrae la j-esima colonna di A. >> A([p,q, ],[r,s, ]) estrae la sottomatrice di A costituita dalle righe p,q,… e dalle colonne r,s,…
Cancellazioni È possibile cancellare righe e colonne, ridefinendole come la matrice vuota. Es: >> A(:,1) = [ ] NB: Il tentativo di cancellare altri tipi di sottomatrici (es: singole entrate) produce un errore dimensionale.
Estrazione di matrici (2) >> diag(A) estrae la diagonale di A in un vettore colonna. >> diag(v) crea la matrice diagonale con diagonale il vettore v. >> triu(A) e >> tril(A) estraggono rispettivamente la matrice triangolare superiore (up) e inferiore (low).
Matrici notevoli identità n x n : >> eye(n) (in inglese, la lettera I e la parola eye si pronunciano entrambe/aɪ/) matrice nulla m x n : >> zeros(m,n) matrice m x n tutti 1 : >> ones(m,n) quadrato magico n x n : >> magic(n) Per un elenco di tutte le matrici elementari: >> help elmat
Esercizio 2 Verificare che nella matrice magic(4) ciascuna riga e colonna, nonché la diagonale, ha somma uguale.
Esercizio 3 a)Costruire una matrice A 3 x 7 tale che: – prima riga = 7,6,…,1 – seconda riga = 1,1,…,1 – terza riga = 0,0,…,0 b) Estrarre due sottomatrici di A: – una costituita dalle ultime 3 colonne – una costituita dagli elementi della riga 1 e 3, colonna 2 e 4.
Numeri casuali >> rand genera un numero (pseudo)casuale con distribuzione uniforme nellintervallo [0,1]. >> randn genera un numero (pseudo)casuale con distribuzione normale di media 1 e deviazione standard 1. >> rand(m,n) e >> randn(m,n) generano matrici (pseudo)casuali (per matrici quadrate basta un parametro).
Funzioni parte intera >> floor(x) è il massimo intero x. >> round(x) è lintero più vicino a x. >> fix(x) è il massimo intero x se x0, il minimo intero x se x<0 (è lintero che si ottiene da x cancellando le cifre dopo la virgola).
Esercizio 4 Scrivere un comando che generi matrici in cui tutte le entrate sono numeri interi casuali, con una ragionevole distribuzione di probabilità.
Fine Ricordo: >> diary off per chiudere il diary. La tastiera è spesso preferibile al mouse. Per terminare il programma: >> quit