16
Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie dell’Informazione via Bramante 65, 26013 Crema (CR), Italy [email protected]

Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Embed Size (px)

Citation preview

Page 1: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Introduzione a Matlab

Ruggero Donida Labati

Dipartimento di Tecnologie dell’Informazionevia Bramante 65, 26013 Crema (CR), Italy

[email protected]

Page 2: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Perché?

2

MATLAB® is a high-level technical computing language and interactiveenvironment for algorithm development, data visualization, dataanalysis, and numeric computation. Using the MATLAB product, you cansolve technical computing problems faster than with traditionalprogramming languages, such as C, C++, and Fortran.

You can use MATLAB in a wide range of applications, including signal andimage processing, communications, control design, test andmeasurement, financial modeling and analysis, and computationalbiology. Add-on toolboxes (collections of special-purpose MATLABfunctions, available separately) extend the MATLAB environment tosolve particular classes of problems in these application areas.

http://www.mathworks.com© Ruggero Donida Labati 2010

Page 3: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Matlab desktop

3© Ruggero Donida Labati 2010

Page 4: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Help

4

Fondamentale per apprendimento, descrizione delle funzioni, esempi…!

© Ruggero Donida Labati 2010

Page 5: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Vettori & matrici

5

Instanziare vettori:a = [];a = [1, 2, 3];a = [1; 2; 3];a = 1:3;a = zeros(1,3);a = zeros(3,1);a = ones(1,3);a = ones(3,1);a = ones(1,3) * 10;a = ones(3,1) * 10;a = b; (b vettore)

© Ruggero Donida Labati 2010

Page 6: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Vettori & matrici

6

Accedere ad elementi di vettori:b = a(1);b = a([2,4,9]); vettore di indicib = a(3:5);a(1) = 3;a([2,4,9]) = [1,2,3];a(3:5) = [1,2,3];

Numero di elementi di un vettore:numberOfElements = length(array);

© Ruggero Donida Labati 2010

Page 7: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Vettori & matrici

7

Matrici bidimensionali:i vettori sono matrici bidimensionali con una dimensione pari ad 1(valgono le regole descritte in precedenza).

EsempiA = [1, 2, 3; 4, 5, 6];A = zeros(3); 3X3 elementiA = zeros(3,5);B = A(2,[4,9]);B = A([2,4,9]); posso usare un solo indiceB = A(:, 3:5);

Numero di elementi di un vettore:numberOfElements = size(A); ritorna [dim1, dim2]numberOfElements = size(A, NumeroDimensione);

© Ruggero Donida Labati 2010

Page 8: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Vettori & matrici

8

Matrici Ndimensionali:l’accesso agli elementi è identico ai casi precedenti;più complesse da istanziare.

EsempiA = [];B1 = zeros(5,2);B2= zeros(5,2);A(:,:,1) = B1;A(:,:,2) = B2;c = A(1,2,1);c = A(1,2,:);D = A(:,2,:);

© Ruggero Donida Labati 2010

Page 9: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Operatori fondamentali

9

Operatori aritmetici:+ addizione- sottrazione* moltiplicazione .* elemento per elemento/ divisione a destra ./ elemento per elemento^ elevamento a potenza .^ singoli elementi\ divisione a sinistra

Operatori logici:& and | or~ not

Operatori relazionali:~ = diverso <= minore uguale< minore >=maggiore uguale> maggiore ==uguale logico

© Ruggero Donida Labati 2010

Page 10: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Operatori condizionali

10

if a==b…

else…

end

switch acase {'linear','bilinear'}

….case 'cubic'

…otherwise

…end

while a==b…

end

for i = 1 : N…

end

for i = 1 : 3 : N…

end

© Ruggero Donida Labati 2010

Page 11: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

File e dati

11© Ruggero Donida Labati 2010

Formato file:.m = sorgenti;.mat = dati;

Salvare e caricare dati in formato Matlabsave(nomeFile, ‘var1’, ‘var2’);load(nomeFile);

Salvare e caricare dati con formattazione desideratafopen, fscanf, fprintf, etc.

Page 12: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Altre nozioni importanti

12© Ruggero Donida Labati 2010

Script o funzioni?function [s, m] = sommaMoltiplica(v1, v2);[s, m] = sommaMoltiplica(2, 3);

Comandi utiliclose all chiude tutte le finestre plotclear all elimina i dati dallo workspaceclc pulisce consolle

Page 13: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Visualizzazione risultati

13© Ruggero Donida Labati 2010

Testualefprintf()

Grafica 1dplot() plotyy() bar() …

Grafica 2dimshow() image() imagesc() …

Grafica 3dplot3() surf() mesh() …

Page 14: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Istruzioni per gestire i plot

14© Ruggero Donida Labati 2010

Usare HELP

Comandi utilifigure crea una figura vuotasubplot(2) inserisce 2 grafici nella stessa figurasubplot(2,3) inserisce 2X3 grafici nella stessa figurahold on abilita la sovrascrittura di un graficohold off disabilita la sovrascrittura di un grafico

N.B. se esiste una figura con un grafico e richiamiamo plot() senza istanziare una nuova figura, il nuovo grafico sostituirà quello della figura aperta.

Page 15: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Esercizi

15

Creare a vector composed by theese elements•2, 4, 6, 8•1, 1/2, 1/3, 1/4, 1/5

Given the array A = [ 2 4 1 ; 6 7 2 ; 3 5 9], provide the commands needed to•assign the first row of A to a vector called x1•assign the last 2 rows of A to an array called y•compute the sum over the columns of A

Given the vector x = [1 8 3 9 0 1], create a short set of commands that will •add up the values of the elements (Check with sum.)•computes the running sum (for element j, the running sum is the sum of the elements from 1 to j, inclusive. Check with cumsum.)• computes the sine of the given x-values (should be a vector)

http://www.facstaff.bucknell.edu/maneval/help211/exercises.html

© Ruggero Donida Labati 2010

Page 16: Introduzione a Matlab - homes.di.unimi.ithomes.di.unimi.it/piuri/pages/didattica/SI/mat/Introduzione a... · Introduzione a Matlab Ruggero Donida Labati Dipartimento di Tecnologie

Esercizi

16© Ruggero Donida Labati 2010

Dato x=1:30, plottare le funzioni seno di x e coseno di x•in due finestre differenti•in due metà della medesima finestra•nella stessa finestra con colori e tratti differenti e visualizzando una legenda

Tutti i grafici ottenuti devono avere titolo e nomi degli assi cartesiani