corso di matlab alberto jurij plazzi email: [email protected] realizzato da alberto jurij plazzi...

31
Corso di MATLAB Corso di MATLAB Realizzato da Alberto Jurij Plazzi Alberto Jurij Plazzi email: [email protected] email: [email protected]

Upload: emiliana-turco

Post on 01-May-2015

225 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Corso di MATLABCorso di MATLAB

Realizzato da Alberto Jurij Alberto Jurij PlazziPlazzi

email: [email protected]: [email protected]

Page 2: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Programma del corsoProgramma del corso

I. Introduzione alla programmazioneII. Struttura di MATLABIII. Algebra matriciale e linguaggio

matriciale in MATLAB IV. Funzioni matematico - statisticheV. Importazione ed esportazione di

dati

Page 3: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Programma del corsoProgramma del corso

VI. M- files: creazione delle funzioniVII. Loop VIII. Espressioni if e relazioni logicheIX. Grafici e funzioni plotX. Funzioni di ottimizzazione di

MATLAB

Page 4: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

I. Introduzione alla programmazione

Page 5: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Ambito di applicazione

Nell’analisi dei fenomeni economici e finanziari è indispensabile conoscere e saper programmare software econometrico – statistici, che siano in grado di risolvere problematiche di carattere matematico e statistico più o meno complesse, altrimenti impossibili da trattare per la loro difficoltà computazionale.

Page 6: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

La programmazione

ProgrammareProgrammare significa scrivere in un particolare linguaggio un testo in grado di essere “letto” dal software, che contenga delle istruzioni che il software dovrà eseguire al fine di produrre un risultato numerico.

Per questo motivo la fase di programmazione potrebbe in linea di principio essere eseguita su un qualsiasi editor di testo (es. Word, txt,..), per poi essere letta con il programma prescelto.

Page 7: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Principali software econometrico - statistici

Eviews Gauss MATLAB Matematica Stata MAPLE C++ …..

Page 8: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Importanza dell’algebra matriciale

I fenomeni finanziari ed economici vengono analizzati soprattutto mediante lo studio di datidati , che possono riguardare: una stessa variabile osservata in momenti

diversi => campione in time seriestime series (serie storica); es. la serie storica giornaliera dei prezzi del petrolio

diverse variabili osservate in uno stesso momento => campione in cross sectioncross section; es. il valore di più indici azionari osservati in un momento.

Page 9: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Importanza dell’algebra matriciale

Indipendentemente dal tipo di dati con cui stiamo lavorando, questi sono raccolti in matricimatrici, sulle quali noi lavoriamo per esaminare il fenomeno in oggetto

Per questo motivo è indispensabile conoscere sia l’algebra matriciale sia il linguaggio matriciale che è alla base dei principali software di programmazione.

Page 10: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Concentriamo l’attenzione su Gauss e MATLAB

Gauss: interfaccia molto semplice, grande facilità di programmazione e ottime capacità computazionali; limiti nell’assenza di debug e nella interazione con Windows.

MATLAB: interfaccia più vicina a Windows, capacità di lavorare congiuntamente con Excel, grande facilità di programmazione e buone capacità computazionali

trade off tra duttilità del software e precisione computazionale

Page 11: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

II. Struttura di MATLAB

Page 12: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Struttura di MATLAB

Matlab può venir utilizzato per:

Applicazioni matematiche e calcoli numerici Procedure Simulazioni Analisi di dati Grafici …..

Page 13: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Struttura di MATLAB All’apertura di MATLAB ci troviamo sulla finestra del

commandcommand: questo significa che sulla riga in cui lampeggia l’indicatore di testo possiamo digitare le operazioni, che verranno immediatamente recepite dal programma ed eseguite premendo INVIO.

Quanto scritto nel command durante tutta la sessione di lavoro può essere ripreso durante la stessa ponendosi su una linea e premendo la freccia in altofreccia in alto; premendo tale tasto in continuazione viene visualizzato quanto digitato precedentemente.

Quando la finestra di command su cui sono state eseguite le operazioni risulta troppo piena e si vuole cancellarla, si digita clc clc e si preme invio. La cancellazione non preclude l’utilizzo della funzione precedente (freccia in su).

Page 14: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Struttura di MATLAB Le operazioni immesse nel command vengono

immediatamente eseguite da MATLAB, che fornisce il risultato premendo il tasto INVIO al termine della operazione da eseguire: es. >> 7/5 (INVIO)ans=

