20
Esercitazione 1 - Introduzione Matlab

Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Embed Size (px)

Citation preview

Page 1: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Esercitazione 1 - Introduzione

Matlab

Page 2: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

MatlabMATrix LABoratory

Command window

Current Directory

Comandi recenti

Variabili correnti

Contenuto cartella corrente

editor

Page 3: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Matrici

MATLAB tratta tutte le variabili come matrici I vettori sono forme speciali di matrici con una sola riga o

colonna Gli scalari sono trattati come vettori con una sola riga e

una sola colonna

v_riga = [1 2 3];

v_colonna = [1; 2; 3];

matrice = [1 2 3; 4 5 6; 7 8 9];

1 2 3

123

1 2 34 5 67 8 9

Page 4: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Istruzioni frequenti

clear all

clc

close all

% commento

%% per un codice più ordinato...

helphelp

;

F9CTRL invio

;

F9CTRL invio

Page 5: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Help

Contents getting started

Matrices and arrays Expressions Working with matrices

• Generating matrices More about

• Linear algebra•Arrays

Graphics (per approfondire sui grafici)• Using basic plotting functions

Printable documentation

Page 6: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Operatori

Addizione (+) a + bSottrazione (-) a - bAssegnamento (=) a = b

Potenze (^ o .^) a^b o a.^bMoltiplicazione (* o .*) a*b o a.*bDivisione (/ o ./) a/b o a./b

1 2 31 0 12 4 3

A =

1 2 22 3 10 1 2

B =

5 11 101 3 48 17 15

A * B =

1 4 62 0 10 3 8

A .* B =

Trasposizione (‘) a’

Page 7: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Estrazione di sotto-matrici

1 2 31 0 12 4 3

A =

A (:,:) =

1 2 31 0 12 4 3

A (: ,1) = 112

A (1 ,:) = 1 2 3

A (3,2) = 4 A (6) = 4

A(1)A(1,1)

A(4)A(1,2)

A(7)A(1,3)

A(2)A(2,1)

A(5)A(2,2)

A(8)A(2,3)

A(3)A(3,1)

A(6)A(3,2)

A(9)A(3,3)

A(1)A(1,1)

A(2)A(1,2)

A(3)A(1,3)

A(4)A(1,4) A (1 ,3) A (3)

Page 8: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Operazioni su scalari

x = 25 r = sqrt(x); r = 5

y = - 2.6 sign(y)

floor(y)

abs(y)-1

-3

round(y) -3

ceil(y) -2

2.6

floor(abs(y)) 2

