La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Strumentazione Biomedica 2 Introduzione a MatLab.

Presentazioni simili


Presentazione sul tema: "Strumentazione Biomedica 2 Introduzione a MatLab."— Transcript della presentazione:

1 Strumentazione Biomedica 2 Introduzione a MatLab

2 DEI - Univ. Padova (Italia) Cosè MatLab MatLab = Matrix Laboratory Utilizza come elemento base le matrici: Una matrice NxM indica una matrice con N righe ed M colonne Matlab consente: Laccesso ad un ambiente di calcolo Lutilizzo di funzioni specializzate La programmazione

3 DEI - Univ. Padova (Italia) Perchè MatLab Facilità duso: –Ha moltissime funzioni disponibili –E possibile programmare funzioni ad hoc –Non ci si deve preoccupare di programmazione a basso livello Esportabilità –Le funzioni MatLab sono file di testo

4 DEI - Univ. Padova (Italia) La Command Window Spazio di lavoro Pannelli ausiliari

5 DEI - Univ. Padova (Italia) Command Window come console Luso interattivo della command window è spesso poco conveniente e noioso: è difficile trovare gli errori, per ripetere le operazioni bisogna riscrivere tutto ogni volta

6 DEI - Univ. Padova (Italia) Operazioni di assegnazione >> a=18 a = 18 >> Alla variabile a è assegnato il valore 18 Matlab fa eco del risultato della operazione Il prompt segnala che Matlab è pronto per unaltra operazione >> a=18; >> Terminando una operazione con ; Matlab non fa eco.

7 DEI - Univ. Padova (Italia) Osservazioni Matlab è case-sensitive I nomi di variabili non possono cominciare con numeri I nomi di variabili non possono contenere spazi I nomi di variabili non possono contenere caratteri speciali

8 DEI - Univ. Padova (Italia) Creazione di matrici >> A = [1 2 3; 4 5 6; 7 8 9] Delimititatore di matriceDelimititatore di riga >> A = [ ] Entrambi i comandi creano la stessa matrice 3x3

9 DEI - Univ. Padova (Italia) Accedere agli elementi delle matrici >> A = [ ]; >> A(2,1) ans = 4 >> A(2) ans = 4 Per accedere ad elementi di una matrice si usano le parentesi tonde Un elemento è identificato dalla sua posizione (riga,colonna), oppure dal suo indice, contando gli elementi della matrice per colonna

10 DEI - Univ. Padova (Italia) Sottomatrici A =[ ] Per accedere ad un elemento: x=A(3,4) assegnera 12 Per accedere ad unintera riga, x=A(2,:) restituira [ ] Per accedere ad unintera colonna, x=A(:,3) restituira [3 7 11] Per accedere ad una sottomatrice, ad es.la 2X2 in basso a destra x=A(2:3,3:4) restituira [ ]

11 DEI - Univ. Padova (Italia) Dimensioni delle variabili Vettori length(X) restituisce la lunghezza del vettore X o il numero di colonne di X Matrici [M,N]=size(X) righe e colonne della matrice X size(X,1) numero di righe della matrice X size(X,2) numero di colonne della matrice X

12 DEI - Univ. Padova (Italia) Tipi di variabili Matrici e vettori Caratteri e Stringhe Record Celle

13 DEI - Univ. Padova (Italia) Stringhe Le stringhe sono delimitate dal singolo apice >> str='Introduzione a Matlab' str = Introduzione a Matlab >>

14 DEI - Univ. Padova (Italia) Formattazione di stringhe s = sprintf(stringa formattata,A,...) Esempi: sprintf('%0.5g',(1+sqrt(5))/2) sprintf('%0.5g',1/eps) e+15 sprintf('%15.5f',1/eps) sprintf('%d',round(pi)) 3 sprintf('%s','hello') hello sprintf('The array is %dx%d.',2,3) The array is 2x3

