La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Laboratorio di Processi Stocastici Alberto Sorrentino www.fisica.unige.it/~sorrentino/Teaching.

Presentazioni simili


Presentazione sul tema: "Laboratorio di Processi Stocastici Alberto Sorrentino www.fisica.unige.it/~sorrentino/Teaching."— Transcript della presentazione:

1 Laboratorio di Processi Stocastici Alberto Sorrentino

2 IIGiovedì 3 Dicembre ore 11:15 aula PC2 (116/117) – 1° piano III SMID Venerdì 4 Dicembre ore 9:30 aula MAC (114/120) – 1° piano III MATE Giovedì 11 Dicembre ore 11:15 aula PC2 (116/117) – 1° piano A proposito di processi stocastici...

3 Obiettivi, metodi e piano di lavoro Obiettivi: applicare la teoria, imparare a smanettare, divertirsi (...) Metodi: No dimostrazioni Prima pensare poi fare; ma se proprio non capite niente, almeno fate qualcosa, che aiuta... Piano di lavoro: Ripasso di MATLAB Creazione di istogrammi Generazione di numeri casuali Analisi dati DNA Simulazione processo di Poisson Implementazione test statistici

4 Parte Zero Ripasso di MATLAB

5 MATLAB (Wikipedia) “MATLAB (abbreviazione di Matrix Laboratory) è un ambiente per il calcolo numerico e l'analisi statistica che comprende anche l'omonimo linguaggio di programmazione consente di manipolare matrici, visualizzare funzioni e dati, implementare algoritmi.” Cos’è? Perché? 1.Perché lo conosco 2.Perché ”è usato da milioni di persone nell'industria, nelle università e funziona su diversi sistemi operativi, tra cui Windows, Mac OS, GNU/Linux e Unix”.

6 Contenuto Cartella Lista comandi passati Finestra di comando principale MATLAB

7 MATLAB non richiede di dichiarare le variabili  2+2  a  a=1  a  b=1;  b Provare  MATLAB funziona come un calcolatrice  MATLAB non sa chi sia “a”  Per assegnare un valore ad “a” si usa “=“  Ora MATLAB sa chi è “a”  Se volete assegnare un valore senza visualizzare, usate “;”  Claro? Per Credere Come faccio a sapere cosa ho già dichiarato? Il WORKSPACE!! Cancellare una variabile “a” non più utile: clear a Svuotare il workspace (da fare spesso per evitare casini!!): clear all Variabili

8 Vettori Definizione “esplicita” Vettore rigavr = [ ] Vettore colonna vc = [1; 2; 3; 9; 8; 7] Definizione “implicita” Vettore rigaVR = 1:3:16 (primo_valore : incremento : estremo_superiore) Vettore colonna VC = (5:-2:-3)’ (primo_valore : incremento : estremo_superiore)’ L’apice indica la trasposizione Il k-esimo elemento del vettore “vr” si trova con vr(k) Per selezionare un sottoinsieme (sotto-vettore) di un vettore vr(indice_iniziale : indice_finale)

9 Matrici Definizione “esplicita” Come per i vettori si va a capo con “;”M = [1 2 3 ; 4 5 6] La i-esima riga della matrice è M( i, : ) La j-esima colonna della matrice è M( :, j ) Il “:” serve a selezionare un intervallo; se gli estremi non sono indicati, seleziona tutti i valori Comandi per matrici “predefinite” Z = zeros(5) matrice nulla (quadrata) U = ones(5)matrice di uno (quadrata) I = eye(5)matrice identica

10 Operazioni con vettori e matrici Le operazioni “naturali” di somma e sottrazione vengono eseguite con i simboli normali (+/-) Il prodotto standard tra vettori e matrici (o tra vettori e vettori, o tra matrici e matrici) è il prodotto riga per colonna Per moltiplicare ELEMENTO PER ELEMENTO si usa “.* “ Verificare la differenza tra U*I e U.*I