1.400000Oppure, nella stragrande maggioranza dei casi, abbiamo bisogno di definire delle variabilidefinire delle variabili che rimarranno in memoria in MATLAB per tutta la sessione di lavoro poiché vengono da questo immagazzinate in una memoria temporanea: es.>> A=7.5Da questo momento in poi ad A sarà associato il valore 7.5. Quindi se digitiamo >> A*2ans=

15

Page 15: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Struttura di MATLAB

Qualora digitassimo:>> A=6 ans=

6.000000d’ora in poi ad A sarà associato il valore 6 e verrà riscritto sul valore precedente.

ATTENZIONE:1. MATLAB distingue tra lettere maiuscole e lettere

minuscole, per cui se avessimo per sbaglio digitato prima>> a*2??? Undefined function or variable ‘a’

2. Non si può nominare una variabile come pi, cui è associato il numero 3.1416

Page 16: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Struttura di MATLAB

Qualora nel command si voglia effettuare una operazione senza che MATLAB ne stampi a video il risultato bisogna porre alla fine della riga un punto e virgola “;;”. Ovviamente questo ha senso solo se sto lavorando con variabili definite, altrimenti rende inutile l’operazione. Es. se digito:>> 1+2;>>MATLAB ha calcolato 1+2 ma siccome non è coinvolta nessuna variabile non abbiamo visto il risultato dell’operazione e non è successo nulla, non possiamo usare il risultato in quanto ad esso non è associata alcuna variabile utilizzabile nelle righe successive. Se invece digito:>>r=3+4;>>r*2ans=

14

e qui ho utilizzato (ma non stampato a video) il risultato di 3+4.

Page 17: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Struttura di MATLAB Qualora il testo da inserire risultasse troppo lungo per

essere visualizzato su una riga, è possibile scrivere un testo su più righe utilizzando uno spazio e i tre punti “…” sulla riga su cui poi si va a capo. Quindi scrivere:>> r=3+4/2-7+9r= 7è lo stesso di scrivere>> r=3+4/2 …-7+9r= 7

Volendo che MATLAB stampi a video una stringa di lettere (delle parole) e non numeri, ad es. la parola “ciao”, basta racchiudere la stessa tra apostrofiapostrofi ‘‘. Es:>> ‘ciao’ans=

ciao

Page 18: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Struttura di MATLAB

Volendo introdurre un testo che non sia invece considerato dal programma lo si deve racchiudere tra %. Es.>> 4+2 %ciao%ans=

6e il programma lo ignora. (Questa funzione risulterà molto utile nell’edit.)

Page 19: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Command & Edit

Quando scriviamo operazioni sul command abbiamo tuttavia diversi inconvenienti: principalmente la difficoltà di gestire una serie piuttosto lunga di operazioni da far eseguire al computer in successione logica. La sconvenienza del command deriva dal fatto che essendo le operazioni eseguite subito, possono comparire messaggi di errore, etc. Inoltre, il testo della finestra del command non può essere salvato in un file a parte, se non selezionando il testo, facendo copia e incolla su un edit tipo Word, ma vengono compresi anche i messaggi di errore o i risultati.

È opportuno invece che il testo contenente le operazioni da far eseguire in successione sia scritto in una finestra di edit di testo, e dopo tale file venga letto dal command, che fornisca il risultato delle operazioni contenute nel file di testo, che contiene tutte e sole le operazioni.

Page 20: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Edit

L’opportunità di lavorare sull’edit risiede nella possibilità di salvare quanto scritto su un file di estensione “.m.m”, che poi in qualsiasi altro momento può essere recuperato e modificato. Tali files vengono pertanto definiti M-files.

Quindi:

Per codici che coinvolgono un breve numero di operazioni si può agire direttamente sul commandcommand;

Per codici che vogliono essere salvati per poi essere riutilizzati o per codici che consistono in parecchie operazioni dobbiamo lavorare sull’editedit

Page 21: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Edit

Per quanto detto, 3 sono le operazioni possibili all’apertura di MATLAB:

Lavorare direttamente sulla finestra aperta (il command);

Aprire un nuovo file di edit digitando

File > New > M-file

che apre una nuova finestra di edit su cui possiamo lavorare

Aprire un file di edit precedentemente creato digitando

File > Open > …

che va nella cartella workwork, la cartella destinata ad accogliere tutti i personali m-files.

Page 22: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Edit

Una volta aperto il file di edit, possiamo su di esso digitare tutte le operazioni che vedremo in seguito (manipolazione di matrici, loop,…).