15 DEI - Univ. Padova (Italia) Conversione di stringhe Conversione di numeri in stringhe >>val=67; >>str=num2str(val); int2strConvert integer to string. mat2strConvert matrix to string. num2strConvert number to string. sprintfConvert number to string under format control. sscanfConvert string to number under format control str2doubleConvert string to double-precision value. str2numConvert string to number.

16 DEI - Univ. Padova (Italia) Record >> libro(1).posizione=1; >> libro(1).titolo='The Lords of the Rings'; >> libro(1).autore='JRR Tolkien'; >> libro(2).posizione=10; >> libro(2).titolo='Godel, Hescher, Bach'; >> libro(2).autore='DJ Hopfstaedter'; >> libro(2) ans = posizione: 10 titolo: 'Godel, Hescher, Bach' autore: 'DJ Hofstaedter' >>

17 DEI - Univ. Padova (Italia) Celle E possibile costruire vettori e matrici di elementi di dimensioni diverse fname' ans = 'c2d.m' 'acker.m' 'append.m' 'augstate.m' 'balreal.m' 'bode.m' >> fname{2} ans = acker.m Dallarray di celle si può accedere agli elementi

18 DEI - Univ. Padova (Italia) Gestione dello spazio di lavoro who produce la lista delle variabili nel workspace whos la lista contiene informazioni su tipo e dimensioni clear elimina tutte le variabili nel workspace clear cancella solo la variabile con nome nomevariabile

19 DEI - Univ. Padova (Italia) Salvataggio e Caricamento save salva nel file nomefile.mat tutte le variabili del workspace load carica nel workspace tutte le variabili presenti in nomefile.mat save salva nel file nomefile.mat le variabili in nomevar load carica nel workspace le variabili nomevar del file nomefile.mat Osservazioni: con lopzione –ASCII i comandi precedenti leggono/salvano file di testo è possibile utilizzare la forma funzionale s=load(nomefile);

20 DEI - Univ. Padova (Italia) Richiamare i comandi: limitare la fatica inutile >>, Richiama i comandi già dati dalla Command Window >> test +, Richiama i comandi già dati dalla Command Window che cominciano con test

21 DEI - Univ. Padova (Italia) Help di Matlab

22 DEI - Univ. Padova (Italia) Help di Matlab >> help NomeComandoHelp in linea per il comando NomeComando >> help min MIN Smallest component. For vectors, MIN(X) is the smallest element in X. For matrices, MIN(X) is a row vector containing the minimum element from each column. For N-D arrays, MIN(X) operates along the first non-singleton dimension. [Y,I] = MIN(X) returns the indices of the minimum values in vector I. If the values along the first non-singleton dimension contain more than one minimal element, the index of the first one is returned. MIN(X,Y) returns an array the same size as X and Y with the smallest elements taken from X or Y. Either one can be a scalar. [Y,I] = MIN(X,[],DIM) operates along the dimension DIM. When complex, the magnitude MIN(ABS(X)) is used, and the angle ANGLE(X) is ignored. NaN's are ignored when computing the minimum. Example: If X = [2 8 4 then min(X,[],1) is [2 3 4], 7 3 9] … >>

23 DEI - Univ. Padova (Italia)... e quando non si sa che pesci pigliare >> lookfor NomeComando Ricerca in tutto lhelp in linea la parola NomeComando >> lookfor mean RETmeandir.m: % Compute the mean direction of the barycenters distant between 20 and MEAN Average or mean value. LMS Construct a least mean square (LMS) adaptive algorithm object. EQ_GETOPT Computes Equalizer coefficients that minimizes the Mean Square GWNOISE generate valid mean value, standard deviation and seeds for GWNOISE block. DSPBLKMEAN Signal Processing Blockset Mean block helper function. DSPBLKMEAN2 Signal Processing Blockset Mean block helper function. MEAN2 Compute mean of matrix elements. ipexhistology.m: % Color-Based Segmentation Using K-Means Clustering DMAE Mean absolute error performance derivative function. DMSE Mean squared error performance derivatives function. DMSEREG Mean squared error w/reg performance derivative function. MAE Mean absolute error performance function. MSE Mean squared error performance function. …