11 Cicli e condizioni Ciclo for for indice = primo_valore:incremento:ultimo_valore Istruzioni end If / else if condizione1 Istruzioni elseif condizione2 (opzionale) Istruzioni else (opzionale) Istruzioni end Ciclo while while condizione Istruzioni end

12 Condizioni RICORDARE SEMPRE: Il segno “=“ serve per ASSEGNARE un valore a una variabile. Per CONFRONTARE una variabile con un valore (o con un’altra variabile), si usa “==“. Esempi di condizioni valide: A>1 A==0.5 A==3 && (B==5 || B==7 ) Provare ad esempio A=1 If A==1 disp (‘A vale 1’) End

13 Script Uno script è un file di testo che MATLAB interpreta come una sequenza di comandi. File  New  M-File N = 10; for i = 1:N v(i) = i^2 end Salvare il file con script_prova.m Dalla command window, lanciare script_prova Esiste la variabile i ??? Functions Funzione: file di testo contenente un’intestazione File  New  M-File function v = funzione_prova(N) for i = 1:N v(i) = i^2 end Salvare il file con funzione_prova.m Dalla command window, lanciare funzione_prova(10) Esiste la variabile i ???

14 Visualizzazione - plot plot( x ) plot( y ) plot( x, y ) plot( x, y, ’ r ’ ) plot( x, y, ’. ’ ) Mette in ascissa l’indice della componente del vettore, in ordinata il valore della componente Mette in ascissa i valori del vettore “x”, in ordinata i valori del vettore “y”; “x” e “y” devono essere lunghi uguali!! Rosso tratteggiato Punti figureCrea una figura vuota hold on Per mettere più oggetti nella stessa figura Definiamo due vettorix = -10:10 y = x.^2

15 Visualizzazione – altri comandi D = load(‘dato_per_plot.dat’); size(D) figure bar(D) figure image(D) figure contour(D) figure quiver(D(:,1), D(:,2), D(:,3), D(:,4))

16 Panico... Non ricordate l’utilizzo di un comando? help comando Non sapete come fare qualcosa? Volete saperne di più? helpwin

17 Primo 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)), ’. ’)

18 Algoritmo istogramma Scelta degli estremi e della larghezza intervallo INFSUPDELTA Contiamo quanti elementi del vettore cadono in ogni intervallo: creiamo un vettore il cui valore i-esimo rappresenti il numero di conteggi nell’i-esimo intervallo

19 Algoritmo istogramma (semplice) 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 INFSUPDELTA Il j-esimo intervallo ha come estremi INF+(j-1)*DELTA e INF+j*DELTA Non esistono domande stupide. Esistono solo risposte stupide.

20 Algoritmo istogramma (semplice) INF = -4; SUP = 4; DELTA = 0.4; NUM_INT = (SUP-INF)/DELTA; % numero di intervalli contatore = zeros(1,NUM_INT) % inizializziamo il contatore; for i = 1:size(data,2) % per ogni dato for j = 1: NUM_INT % per ogni intervallo if data(i)>INF+(j-1)*DELTA && data(i)

21 Algoritmo istogramma (efficiente) L’algoritmo appena scritto fa un ciclo di troppo... INFSUP 1 2k Osserviamo che il singolo valore data(i) INF < data(i) < SUP 0 < data(i)-INF < SUP-INF=DELTA*NUM_INT 0 < (data(i)-INF)/DELTA < NUM_INT Non esistono domande stupide. Esistono solo risposte stupide.

22 Algoritmo istogramma (efficiente) INF = -4; SUP = 4; DELTA = 0.4; NUM_INT = (SUP-INF)/DELTA; % numero di intervalli contatore = zeros(1,NUM_INT) % inizializziamo il contatore; for i = 1:size(data,2) % per ogni dato j = ceil((data(i)-INF)/DELTA); contatore(j) = contatore(j) + 1; end VALORI = INF+DELTA/2 : DELTA : SUP-DELTA/2 figure bar(VALORI, contatore)


Scaricare ppt "Laboratorio di Processi Stocastici Alberto Sorrentino www.fisica.unige.it/~sorrentino/Teaching."

Presentazioni simili


Annunci Google