Conoscenza di base per Matlab -...

26

Transcript of Conoscenza di base per Matlab -...

Page 1: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Conoscenza di base per Matlab

Laboratorio di Programmazione IICorso di Laurea in Bioinformatica

Dipartimento di Informatica - Università di Verona

Page 2: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Sommario

Introduzione

Operazioni Fondamentali

Cicli

Script e Funzioni

Page 3: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Introduzione

Page 4: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Introduzione Matlab

Concetti di base

Matlab (MATrix LABoratory) programma interattivo percalcolo numerico

Linguaggio interpretato

Ambiti applicativi principali:

Matematica ApplicataAnalisi di SegnaliControlli AutomaticiVisione Arti�ciale

Page 5: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Utilizzo Matlab

Ambiente integrato di programmazione

Applicativo che mette a disposizione una interfaccia gra�cainterattiva

Prompt di comandi che interpreta ed esegue le istruzioni

Altre �nestre di utilita', e.g.

Browser per la directory correnteStoria dei comandi...

Page 6: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Help in linea

Help di matlab

guida per l'utilizzo dei comandi molto completa ed e�cace

help comando per avere una spiegazione sul modo diutilizzo di un comando

Manuale di uso per avere una visione di insieme(disponibile in locale o on-line)

Page 7: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Dichiarazioni di Variabili

Variabili in Matlab

non si dichiara il tipo delle variabili

� a=5 scalare� b = [4 5] vettore riga� c = [4 ; 5] vettore colonna� m = [1,0; 0,1] matrice 2 × 2

la , (oppure lo spazio) separa tra elementi, il ; separa trarighe

matlab stampa sempre il risultato di un operazione(eccezione: l'operazione e' seguita dal punto e virgola)

Page 8: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Lo spazio di lavoro

Workspace

I cambiamenti alle variabili vengono registrati e mantenutinello spazio di lavoro

Comandi per gestire lo spazio di lavoro

� who visualizza tutte le variabili� whos visualizza tutte le variabili e la loro dimensione� clear var cancella la variabile var� clear cancella tutte le variabili

Page 9: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Operazioni Fondamentali

Page 10: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Operazioni Matriciali

Operazioni di base su matici

Somma C = A+ B C (i , j) = A(i , j) + B(i , j)

Moltiplicazione A ∗ B C (i , j) =∑

k A(i , k) ∗ B(k , j)Divisione C = A/B C = A ∗ B−1

Elevamento a potenza C = A3 C = A ∗ A ∗ ALe operazioni sono de�nite solo se le matrici hannodimensioni compatibili

Page 11: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Operazioni Elemento per elemento

Operazioni di base sugli elementi

Somma C = A. ∗ B C (i , j) = A(i , j) ∗ B(i , j)Moltiplicazione A./B C (i , j) = A(i , j)/B(i , j)

Divisione C = A/B C = A ∗ B−1

Elevamento a potenza C = A3 C (i , j) = A(i , j)3

Anche in questo caso, le operazioni sono de�nite solo se lematrici hanno dimensioni compatibili

In particolare per ∗ e / A e B debbono avere le stessedimensioni

Page 12: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Manipolare Vettori e Matrici

De�nizioni di vettori

De�nizione vettori equispaziati

x = [ inizio : passo : �ne] de�nisce un vettore da inizio a�ne con elementi equispaziati da passo

oppure x = linspace(inizio,�ne,N) de�nisce N elementiequispaziati da inizio a �ne

� x = [10:1:30]

� x = linspace(10,30,20)

I vettori in Matlab partono dall'indice 1 (non zero come inJava)

Page 13: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Estrazioni di sottomatrici

Sottomatrici

Data una matrice A n ×m

A(i,j) estrae l'elemento in posizione i,j

A(:,j) estrae il vettore colonna [A1,j , · · · ,An,j ]

A(1:4,j) estrae il vettore colonna [A1,j , · · · ,A4,j ]

A(i,:) estrae il vettore riga [Ai ,1, · · · ,Ai ,m]