x = 10,9845739;dec=2;n=((1/10^dec)*sign(x))*floor(abs(x*(10^dec))

Esempio1 : troncare un numero decimale a Esempio1 : troncare un numero decimale a dec dec cifre dopo la virgola:cifre dopo la virgola:

Page 9: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Operazioni su vettori e matrici

size (A)

length (A) 1 2 31 0 12 4 3

A =

3x3

9

min (A)

max (A)

1 0 1

2 4 3max (A(:)) 4

mean(A(:)), std(A(:)), var(A(:)), …

sum(A(:)), abs(A(:))

sum (A) [4 6 7]

sum (A(:)) 17

v = 1 3 2

mean(v) 2 std(v) 1

size (v) [1 3] length (v) 3

min (v) 1 max (v) 3

sort (v) [1 2 3] sum (v) 6

Page 10: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Matrici “notevoli”

zeros (3) 0 0 00 0 00 0 0

ones (1,3)

rand (1,3) 0.8147 0.9134 0.2785distribuzione uniforme [0 1]

randn(1,3) distribuzione gaussiana a media nulla

[1 1 1]

linspace(a, b, n) a bn

Esempio 2a: costruire una matrice con diverse distribuzioni sulle righe:Esempio 2a: costruire una matrice con diverse distribuzioni sulle righe:

X=zeros(3,100) %inizializzazioneX(1, :) = rand(1,100);X(2, :) = rand(1, 100);X(3, :) = randn(1, 100)

n=100;X=zeros(3,n) %inizializzazioneX(1, :) = rand(1, n);X(2, :) = rand(1, n);X(3, :) = randn(1, n)

Page 11: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Distribuzione uniforme

a b

m

12

2ab

bam

312 mrand

aabrand )(

m=1;sigma=10;M=10000X=rand(1,M)*(sigma*sqrt(12))+m-sigma*sqrt(3)

Esempio 3:Esempio 3:

0 1

rand

Page 12: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Esempio 2b

m=[1 0 2];sigma=[10 10 1];M=100000X(1,:)=rand(1,M)*(sigma(1)*sqrt(12))+m(1)-sigma(1)*sqrt(3)X(2,:)=rand(1,M)*(sigma(2)*sqrt(12))+m(2)-sigma(2)*sqrt(3)X(3,:)=rand(1,M)*(sigma(3)*sqrt(12))+m(3)-sigma(3)*sqrt(3)

Costruire una matrice con distribuzioni uniformi con diverse Costruire una matrice con distribuzioni uniformi con diverse medie e varianze:medie e varianze:

• riga 1: media = 1, varianza = 10;• riga 2: media = 0, varianza = 10;• riga 3: media = 2, varianza = 1;

Page 13: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Istruzione for

for x = 1: p : M % comandiend

x=[1 1];for i = 3:10 x(i)= sum(x);end

1 1 2 4 8 16 32 641 1 2 4 8 16 32 64

Page 14: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Esempio 2c

Ottimizzare il codice dell’Esercizio 2b utilizzando un ciclo for:Ottimizzare il codice dell’Esercizio 2b utilizzando un ciclo for:

m=[100 0 2];sigma=[10 10 1];M=100000;for i = 1 : length(m) X(i,:)=rand(1,M)*(sigma(i)*sqrt(12))+m(i)-sigma(i)*sqrt(3);end

m=[100 0 2];sigma=[10 10 1];M=100000;X(1,:)=rand(1,M)*(sigma(1)*sqrt(12))+m(1)-sigma(1)*sqrt(3);X(2,:)=rand(1,M)*(sigma(2)*sqrt(12))+m(2)-sigma(2)*sqrt(3);X(3,:)=rand(1,M)*(sigma(3)*sqrt(12))+m(3)-sigma(3)*sqrt(3);

Page 15: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Distribuzione gaussiana

0

mrandn m=40;sigma=10;M=10000;X=randn(1,M)*sigma+m;

Esempio:Esempio:

m

Page 16: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Plot

close allclose all figure();figure();

subplot(1,3,1);plot(y);subplot(1,3,2);plot(y, ’.’);subplot(1,3,3); stairs(y)

x=1:0.1:20;y=sin(x);plot(x,y);

x=rand(1,100)plot(x, ’.’);

y=sort(x);figure(); plot(y);figure(); plot(y, ’.’);figure(); plot(y);hold onplot(y, ’.’)

Page 17: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

subplot

1

665544

3322 subplot(2,3,1);plot(a)subplot(2,3,2);plot(b)...subplot(2,3,6);plot(f)

1 2 subplot(1, 2, 1); plot(a);subplot(1, 2, 2); plot(b);

Page 18: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

hist

hist(a,100)

a=rand(1,100000);

hist(a) hist(b,100)

b=rand(1,10000);

hist(b)

hist(a,100)

a=randn(1,100000);

hist(a)

Page 19: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Esempio 2d

m=[100 0 2];sigma=[10 10 1];M=100000;for i = 1 : length(m) X(i,:)=rand(1,M)*(sigma(i)*sqrt(12))+m(i)-sigma(i)*sqrt(3);end

Visualizzare gli istogrammi delle righe della matrice dell’esempio Visualizzare gli istogrammi delle righe della matrice dell’esempio 2c:2c:

figure(); hist(X(1,:));figure(); hist(X(2,:));figure(); hist(X(3,:));

figure();subplot(1,3,1); hist(X(1,:)); subplot(1,3,2); hist(X(2,:)); subplot(1,3,3);hist(X(3,:));

Page 20: Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente

Esempio 2e

Ottimizzare il codice dell’Esercizio 2d utilizzando un ciclo for:Ottimizzare il codice dell’Esercizio 2d utilizzando un ciclo for:

m=[100 0 2];sigma=[10 10 1];M=100000;figure();for i = 1 : length(m) X(i,:)=rand(1,M)*(sigma(i)*sqrt(12))+m(i)-sigma(i)*sqrt(3); subplot(1,3,i); hist(X(i,:)); end

m=[100 0 2];sigma=[10 10 1];M=100000;for i = 1 : length(m) X(i,:)=rand(1,M)*(sigma(i)*sqrt(12))+m(i)-sigma(i)*sqrt(3);endfigure();subplot(1,3,1); hist(X(1,:)); subplot(1,3,2); hist(X(2,:)); subplot(1,3,3);hist(X(3,:));