Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoBaldo Marinelli Modificato 9 anni fa
1
Laboratorio di Processi Stocastici Alberto Sorrentino www.fisica.unige.it/~sorrentino/Teaching
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 = [1 2 3 9 8 7] 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)) www.fisica.unige.it/~sorrentino/Teaching
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)), ’. ’) www.fisica.unige.it/~sorrentino/Teaching
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)<INF+j*DELTA contatore(j) = contatore(j)+1; end VALORI = INF+DELTA/2 : DELTA : SUP-DELTA/2 figure bar(VALORI, contatore)
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)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.