Laboratorio
Processi Stocastici
Annalisa Pascarella
Informazioni

e-mail:





[email protected]
[email protected]
Giovedì 9 Dicembre 11-13 aula Mac
Lunedì 14 Dicembre 11-14 aula pc1
Martedì 15 Dicembre 11-14 aula Mac
Programma

MATLAB


Generazione di numeri casuali



esercizi vari durante il laboratorio
metodo Monte Carlo,
algoritmi per la generazione di numeri pseudo-casuali
Simulazione processo di Poisson
MATLAB
MATLAB


MATrix LABoratory
Linguaggio di programmazione interpretato


legge un comando per volta eseguendolo immediatamente
Per avviarlo ->
icona sul desktop
workspace
command
window
MATLAB come calcolatrice
4+7
invio
è possibile definire
variabili e operare su esse
x = 9 -> invio
Operatori aritmetici:
Caratteri speciali: ; % :
help mean
+-*/^
Variabili predefinite: i, pi, NaN, Inf
Funzioni elementari: sin, cos, log, exp
Comandi utili

clear a


clear all


ultima variabile memorizzata
clc


per cancellare tutte le variabili dal workspace
ans


per cancellare una variabile dal workspace
pulisce lo schermo
help <nome_funzione>
Lavorare con MATLAB

In MATLAB tutte le variabili sono trattate come matrici




scalari
vettori riga
v = (v1,…, vn)
vettori colonna
v = (v1,…, vn)T
matrici
 a11  a1n 


A


 a a 
 m1
mn 
->
->
matrici 1 x 1
matrici 1 x n
->
matrici n x 1
->
matrici m x n
Vettori
a = [1 2 3 4 5]
a = [1, 2, 3, 4, 5]

Per definire un vettore riga

Per definire un vettore colonna a = [1; 2; 3; 4; 5]
a = [1 2 3 4 5] ’

Usando :
a = 1:3:10
b = -5:5
Matrici

Per definire una matrice
size(A)


->
3 0
  R 22
A  
1 2 
dimensioni della matrice
per memorizzare le dimensioni
 3 0 3
  R 23
B  
1 2 0 
B(2,3)
B(2,3) = 1;
B
•
•
•
A = [3 0; 1 2]
A = [3 0
1 2]
per selezionare un elemento
per modificare l’elemento
per visualizzare B
-> [r c] = size(A)
b1 = [3;1]
b2 = [0; 2]
b3 = [3; 0]
B = [b1, b2, b3]
Il comando :

Importante per la manipolazione delle matrici

generazione di vettori che siano delle progressione aritmetiche di passo
costante





a = [1:10]
b = 1: .2 : 4
c = 3:0 ->
c = 3: -1: 1
o
a = 1:10
non produce niente!!!!
mediante : si possono estrarre righe e colonne
 3 0 3
  R 23
B  
1 2 0 
estrarre la riga R2
B(2,:)
estrarre la colonna C2
B(:,2)
Identità-zero-uno
identità di ordine n
matrice nulla m x n
matrice m x n di 1
->
eye(n)
eye(3)
1 0 0 


I  0 1 0
 0 0 1


->
zeros(m,n)
zeros(2,3)
0 0 0

Z  
0 0 0
->
ones(m,n)
ones(2,3)
1 1 1

Z  
1 1 1
Operazioni
Somma / Differenza
A+B, A-B
Trasposta
A’
Prodotto
A*B
Prodotto per uno scalare
A*k
Elemento per elemento
A.*B
size(A)= size(B)
#CA = #RB
size(A) = size(B)
Script e funzioni

Script



parametri in ingresso non modificabili
le variabili usate sono messe nella memoria di lavoro di MATLAB
Funzioni


script al quale si possono passare parametri in ingresso ed ottenerne in uscita
sintassi



y1,…,yn -> parametri in uscita
x1,…,xn –> parametri in entrata
le variabili usate all’interno sono locali
function [y1,…,yn] = nome_funzione(x1,…,xn)
Script

E’ possibile scrivere degli script in Matlab


cliccando su new
File -> New -> M-file
Le funzioni

L’m file va salvato col nome nome_funzione.m


La funzione può essere richiamata




