Matlab: introduzione Daniele Loiacono, Vittorio Zaccaria Informatica B - Codice Corso: 081369 - A.A. 2010/2011 INGEGNERIA MECCANICA (BV) - INGEGNERIA IV (1 liv.) - Scaglione S - Z INGEGNERIA ENERGETICA (BV) - INGEGNERIA IV (1 liv.) - Scaglione S - Z
Introduzione a Matlab Matlab è uno strumento per il calcolo numerico un ambiente di sviluppo integrato ed uno specifico linguaggio di programmazione una ricca libreria di funzioni matematiche Alternativa gratuita di nome Octave http://www.gnu.org/software/octave Testo suggerito: Introduzione alla programmazione in MATLAB. Campi, Di Nitto, Loiacono, Morzenti, Spoletini. Esculapio Editrice.
Introduzione a Matlab È un linguaggio di alto livello (come il C o il Java) Linguaggio interpretato Non richiede la fase di traduzione in codice macchina A differenza del C, le variabili vengono create assegnando ad esse dei valori L unità fondamentale di dati in MATLAB è l array: ogni variabile è un array (le variabili scalari sono array con un solo elemento).
Introduzione a Matlab Le variabili sono create al momento dell inizializzazione Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
Creazione per assegnamento Scalari a = 3 b = 55 Array a=[3 4 2 3] 3 4 2 4 5 6 Matrice a = [3 4 2; 4 5 6]
Esempi Esempio a = [0 7+1]; Risultato a = [0 8] Notazione per accedere all i-esimo elemento nell array vettore: vettore(i) Esempio b = [a(2) 5 a]; Risultato b = [8 5 0 8]
Esempi Non tutti gli elementi devono essere specificati alla creazione ad esempio: c(2, 3) = 5; Risultato: c = [ 0 0 0; 0 0 5 ] 0 0 0 0 0 5
Esempi: L array può essere esteso successivamente d = [2 5]; d(4)=2; Risultato d = [2 5 0 2] Operatore di trasposizione g = d ; Risultato: g = [ 2; 5; 0; 2 ] 2 5 0 2
Esempi Come evitare di enumerare esplicitamente tutti i valori, uso dell operatore : x = 1:2:10; Risultato x = [1 3 5 7 9] inf: passo: sup Altro Esempio: l = 1:3; m = [l l ] Risultato m = [ 1 1 ; 2 2; 3 3 ]
Funzioni predefinite
Utilizzo funzioni predefinite Esempi a = zeros(2); 0 0 b = zeros(2,3); 0 0 0 0 0 0 c = [1 2; 3 4]; d = zeros(size(c)); 0 0 0 0
Tipi in virgola mobile Questi numeri possono essere Reali var1 = -10.7; Immaginari Complessi, var2 = 4i; var3 = 4j; (i e j sono sinonimi) var3 = 10.3 + 10i;
Stringhe Una variabile puo contenere un array di caratteri (codificati con 16 bit) commento = questa è una stringa ; Array di 1 x 21 caratteri
Assegnamento di scalari ad array m(1:4, 1:3) = 3 3 3 3 3 3 3 3 3 3 3 3 3 Regola: il modo con cui uno scalare viene assegnato ad un array dipende dalla forma dell array che viene specificata a sinistra dell assegnamento m(1:2, 1:2) = 4 4 4 3 4 4 3 3 3 3 3 3 3
Variabili speciali Matlab definisce un insieme di variabili predefinite (es, pi) Il valore di queste variabili può essere modificato, per esempio circ1=2*pi*10; pi = 5; circ2=2*pi*10; Il valore di circ2 non sarà più la circonferenza di un cerchio. E` fortemente sconsigliato modificare il valore di una variabile predefinita
Variabili speciali
Operazioni su scalari e array Classiche operazioni come in C piu elevamento a potenza ^: 2^3 = 8 Operazioni sugli array (somma): 1 2 3 4 2 3 5 7 a = b = a+b = 3 5 8 11
Operazioni su scalari e array Operazioni sugli array (prodotto elemento per elemento): a = 1 2 b = 2 3 a.*b = 2 6 3 4 5 7 15 28
Operazioni su scalari e array Operazioni sugli array (prodotto matriciale): a = 1 2 b = 2 3 a*b = 12 17 3 4 5 7 26 37
Operazioni definite
Matrix left division Un sistema di equazioni: x e l incognita, coefficienti a e b noti Puo essere visto come Ax=b: x = A \ B = inversa(a) * B
Altre funzioni
Strutture di controllo (if) if rem(a, 2) == 0 disp('a pari') b = a/2; end
Strutture di controllo (switch case) switch input_num case -1 disp('negative one'); case 0 disp('zero'); case 1,2 disp('one or two'); otherwise disp('other value'); end
Strutture di controllo (for) for n = 2:2:6 x(n) = 2 * x(n - 1); end
Strutture di controllo (while) n = 1; while prod(1:n) < 1e100 n = n + 1; end
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(x,y) disegna digramma cartesiano dei punti congiunge con una linea x = -10:0.1:10; y=x.^3; plot(x,y); xlabel('ascisse'); ylabel('ordinate'); title('cubica');