24 DEI - Univ. Padova (Italia) Matrici notevoli A=eye(10) matrice identità 10x10 A=zeros(3,5) matrice 3x5 con elementi tutti nulli A=ones(3,5) matrice 3x5 con elementi tutti pari a 1 A=diag([3, 5, 6]) matrice 3x3, con elementi sulla diagonale specificati

25 DEI - Univ. Padova (Italia) Costruzione di vettori e matrici >> x=0:2.5:10 x = >> Vettori e Matrici con elementi equispaziati x = linspace(Min, Max, N) x = logspace(Min, Max, N) Conoscendo il numero di elementi necessari N

26 DEI - Univ. Padova (Italia) Variabili casuali X=rand(N,M) matrice NxM con elementi casuali distribuiti unif. in [0,1] X=randn(N,M) matrice NxM con elementi casuali distribuiti gauss. come Ν(0, 1) Sfruttando trasformazioni di variabili aleatorie, è possibile ottenere vettori con valori distribuiti variamente X=1-2*rand(N,M) matrice NxM con elementi casuali distribuiti unif. in [-1,1] X=2+5*randn(N,M) matrice NxM con elementi casuali distribuiti gauss. come Ν(2, 5) X=exp(randn(N,M)) matrice NxM con elementi casuali distribuiti come lognormale

27 DEI - Univ. Padova (Italia) Operazioni aritmetiche: scalari e matrici >> a=2*eye(2) a = >> a=ones(2,3); >> b=2*ones(2,3); >> a+b ans = Le operazioni di matrici e vettori con scalari sono gestite da Matlab in maniera intuitiva

28 DEI - Univ. Padova (Italia) Operazioni aritmetiche: matrici e vettori Attenzione: quando si opera su matrici e vettori le dimensioni devono essere compatibili! >> X=[1:3;1:3] X = Y=ones(2,3) Y = >> X*Y ??? Error using ==> mtimes Inner matrix dimensions must agree. >>

29 DEI - Univ. Padova (Italia) Operazioni aritmetiche: matrici e vettori >> X*Y' ans = 6 6 >> W=[4,5,6] W = >> X*W' ans = 32 Moltiplicazione di due matrici Moltiplicazione matrice-vettore

30 DEI - Univ. Padova (Italia) Operazioni aritmetiche: elemento per elemento Le operazioni aritmetiche operano sulle matrici: A*B A/B=A*B -1 A\B=A -1 *B A^2=A 2 =A*A E possibile compiere le operazioni elemento per elemento C=A.*BC ij =A ij *B ij C=A.*BC ij =A ij *B ij C=A.^2C ij =A ij 2 In tal caso le matrici devono avere dimensione uguale!

31 DEI - Univ. Padova (Italia) Potenza e inversa Data una matrice quadrata X, è possibile calcolare le sue potenze: >>Xp=X^p; e la sua inversa: >>Xi=inv(X);

32 DEI - Univ. Padova (Italia) Autovalori ed autovettori Data una matrice X quadrata, gli autovalori ed autovettori sono tali che: X*V = V*D se V è la matrice doiagonale con gli autovalori di X sulla diagonale e D è la matrice le cui colonne corrispondono agli autovettori di X [V,D]=eig(X);

33 DEI - Univ. Padova (Italia) Statistiche max(x), min(x): mean(x), median(x), var(x), std(x): prctile(x,p); >> X=randn(3,3) X = >> max(X) ans = >>

34 DEI - Univ. Padova (Italia) Funzioni su matrici sum(x):somma gli elementi di x (per colonne se x è matrice). prod(x): esegue il prodotto degli elementi di x (per colonne se x è matrice). diff(x): calcola le differenze [x(2)-x(1), x(3)-x(2), …, x(n)-x(n-1)]. det(X) : determinante di X. rank(X) : rango di X. trace(X): traccia di X. poly(X) : polinomio caratteristico di X. norm(X, p): norma p di X (matrice o vettore che sia)

