1 / 66

Introduzione all’ uso di MATLAB nella soluzione dei problemi di Fisica Ambientale

Introduzione all’ uso di MATLAB nella soluzione dei problemi di Fisica Ambientale. Corso IFTS Tecnico Superiore per il monitoraggio e la Gestione del Territorio e dell'Ambiente 2010-2011. Programma del corso. Teoria 1° lezione (3h):

mandel
Download Presentation

Introduzione all’ uso di MATLAB nella soluzione dei problemi di Fisica Ambientale

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduzione all’ uso di MATLAB nella soluzione dei problemi di Fisica Ambientale Corso IFTS Tecnico Superiore per il monitoraggio e la Gestione del Territorio e dell'Ambiente 2010-2011

  2. Programma del corso • Teoria • 1° lezione (3h): • Nozioni basilari sul linguaggio di programmazione MATLAB • Operazioni su vettori e matrici • M-files e m-functions • Funzioni principali di matematica e statistica •  2° lezione (3h): • Operatori relazionali • Operatori logici • Iteratori • Polinomi • Interpolazione • Gestione dei files • 3° lezione (3h): • Elementi di grafica • 4° lezione (3h): • despiking • trend •  5° lezione (3h): • Analisi serie temporali • Esercitazioni • 1° esercitazione (1h): • Nozioni base • 2° esercitazione (1h): • Iteratori e operatori logici • 3° esercitazione (1h): • Gestione file • Interpolazione • 4° esercitazione (2h): • Plot • 5° esercitazione (1h): • despiking •  6° esercitazione (3h): • Tesina finale Ilaria Pietroni

  3. Nozioni basilari su MATLAB • Operazioni su vettori e matrici • M-files e m-functions • Funzioni principali di Matematica e • Statistica Ilaria Pietroni

  4. MATLAB è un programma ad alte prestazioni per il calcolo tecnico e scientifico, ed e' anche un linguaggio basato su espressioni che rende molto facile la programmazione. È usato nella ricerca scientifica e nella risoluzione di problemi di ingegneria effettua tutte le operazioni in doppia precisione. E' un programma incredibilmente duttile, facile da apprendere, facile da usare, velocissimo nei calcoli, opera con le più perfezionate librerie esistenti, include inoltre la visualizzazione fornendo figure a colori e ogni tipo di grafici bi e tridimensionali. Generalità su MATLAB Ilaria Pietroni

  5. MATLAB è un sistema software interattivo per • Calcolo • Sviluppo di algoritmi • Visualizzazione e grafica • Analisi ed elaborazione di dati • Simulazione e modellazione • Programmazione in un proprio linguaggio Ilaria Pietroni

  6. MATLAB 6.5 Ilaria Pietroni

  7. Development Environment Il desktop di Matlab include la Command Window (finestra dove, al prompt di Matlab, si possono digitare direttamente i comandi); un’altra finestra col “diario” dei comandi dati in precedenza( Command History); un elenco dei componenti installati; browsers per accedere all’help, ecc.. Oltre a lavorare da linea comandi, l’utente può accedere a vari strumenti specialistici che si presentano come Grafical User Interfaces (GUIs) Ilaria Pietroni

  8. Barra dei menu e current directory Current directory Ilaria Pietroni

  9. L’ambiente di lavoro MatLab fornisce un set di strumenti che consentono di usare files e functions di Matlab. Tramite tali strumenti si manipolano, nel cosiddetto worksapce di MatLab (che ospita l’insieme delle variabili definite in un dato istante di una sessione di lavoro), le variabili stesse; si importano ed esportano dati nel e dal workspace, ecc.. Workspace Ilaria Pietroni

  10. Editor Ilaria Pietroni

  11. Command History Ilaria Pietroni

  12. Command window Command window Ilaria Pietroni

  13. Help • Uno strumento comodo e veloce per imparare ad utilizzare le funzioni e le routine di MATLAB è l'help in linea esso è suddiviso in diverse parti: • Uso del comando con eventuali opzioni. • Cenni alla implementazione del comando (molto utile per essere sicuri che una data funzione con un nome a noi familiare svolga il compito da noi richiesto). • Eventuale esempio di utilizzo. • Funzioni correlate. Ilaria Pietroni

  14. ScaricareFreeMat 4.0 Ilaria Pietroni

  15. Nozioni basilari su MATLAB Operazioni su vettori e matrici • M-files e m-functions • Funzioni principali di matematica e • Statistica Ilaria Pietroni

  16. MatLab sta per “MATrix LABoratory” ed in esso tutte le variabili sono matrici L’elemento di base è una matrice che non richiede dimensionamento. Ilaria Pietroni

  17. Matrici e vettori Matrice:è uno schieramento rettangolare di oggetti Le righe orizzontali di una matrice sono chiamate righe, mentre quelle verticali sono le colonne. In generale, una matrice  è una matrice con m righe e n colonne, dove m e n sono interi positivi fissati. L’elemento posizionato alla riga i-esima e alla colonna j-esima si indica con: aij  oppure con a(i,j). I vettori possono essere considerati matrici molto semplici, aventi una sola riga o una sola colonna , si parla anche di matrice riga e matrice colonna. Una matrice in cui m=n si dice quadrata. Gli elementi a(i,i) costituiscono la diagonale principale della matrice. Ilaria Pietroni

  18. La somma di due matrici A e B con m righe ed n colonne è la matrice (A + B) definita nel modo seguente: (A + B)i,j: = Ai,j + Bi,j Prodotto: La moltiplicazione per uno scalare è un'operazione che, data una matrice A ed un numero c (detto scalare), costruisce una nuova matrice, il cui elemento è ottenuto moltiplicando l'elemento corrispondente di A per c: (cA)i,j: = cAi,j La moltiplicazionetra due matriciA e B è un'operazione più complicata delle precedenti. A differenza della somma, non è definita moltiplicando semplicemente gli elementi aventi lo stesso posto. La definizione di moltiplicazione che segue è motivata dal fatto che una matrice modellizza una applicazione lineare, e in questo modo il prodotto di matrici corrisponde alla composizione di applicazioni lineari. La moltiplicazione è definita soltanto se le matrici A e B sono t.c. il numero p di colonne di A coincide con il numero p di righe di B. Il risultato è una matrice C di tipo: Ci,j = Ai,1 B1,j + Ai,2 B2,j + … Ai,n Bn,j Il prodotto è chiamato prodotto riga per colonna. Algebra delle matrici: Ilaria Pietroni

  19. La matrice trasposta è una matrice in cui le righe e le colonne della matrice originale sono invertite: (AT)i,j = Aj,i La matrice inversa di una matrice quadrata A è la matrice A-1 tale che A A-1=I Con I= matrice identità. Il determinante di una matrice è una funzione che associa ad ogni matrice quadrata uno scalare utile per sintetizzare alcune proprietà algebriche della matrice. Ilaria Pietroni

  20. Variabili numeriche MATLAB si basa sulle matrici ed ogni variabile che utilizza è considerata come matrice Ad es. c=2; È una matrice ad una riga ed una colonna Per questo nel seguito parleremo essenzialmente di matrici. Ilaria Pietroni

  21. Prova_mat: a=[1 2 3] matrice ad 1 riga e 3 colonne b=[1;2;3] matrice ad 3 righe e 1 colonna d=[1,2;3,4;nan,0] a(2)=8 cambio valore all'elemento di posto 2 di a b(5)=4 estende la matrice b c=[]; matrice vuota I nomi delle variabili possono essere lunghi fino ad un massimo di 19 caratteri alfanumerici, con il primo obbligatoriamente alfabetico. Ilaria Pietroni

  22. d(1,:)=[] elimina la prima riga d([1,2],:)=d([2,1],:) cambia la 1 e 2 riga di d. n=length(d); massima dimensione di d d(:,1)=d(n:-1:1,1) inverte gli elementi della prima colonna di d size(a) Numero di righe e colonne di a a=a' trasposta di a size(a) Ilaria Pietroni

  23. e=[1 2 3 ... 4 5 6] continua alla riga successiva g=1:10 f=[b;4] Concatenazione verticale e(end) E=[2 3] e D=d(:); rende la matrice un vettore colonna aggiungendo ogni colonna sotto la precedente A=a(:); rende il vettore un vettore colonna Attenzione: i nomi delle variabili sono case sensitive: si distingue cioè tra lettere maiuscole e minuscole!!! Ilaria Pietroni

  24. Concatenazione: Tra matrici: A=[3,5,16]; B=[9 7 22]; Orizzontale: O=[A, B]; O_2=[A B]; >> 3 5 16 9 7 22 Verticale: V=[A;B]; >>3 5 16 9 7 22 A e B devono avere lo stesso numero di righe A e B devono avere lo stesso numero di colonne Ilaria Pietroni

  25. Sommario simboli: % - denota un commento . - punto dei decimali operazioni elemento per elemento nelle strutture per separare i campi , - separa gli indici di matrice e gli argomenti di una funzione, ma anche diversi comandi ; - all’interno di [ ] separa diverse righe; separa i comandi evitando la stampa del risultato : - crea vettori, iterazioni [ ] - sono usate per fare vettori e matrici; la virgola e lo spazio separano elementi della stessa riga, il punto e virgola separa le diverse righe. ( ) - usate per determinare la precedenza in un’operazione aritmetica includere l’argomento di una funzione determinare l’elemento/i di una matrice o vettore ‘ - utilizzato per fare la trasposta di una matrice per scrivere stringhe ... continua alla riga successiva Ilaria Pietroni

  26. Sommario indicizzazione: Ilaria Pietroni

  27. Prova_string: Il testo in MATLAB è sempre inserito tra apici. a=['2','d';'w','e'] w=str2num('2') w+3 a+2 b=[1 2; 8,9]; num2str(b) Ilaria Pietroni

  28. Per visualizzare stringhe o messaggi si usa la funzione disp. Es.: disp('Premere un tasto'); Concatenazione: S=[‘s1’,’s2’,’s3’]; D=[‘d1’,’d2’,’d3’]; Orizzontale O=[S D] O2=[S,D] O3=strcat(S,D) Verticale V=[S; D] V2=strvcat(S,D) Devono avere lo stesso numero di righe cioè di caratteri Devono avere lo stesso numero di colonne cioè di caratteri Ilaria Pietroni

  29. Prova_strut: Una struttura è una matrice I cui elementi sono accessibili attraverso campi testuali; Ogni camp opuò essere di diverso tipo e di dimensioni diverse. a=[1 2 3; 4 5 6; 7 8 9]; b.i(1).j(2).dat=a(:,1); Ilaria Pietroni

  30. Operazioniaritmetiche: Ilaria Pietroni

  31. prova_opera: Sugli scalari: a=5 n=2 Addizione s=a+n Sottrazione d=a-n Moltiplicazione m=a*n Divisione a destra d1=a/n Divisione a sinistra d2=a\n Ilaria Pietroni

  32. prova_opera: Elevamento a potenza p=a^n Precedenze: parentesi & da sn a ds prec=(a+n)*n/2-a+((n^.5)-1) Sui vettori: S=[1,2,5], G=[0,6,9], V=[9,5,8;1,4,6;7,7,2]; v=V(1,:); Addizione mad=G+S pad=G+2 Sottrazione dso=G-S pso=S-2 Ilaria Pietroni

  33. prova_opera: Sottrazione pso=S-2 Moltiplicazione Righe per colonne mdi=S*V rxc=V*V Ogni elemento per uno scalare mscal=V*2 mpot2=V.*V (equivalente a V.^2) Divisione sdi= S/V sdi = S*inv(V) S=[1,2,5], G=[0,6,9], V=[9,5,8;1,4,6;7,7,2]; v=V(1,:); Ilaria Pietroni

  34. prova_opera: a=5 S=[1,2,5], G=[0,6,9], V=[9,5,8;1,4,6;7,7,2]; v=V(1,:); Divisione ddm=v./S vdm=a./V ogni elemento diviso uno scalare sscal=V/2 sdm=S.\v Potenza potenza di ogni elemento mpot=V.^2 rpot=S.^2 Ilaria Pietroni

  35. prova_opera: Potenza esponente pari a S npot=2.^S righe per colonne rxc1=V^2 Valori speciali p_greco=pi i j nan Inf ans risposta più recente Ilaria Pietroni

  36. prova_divisioni: a=4; b=5; b diviso a c=a\b a diviso b d=a/b Arrotondamenti: intero più vicino e=round(c) intero più vicino verso zero f=fix(c) intero più vicino verso meno infinito g=floor(c) intero più vicino verso più infinito h=ceil(c) resto di c [b-floor(c)*a] l=rem(b,a) Ilaria Pietroni

  37. Comandi di uso generale • who: elenco delle variabili definite in memoria • whos: informazioni su tutte le variabili in memoria • what: elenco di tutte le funzioni MATLAB nell’area di lavoro (estensione .m) e dei file di dati che sono stati salvati (estensione .mat) Ilaria Pietroni

  38. Cancellare variabili • Se nel workspace sono presenti tre variabili x, y e z e si vuole eliminare una variabile non più utile (risparmiare memoria non fa mai male specie per calcoli che richiedono matrici e vettori di grandi dimensioni) esiste il comando clear: >> clear z Si noti che la variabile z non è più presente nel workspace. • Quando si vuole ripulire l'intero workspace è sufficiente digitare il comando clear seguito da invio: >> clear • ATTENZIONE. I dati persi non potranno piµu essere recuperati! Ilaria Pietroni

  39. Richiamare i comandi richiama l’ultimo comando digitato string+ richiama l’ultimo comando digitato che inizia con tale stringa oppure usare il command history browser clc: per pulire la finestra di comando Ilaria Pietroni

  40. Esercizio n.1 a) Scrivere una matrice riga a, che abbia come elementi le potenze di 3 con esponente un numero da 0 a 20 con passo 2 b) Cambiare il valore dell'elemento 2 di a con 10 c) Verificare le dimensioni di a d) Scrivere la matrice colonna, b, che abbia come elementi i numeri naturali da 1 alla dimensione di a e) Sommare elemento per elemento le matrici a e b in modo da ottenere una matrice riga f) Sommare elemento per elemento le matrici a e b in modo da ottenere una matrice colonna g) Scrivere la matrice c trasposta di b e d trasposta di a Ilaria Pietroni

  41. Esercizio n.1 h) Concatenare le matrici a e c orizzontalmente e b e d verticalmente i) Sottrarre elemento per elemento le matrici a e c l) Moltiplicare elemento per elemento le matrici a e c m) Verificare le dimensioni della matrice precedente n) Dividere elemento per elemento le matrici b e d o) Approssimare intero più vicino verso meno infinito la matrice precedentemente ottenuta Ilaria Pietroni

  42. Esercizio n.1 p) Ripetere i punti (e,g,i,l,m,n,o) per le due matrici A 2x2,B 2x2 i cui elementi siano: a11=1; a12=5; a21=6; a22=9; [e) Sommare elemento per elemento le matrici A e B; g) Scrivere la matrice C trasposta di B; i) Sottrarre elemento per elemento le matrici A e B; l) Moltiplicare elemento per elemento le matrici A e B (chiamare la nuova matrice C); m) Verificare le dimensioni della matrice precedente; n) Dividere elemento per elemento le matrici B e A (chiamare la nuova matrice D); o) Approssimare intero più vicino verso più infinito la matrice precedentemente ottenuta.] Ilaria Pietroni

  43. Esercizio n.1 q) Costruire una matrice 6x6 del tipo con a11=A,a12=B, a21=C, a22=D dove le matrici A, B, sono quelle definite al punto p, mentre le matrici C,D sono quelle ottenute dalla moltiplicazione e divisione delle matrici A e B. r) Scrivere la matrice stringa con elementi uguali agli elementi di H Ilaria Pietroni

  44. Nozioni basilari su MATLAB Operazioni su vettori e matrici M-files e m-functions Funzioni principali di matematica e Statistica Ilaria Pietroni

  45. Il linguaggio di programmazione MATLAB serve all’utente per sviluppare i propri algoritmi di calcolo, i quali vengono posti in nuovi M-files. Le espressioni matematiche coinvolgono intere matrici, per cui si ha una grande concisione nel linguaggio, con conseguente rapidità di programmazione. MATLAB dispone di un editor a cui si accede mediante il comando edit. I file prodotti con questo editor vengono salvati con l’estensione .m e sono eseguibili da MATLAB. Chiamando il file dal prompt dei comandi eseguiamo tutti i comandi in esso contenuti. Ilaria Pietroni

  46. Ci sono due tipi di M-files: -script - function La maggior parte del codice che produrrete sarà creato e gestito tramite M-files Ilaria Pietroni

  47. Script file Uno script file è un M-file contentente una sequenza di istruzioni in linguaggio MATLAB. Creando un file myfile.m tramite l’editor, questo può essere eseguito come un comando nel prompt: >> myfile (senza estensione!) Le variabili generate da uno script sono memorizzate nel workspace della corrente sessione di matlab. Ilaria Pietroni

  48. Function file Possiamo aggiungere alla funzioni preesistenti, funzione costruite da noi per risolvere problemi specifici. Un function file è anch’esso un M-file, salvo che in testa ha una definition line in cui vengono definiti esplicitamente l’input e l’output: function [x,y]=myfun (par) descrizione Istruzioni; Ilaria Pietroni

  49. function [x,y]=myfun (par) descrizione Istruzioni; All'interno del blocco di istruzioni le variabili output vengono settati e il loro valore viene ritornato al termine della funzione stessa. Le variabili definite all'interno di una function sono LOCALI. Il blocco di linee di commento consecutive che eventualmente segue la prima linea del file viene visualizzato digitando il comando help seguito dal nome della funzione creata. Anche le function vengono salvate con estensione .m; il nome del file che le contiene deve essere lo stesso di myfun. Ilaria Pietroni

  50. Le funzioni : nargin e nargout Hanno come output il numero di variabili in input e output rispettivamente Ilaria Pietroni

More Related