il nome del file deve essere identico a quello della funzione
dalla finestra di comando
all’interno di uno script
da altre funzioni
digitando [y1,…,yn]=nome_funzione(x1,…,xn)
Per poter richiamare la funzione dobbiamo essere nella directory
nella quale è salvata la funzione oppure “settare” nel path di Matlab
la directory nella quale la funzione è salvata.
Cicli



Ciclo incondizionato
for i = n1:passo:n2
blocco di istruzioni
end
Ciclo condizionato
while condizione
blocco di istruzioni
end
Test condizionale
if condizione1
blocco di istruzioni
elseif condizione2
blocco di istruzioni
else
blocco di istruzioni
end
Operatori

Operatori relazionali:


< , <= , > , >= , == , = , =
si usano per confrontare tra di loro gli elementi di 2 matrici; il risultato
dell’operazione sarà



Operatori logici:



0 se la relazione è falsa
1 se la relazione è vera
&,|,
si usano per combinare tra loro gli operatori relazionali
Nota


= serve per assegnare valore ad una variabile
== per verificare se una variabile assume un determinato valore
Input\output


input
sprintf
n = input(‘inserisci un intero ’);
disp(sprintf(‘n = %d’,n))
disp(‘stringa di caratteri’)
Grafica

In MATLAB è possibile



disegnare funzioni in 2D e 3D
rappresentare graficamente dei dati
Il comando
plot(x,y)
si usa:



per rappresentare punti nel piano
per disegnare il grafico di una funzione
x e y devono essere vettori di ugual misura
Esempio - I

Per rappresentare dei punti nel piano
x = [1 2 3 7 -9 2];
y = [-2 -6 1 5 7 2];
plot(x,y)
figure(2)
plot(x,y,'*')
Esempio - II

Per “plottare” la funzione y=sin(x)
x = [-pi:.01:pi];
y = sin(x);
plot(x,y)
definiamo l’intervallo in
cui vogliamo disegnare la
funzione
definiamo la funzione
disegniamo la funzione
figure(2)
plot(x,y, '-g')
è possibile inserire un
terzo parametro di input
Sintassi del comando “plot”

plot(x, y)

x e y sono i vettori dei dati (ascisse e ordinate dei punti)
 plot(x, y, 'opzioni')

x e y come sopra; opzioni è una stringa opzionale che definisce il tipo di
colore, di simbolo e di linea usato nel grafico.


help plot per vedere quali sono le varie opzioni
plot(y)

realizza il grafico del vettore y rispetto ai propri indici
Comandi utili - I



figure(num)
per creare (richiamare) una finestra grafica
hold on
per avere più grafici nella stessa finestra
hold off per disattivare la funzione

axis([xmin xmax ymin ymax])
per riscalare il grafico

sublot(righe, colonne, sottofinestra)
per creare diversi grafici separati

in una stessa finestra
esistono diversi comandi per “abbellire” i grafici

title, xlabel, ylabel, legend
Risultati
usando hold on
figure(1); hold on; grid on
y2 = cos(x);
plot(x,y2,’r’)
title(‘seno e coseno’)
% creiamo delle sottofinestre
figure(3); subplot(1,2,1); plot(x,y); title('seno')
subplot(1,2,2); plot(x,y2); title('coseno')
usando subplot
Esercizio
Creare l’istogramma di un vettore
Caricare il vettore dei dati nella variabile
“data”:
data = load(‘dato_per_istogramma.dat’);
size(data)
Osserviamo i dati
plot(data)
plot(data, ones(size(data)) , ’ . ’)
Algoritmo istogramma
Scelta degli estremi e della larghezza intervallo
INF
DELTA
Contiamo quanti elementi del vettore cadono in
ogni intervallo: creiamo un vettore il cui valore
i-esimo rappresenti il numero di conteggi nell’iesimo intervallo
SUP
Algoritmo istogramma
Per ogni elemento del vettore data(i)
Per ogni intervallo
Se data(i) è compreso nei valori dell’intervallo
Incrementare il contatore relativo a quell’intervallo
INF
DELTA
SUP
Il j-esimo intervallo ha come estremi INF+(j-1)*DELTA e INF+j*DELTA