35 DEI - Univ. Padova (Italia) Funzioni di matrici In generale le funzioni di Matlab operano sulle matrici elemento per elemento X=pi-2*pi*rand(2,4) X = >> sin(X) ans = >>

36 DEI - Univ. Padova (Italia) Matrici multidimensionali Le matrici di Matlab possono avere qualsiasi dimensione: >>X=ones(3,5,2)è una matrice 3x5x2 >>X=pi-2*pi*rand(2,3,3) X(:,:,1) = X(:,:,2) = X(:,:,3) = >>

37 DEI - Univ. Padova (Italia) Campionare spazi multidimensionali >>[xmat,ymat]=meshgrid(-2:2,-2:2) xmat = ymat = >>

38 DEI - Univ. Padova (Italia) Funzioni di più variabili Funzione di una variabile: >>t=0:0.1:pi; >>x=t.^2; Funzione di due variabili: >> [xmat,ymat]=meshgrid(0:0.1:pi,0:0.1:pi); >>zmat=xmat.^2+ymat.^2;

39 DEI - Univ. Padova (Italia) Operatori logici Gli operatori logici più comuni sono: & and logico | or logico ~ notlogico >> a=[0,1,0,3]; >> b=[1,1,0,3]; >> a | b ans = >> a & b ans = >> ~b ans =

40 DEI - Univ. Padova (Italia) Operatori relazionali Gli operatori relazionali più comuni sono: == uguale ~= diverso da < minore di <= minore o uguale >> a=[0,1,2,3]; >> b=[1,1,3,3]; >> a>b ans = >> b>a ans = >>

41 DEI - Univ. Padova (Italia) Ricerca di elementi indice = find(expr); [riga, colonna] = find (expr); X=pi-2*pi*rand(3,3) X = >> n=find(X>0) n = >> [r,c]=find(X>0) r = c = 1 2 3

42 DEI - Univ. Padova (Italia) m-files Sequenza di comandi scritta in un file di testo con estensione m m-files Per eseguire un m-file basta digitare il suo nome nella command window e premere invio

43 DEI - Univ. Padova (Italia) m-files: vantaggi Poter ripeter in maniera semplice una lunga lista di comandi Eseguire la stessa sequanza di comandi su dati diversi Esportare sequanze di comandi su altre macchine o per altri utenti Tenere traccia di ciò che si è fatto

44 DEI - Univ. Padova (Italia) Tipi di m-files: scripts Gli scripts sono sequenze di comandi: Tutte la variabili ed i parametri utilizzati devono essere: Presenti nel workspace Creati allinterno della sequenza File prova.m: str1=questa è una stringa ; str2= di prova; disp([str,str2]) >> prova.m questa è una stringa di prova >>

45 DEI - Univ. Padova (Italia) Tipi di m-files: funzioni Sono files di comandi con argomenti in entrata e in uscita. Tutte le variabili ed i parametri utilizzati da una funzione devono essere: Passati come argomenti Creati allinterno della sequenza

46 DEI - Univ. Padova (Italia) Tipi di m-files: funzioni File prova.m: function str=DispStr(str1,str2); str1=questa è una stringa ; str2= di prova; str=[str1,str2]; disp(str) >> str1='questa è una stringa '; >> str2='di prova'; >> str=DispStr(str1,str2) str = questa è una stringa di prova >>

47 DEI - Univ. Padova (Italia) Cosa si sta eseguendo? which Nel caso si abbiano risultati inaspettati, Può essere utile calcolare quale funzione si stia eseguendo: >> which mean C:\Progra~1\matlabR12\toolbox\matlab\datafun\mean.m >>

48 DEI - Univ. Padova (Italia) Commenti E buona abitudine di programmazione sia negli scripts che nelle functions inserire dei commenti I commenti sono segnalati da %: Le prime righe di commento di uno script o di una function diventano parte dello help online

49 DEI - Univ. Padova (Italia) Cicli condizionali: for for variabile = espressione istruzioni End Esempio: calcolo di 10! s=0; for i=1:10, s=s*i; end Lindentazione aiuta la leggibiltà dei programmi