Se vogliamo vedere il risultato delle operazioni, dobbiamo far “correre”, girare il programma premendo nell’edit, dopo aver salvato il file:

Debug (o Tools) > Run

o più semplicemente premendo il tasto F5. In questo modo otterremo nel command i risultati delle operazioni della finestra di edit, che non verrà così “toccata” dai risultati.

Possiamo durante la sessione passare sempre da edit a command e viceversa: sull’edit abbiamo il testo delle operazioni, sul command il risultato.

Page 23: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Edit

Una volta scritto nell’edit un codice completo e volendo salvarlo per averlo a disposizione in futuro, possiamo digitare nell’edit:

File > Save as…

che va a salvare il file con estensione .m nella cartella work, dove sarà possibile riaprirlo in futuro digitando come detto File > Open >…

Page 24: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Edit

Il percorso o path nel quale MATLAB legge e salva i files può essere visto digitando nel command il comando path.

Tale percorso può essere modificato inserendo o eliminando le cartelle nelle quali MATLAB cerca le funzioni e i files digitando

File > Set Path…

Page 25: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Cosa sono le librerie o toolbox

MATLAB consiste di una serie di funzioni di base, es. creazione di matrici, funzioni matematiche, … attraverso le quali è possibile svolgere un’infinità di funzioni.

Tuttavia sono state create delle librerie apposite, ovvero delle raccolte di funzioni, specifiche per argomento. Es. librerie di ottimizzazione, finanza, simulazione, derivati …. Si tratta quindi di raccolte di funzioni che l’utilizzatore ha a disposizione immediatamente, essendo già state create.

Le librerie sono immediatamente utilizzabili nell’edit e nel command, e inoltre andando nella directory di MATLAB possiamo aprire i singoli file delle librerie e osservare i codici associati ad ogni funzione.

Page 26: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Aiuti nella programmazione

Il tasto help è il principale aiuto nell’utilizzo di MATLAB. Digitando nel command

helphelp

si apre un elenco che costituisce l’insieme di librerie presenti in Matlab. Digitando help seguito dal nome della libreria scelta otteniamo la serie di funzioni associate alla libreria, con una indicazione della loro utilità. Ad es. se digitiamo help vediamo che la libreria “matlab\elmatmatlab\elmat” si occupa di matrici, e digitando help matlab\elmat abbiamo un’indicazione di tutte le funzioni presenti in questa libreria.

Page 27: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Aiuti nella programmazione Digitando poi help seguito dal nome della funzione

otteniamo una descrizione dell’utilizzo della funzione stessa.

es. help mean

ci dice come funziona questa funzione che calcola la somma facendoci anche un esempio. Inoltre se andiamo a recuperare ed aprire il file “mean.m” (file associato alla funzione mean) all’interno della directory di MATLAB, vediamo che quanto stampato a video corrisponde alle righe racchiuse tra % presenti all’inizio della funzione. Riprenderemo questo discorso più avanti parlando delle funzioni.

Page 28: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Aiuti nella programmazione

Un altro comando che permette di visualizzare le funzioni che riguardano lo stesso argomento di una funzione nota è lookfor. Ad es. digitando

lookfor diag

otteniamo tutti i comandi analoghi al comando di estrazione della diagonale principale di una matrice.

In MATLAB esiste inoltre una guida che può essere in ogni momento consultata premendo Help > MATLAB Help

Page 29: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Aiuti nella programmazione

Nella creazione di funzioni risulta utilissima la presenza nell’edit del Debug, ossia di un meccanismo che permette all’utilizzatore di avere i risultati delle operazioni che il programma svolge o meglio sta svolgendo, all’interno di una funzione, controllando che calcoli esattamente ciò che si voleva esso facesse. Vedremo più avanti la sua utilità nell’abito della creazione di funzioni.

Page 30: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Altri comandi video

Who e whos: digitati nel command, forniscono rispettivamente il nome delle variabili utilizzate (who) e il nome delle variabili utilizzate + la loro dimensione , cioè se matrici, numeri, … (whos).

Clear: digitato nel command azzera tutte la variabili temporaneamente presenti.

Attenzione!: mentre clc cancella quanto è scritto ma non la memoria temporanea, clear azzera proprio quest’ultima!

Page 31: Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it

Altri comandi video

Il comando format gestisce l’aspetto grafico con il quale vengono visualizzati i risultati. In sintesi possiamo usare nel command

format short format long