A(1:2,2:4) estrae la sottomatrice[A1,2,A1,3,A1,4;A2,2,A2,3,A2,4]

Page 14: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Matrici notevoli

Costruzione di matrici notevoli

A = eye(n) n = scalare; matrice identita' n*n

A = diag(v) v = vettore; matrice diagonale con diagonalepari al vettore v

A = zeros(n,m) vettore di zeri con n righe e m colonne

A = ones(n,m) vettore di elementi pari ad 1 con n righe em colonne

A = rand(n,m) vettore di elementi randomici (tra (0,1))con n righe e m colonne

Page 15: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Estrazione Massimo

Massimo di un vettore

max(z) con z vettore; restituisce il massimo in z

max(M) con M matrice n×m; restituisce un vettore 1×m

in cui ciascuna colonna e' il massimo elemento dellacolonna nella matrice M

Page 16: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Istruzioni di controllo

Page 17: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Istuzioni di controllo

Istruzioni di controllo per Matlab

Matlab mette a disposizione acluni cicli di controllo while,for e istruzioni condizionali if

For: sintassi

for i = inizio:passo:fine

sequenza istruzioni

end

Page 18: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Esempio for

Example (calcolo somma elementi in un vettore)

sum = 0

for i = 1:1:n

sum = sum + x(i)

Page 19: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Esempio while

Example (calcolo somma elementi in un vettore)

s = 0

i = 0

while i <= size(x,2)

i = i+1

s = s + x(i)

end

Page 20: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Istuzioni condizionali

Istruzioni if

Istruzione condizionali if

if (r >= 0)

radice = sqrt(r)

end

Page 21: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Esempio if

Example (get di un elemento controllato)

riga = i; col = j;

if (i <= 0 | i > size(x,1))

if (i<=0)

riga = 1

else

riga = size(x,1)

end

end

if (j <= 0 | j > size(x,1))

if (j<=0)

col = 1

else

col = size(x,1)

end

end

v = x(riga,col);

Page 22: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Script e Funzioni

Page 23: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Script e Funzioni

Script e Funzioni

Matlab permettere di de�nire �le di script e funzioni

File di script: sequenze di istruzioni raccolte in un �le

Il �le deve avere estensione .m

Per eseguire uno script basta scrivere da linea di comandoil nome del �le

Page 24: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Funzioni

Funzioni

Funzioni: sequenze di istruzioni salvate in un �le per cuipossiamo de�nire variabili di input e variabili di output

Rispetto agli script cambia l'intestazione del �le e lachiusura: return

function [y z] = f(x,k)

x,k parametriy,z valori di ritorno

Per eseguire una funzione la si deve invocare da linea dicomando con i parametri opportuni

Page 25: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Funzioni II

Funzioni II

Tutte le variabili dichiarate all'interno di una funzione sonolocali

Possiamo inserire dei commenti nelle funzioni utilizzando%

I commenti vengono visualizzati quando si usa l'help per lafunzione

Page 26: Conoscenza di base per Matlab - profs.sci.univr.itprofs.sci.univr.it/~farinelli/courses/algBio/slides/basiMatlab.pdf · Cicli Script e Funzioni. Conoscenza di base per Matlab Introduzione

Conoscenza

di base per

Matlab

Introduzione

Operazioni

Fondamen-

tali

Istruzioni di

controllo

Script e

Funzioni

Esercizi

Esercizi basi matlab

Implementare le funzioni

1 �iph.m Valido per il progetto2 �ipv.m Valido per il progetto3 select.m4 collate.m

come descritto nel commento dei rispettivi �le

veri�care il corretto funzionamento delle funzioni

1 utilizzare il comando x = rand(n,m) per creare matrici dinumeri randomici

2 utilizzare il comando x = imread('trees.tif') per utilizzareuna matrice che rappresenta i livelli di grigio dell'immaginetrees.tif. utilizzare imshow(x) per viasualizzare l'immaginerelativa alla matrice x Valido per il progetto