50 DEI - Univ. Padova (Italia) Cicli condizionali: while while (espressione), istruzioni end Esempio: calcolo di 10! s=0; i=1; while(i<=10), s=s*i; end

51 DEI - Univ. Padova (Italia) Strutture condizionali: if... else Struttura: if espressione istruzioni elseif espressione istruzioni else istruzioni end Esempio: if(sole==TRUE & lezione==FALSE) mare=TRUE; elseif(lezione==TRUE & interesse==0) mare=TRUE; else mare=FALSE; end

52 DEI - Univ. Padova (Italia) Strutture condizionali: switch... case Struttura: switch variabile case v1, istruzione case v2, istruzione... otherwise istruzione end Esempio: condizione:=sole+2*lezione+4*interesse; switch(condizione) case 0, mare=0; case 1, mare=1; case 2, mare=0;... end

53 DEI - Univ. Padova (Italia) Plot >> t=0:0.01:5; >> plot(t,exp(-t).*cos(4*t));

54 DEI - Univ. Padova (Italia) Sovrapposizione di grafici >> t=0:0.01:5; >> plot(t,exp(-t).*cos(4*t)); >> hold on; >> plot(t,exp(-t),'r');

55 DEI - Univ. Padova (Italia) Riquadri Listruzione subplot(M,N,K) crea una figura contenente M*N riquadri, distribuiti su M righe ed N colonne. Lindice K indica il plot attivo. >> subplot(2,1,2); plot(t,exp(-t).*cos(4*t)); >> subplot(2,2,1); plot(t,exp(-t)); >> subplot(2,2,2); plot(t,cos(4*t)); >>

56 DEI - Univ. Padova (Italia) Visualizzazione di immagini Ogni matrice può essere intesa come una immagine e viceversa: >> X=127+20*randn(20,20); >> imagesc(X) >> imshow(X/255)

57 DEI - Univ. Padova (Italia) La mappa dei colori Con il comando colormap è possibile cambiare il modo in cui ad ogni valore di una matrice è assegnato un colore colormap(jet) colormap(bone) colormap(cool)

58 DEI - Univ. Padova (Italia) Visualizzazione: grafici ed immagini x y x y

59 DEI - Univ. Padova (Italia) Visualizzare grafici ed immagini >> imagesc(X) >> colormap(gray) >> hold on >> plot(5,10,'*r')

60 DEI - Univ. Padova (Italia) Formattazione dei grafici: editor interattivo

61 DEI - Univ. Padova (Italia) Formattazione dei grafici: editor interattivo

62 DEI - Univ. Padova (Italia) Handle di un oggetto Ogni oggetto disegnato ha delle sue proprietà. Per accedervi bisogna conoscere a quale ogetto ci si vuole riferire: handle >> h(1)=imagesc(X); >> h(2)=plot(5,10,'*r');

63 DEI - Univ. Padova (Italia) Formattazione dei grafici: riga di comando >> get(h) Color = [1 0 0] EraseMode = normal LineStyle = none LineWidth = [0.5] Marker = * MarkerSize = [6] MarkerEdgeColor = auto MarkerFaceColor = none XData = [5] YData = [10] ZData = []... >>

64 DEI - Univ. Padova (Italia) Formattazione dei grafici: riga di comando >> set(h(2),'MarkerSize',24,'LineWidth',3)

65 DEI - Univ. Padova (Italia) Funzioni che agiscono su funzioni

66 DEI - Univ. Padova (Italia) Soluzione di equazioni differenziali Funzioni che hanno come argomento una funzione: Integrazione Riceca di zeri Ricerca di minimi Integrazione numerica Soluzione numerica di equazioni differenziali

67 DEI - Univ. Padova (Italia) Ricerca di zeri >> q=fzero('cos(4*x)',pi/4) q = function y=prova(x) y=cos(4*x); >> q =


Scaricare ppt "Strumentazione Biomedica 2 Introduzione a MatLab."

Presentazioni simili


Annunci Google