32
Introduzione a Introduzione a System Identification System Identification Toolbox Toolbox di di MATLAB MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazio orso: Identificazione dei Modelli e Analisi dei Dat Prof. Sergio BITTANTI BITTANTI

Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

Embed Size (px)

Citation preview

Page 1: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

Introduzione aIntroduzione a System Identification Toolbox System Identification Toolbox

di di MATLABMATLAB

POLITECNICO DI MILANOFacoltà di Ingegneria

Dipartimento di Elettronica e Informazione

Corso: Identificazione dei Modelli e Analisi dei DatiProf. Sergio BITTANTIBITTANTI

Corso: Identificazione dei Modelli e Analisi dei DatiProf. Sergio BITTANTIBITTANTI

Page 2: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

ORGANIZZAZIONE DELLA PRESENTAZIONEORGANIZZAZIONE DELLA PRESENTAZIONE Esempio guidaEsempio guida Rappresentazione e trattamento dei dati sperimentaliRappresentazione e trattamento dei dati sperimentali Calcolo del predittoreCalcolo del predittore Stima non parametrica di un modello:Stima non parametrica di un modello:

» Stima di correlazioneStima di correlazione» Stima spettraleStima spettrale

Stima parametrica di un modelloStima parametrica di un modello» Stima dei modelli col metodo dei Minimi QuadratiStima dei modelli col metodo dei Minimi Quadrati» Stima dei modelli col metodo della Massima VerosimiglianzaStima dei modelli col metodo della Massima Verosimiglianza

Scelta del modello ottimo e sua validazioneScelta del modello ottimo e sua validazione» Analisi della complessitàAnalisi della complessità» Analisi dei residui: bianchezza dell’erroreAnalisi dei residui: bianchezza dell’errore» Confronto di diversi modelliConfronto di diversi modelli

Algoritmi di identificazione ricorsivi e con oblioAlgoritmi di identificazione ricorsivi e con oblio L’interfaccia grafica L’interfaccia grafica identident

Page 3: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

IntroduzioneIntroduzione Tipicamente un problema di identificazione inizia dopo aver Tipicamente un problema di identificazione inizia dopo aver

progettato un set significativo di prove sperimentali ed aver progettato un set significativo di prove sperimentali ed aver raccolto una serie di dati dal sistema in esame.raccolto una serie di dati dal sistema in esame.

In questa presentazione supporremo sempre un approccio “Black In questa presentazione supporremo sempre un approccio “Black Box” al problema dell’identificazione; in altre parole, ci Box” al problema dell’identificazione; in altre parole, ci muoveremo come se non sapessimo nulla della fisica del sistema muoveremo come se non sapessimo nulla della fisica del sistema che genera i dati.che genera i dati.

Se i dati sono contenuti in un file .mat (estensione dei file di dati Se i dati sono contenuti in un file .mat (estensione dei file di dati in matlab), il primo comando da digitare nel prompt di Matlab è:in matlab), il primo comando da digitare nel prompt di Matlab è:

“» load nomefile”

Ciò renderà i dati sperimentali disponibili nel Workspace della Ciò renderà i dati sperimentali disponibili nel Workspace della sessione di Matlab attiva.sessione di Matlab attiva.

Page 4: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Esempio GuidaEsempio Guida Nel seguito, tutti gli esempi presentati faranno riferimento ad uno Nel seguito, tutti gli esempi presentati faranno riferimento ad uno

specifico sistema, che ora introduciamo.specifico sistema, che ora introduciamo. I dati sono stati raccolti simulando un sistema AR(3), asintoticamente I dati sono stati raccolti simulando un sistema AR(3), asintoticamente

stabile:stabile:

con con . . I dati raccolti dalla simulazione sono stati memorizzati in due vettori I dati raccolti dalla simulazione sono stati memorizzati in due vettori

chiamati chiamati ingresso ingresso (per il segnale e(t)) ed (per il segnale e(t)) ed uscita uscita (per il segnale y(t))(per il segnale y(t)), , ognuno contenente 10000 campioni.ognuno contenente 10000 campioni.

Sulla base di tali dati si calcolerà il predittore e, nell’ipotesi che il vero Sulla base di tali dati si calcolerà il predittore e, nell’ipotesi che il vero meccanismo di generazione dei dati sia ignoto, si vedrà come meccanismo di generazione dei dati sia ignoto, si vedrà come impostare la stima parametrica e non parametrica di un modello. Infine impostare la stima parametrica e non parametrica di un modello. Infine si passerà alla validazione del modello scelto.si passerà alla validazione del modello scelto.

)()3()2()1()( 321 tetyatyatyaty

)1,4()( WNte

Page 5: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Rappresentazione e trattamento dei Rappresentazione e trattamento dei dati sperimentalidati sperimentali

Per iniziare, viene creato un oggetto Per iniziare, viene creato un oggetto iddata iddata dove vengono salvati i dati. dove vengono salvati i dati. Questo oggetto consentirà di porre in un’unica struttura le diverse Questo oggetto consentirà di porre in un’unica struttura le diverse informazioni, cui si potrà accedere (come in un’usuale struttura C) con la informazioni, cui si potrà accedere (come in un’usuale struttura C) con la notazione puntatanotazione puntata

nomemodello.proprietànomemodello.proprietà Il comando Matlab è: >> Il comando Matlab è: >> mymod=iddata(uscita,ingresso,1);mymod=iddata(uscita,ingresso,1); Con il comando >> Con il comando >> get(get(mymodmymod) ) si visualizzano a video tutte le proprietà dei si visualizzano a video tutte le proprietà dei

dati.dati. Analogamente, il comando >> Analogamente, il comando >> set(set(mymodmymod) ) consente all’utente di modificare consente all’utente di modificare

le proprietà dei dati. le proprietà dei dati.

Page 6: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Rappresentazione e trattamento dei Rappresentazione e trattamento dei dati sperimentalidati sperimentali

La prima operazione da farsi sui dati prima di intraprendere la fase di identificazione La prima operazione da farsi sui dati prima di intraprendere la fase di identificazione vera e propria è la rimozione di eventuali vera e propria è la rimozione di eventuali trendtrend presenti nei dati stessi. Nel caso presenti nei dati stessi. Nel caso dell’esempio guida il trend si riduce al valor medio non nullo della serie temporale. I dell’esempio guida il trend si riduce al valor medio non nullo della serie temporale. I comandi che seguono rimuovono il trend e visualizzano il risultato di tale operazione:comandi che seguono rimuovono il trend e visualizzano il risultato di tale operazione:

>> >> figurefigure % creo una figura in cui plottare i dati% creo una figura in cui plottare i dati

>> >> subplot(2,1,1) subplot(2,1,1) %divido la figura in 2 parti in cui plotterò uscita e ingresso originali e senza trend%divido la figura in 2 parti in cui plotterò uscita e ingresso originali e senza trend

>> plot(ingresso(1:100));>> plot(ingresso(1:100)); % grafico sulla finestra di grafico creata i primi 100 campioni del segnale in ingresso% grafico sulla finestra di grafico creata i primi 100 campioni del segnale in ingresso

>> hold on;>> hold on; % mantengo aperta la figura corrente per plottare l’ingresso dopo il detrend nella stessa finestra% mantengo aperta la figura corrente per plottare l’ingresso dopo il detrend nella stessa finestra

>> y=detrend(ingresso);>> y=detrend(ingresso); %assegno alla variabile y i valori dell’ingresso da cui viene rimosso il trend%assegno alla variabile y i valori dell’ingresso da cui viene rimosso il trend

>> plot(y(1:100),'r')>> plot(y(1:100),'r') %grafico nella stessa finestra i campioni dell’ingresso dopo il detrend in rosso%grafico nella stessa finestra i campioni dell’ingresso dopo il detrend in rosso

>> hold off;>> hold off; % rilascio la figura corrente% rilascio la figura corrente

>> >> subplot(2,1,2) subplot(2,1,2) %creo una seconda finestra nella figura%creo una seconda finestra nella figura

>> plot(uscita(1:100));>> plot(uscita(1:100)); % grafico sulla finestra di grafico creata i primi 100 campioni del segnale in uscita% grafico sulla finestra di grafico creata i primi 100 campioni del segnale in uscita

>> hold on>> hold on;; % mantengo aperta la figura corrente per plottare l’usicta dopo il detrend nella stessa finestra% mantengo aperta la figura corrente per plottare l’usicta dopo il detrend nella stessa finestra

>> u=detrend(uscita);>> u=detrend(uscita); %assegno alla variabile u i valori dell’uscita da cui viene rimosso il trend%assegno alla variabile u i valori dell’uscita da cui viene rimosso il trend

>> plot(u(1:100),'r')>> plot(u(1:100),'r') %gafico nella stessa finestra i campioni dell’ingresso dopo il detrend in rosso%gafico nella stessa finestra i campioni dell’ingresso dopo il detrend in rosso

>> hold off;>> hold off; % rilascio la figura corrente% rilascio la figura corrente

Page 7: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Rappresentazione e trattamento Rappresentazione e trattamento dei dati sperimentalidei dati sperimentali - la funzione detrend -- la funzione detrend -

In generale, la funzione In generale, la funzione detrend (detrend (utilizzata nell’esempio precedente per rimuovere utilizzata nell’esempio precedente per rimuovere il valor medio) offre la possibilità di rimuovere diversi tipi di trend il valor medio) offre la possibilità di rimuovere diversi tipi di trend

La sintassi completa della funzione è:La sintassi completa della funzione è: >> new_mod=detrend(mod,o,breakpoint)>> new_mod=detrend(mod,o,breakpoint) dove:dove: mod mod è un oggetto è un oggetto iddataiddata;; o o è l’ordine del trend da rimuovere. Di default o=0: in questo caso si rimuove il è l’ordine del trend da rimuovere. Di default o=0: in questo caso si rimuove il

trend “di ordine 0”, ossia la media del segnale. Con o=1 si possono eliminare i trend “di ordine 0”, ossia la media del segnale. Con o=1 si possono eliminare i trend lineari, con o=2 i trend quadratici e così via; aumentando il valore del trend lineari, con o=2 i trend quadratici e così via; aumentando il valore del parametro parametro o o vengono rimossi trend polinomiali di ordine crescente. vengono rimossi trend polinomiali di ordine crescente. E’ possibile decidere anche su quale parte dei dati la funzione deve agire (è E’ possibile decidere anche su quale parte dei dati la funzione deve agire (è possibile infatti che la presenza del trend interessi solo una porzione dei dati). possibile infatti che la presenza del trend interessi solo una porzione dei dati). Specificando nel parametro Specificando nel parametro breakpoint breakpoint gli estremi della porzione di dati a cui gli estremi della porzione di dati a cui applicare il detrend si può applicare la funzione solo alla parte dei dati di interesse.applicare il detrend si può applicare la funzione solo alla parte dei dati di interesse.

L’output della funzione L’output della funzione new_modnew_mod è un oggetto è un oggetto iddataiddata che conterrà tutti i segnali che conterrà tutti i segnali contenuti in quello di partenza contenuti in quello di partenza modmod privati del trend. privati del trend.

Page 8: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Rappresentazione e trattamento dei Rappresentazione e trattamento dei dati sperimentalidati sperimentali

Nella figura vediamo il risultato dell’operazione di detrend sull’esempio guida.

Nella finestra in alto sono mostrati i campioni del segnale in ingresso originali (blu) e dopo il detrend (rosso). Nella finestra in basso gli analoghi andamenti dell’uscita.

Page 9: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Calcolo del predittoreCalcolo del predittore Si vuole ora ottenere, a partire dai dati raccolti, una Si vuole ora ottenere, a partire dai dati raccolti, una predizionepredizione dei valori futuri dei valori futuri

dell’uscita del processo mediante un dell’uscita del processo mediante un modello (MA,AR(X),ARMA(X)) modello (MA,AR(X),ARMA(X)) che l’utente che l’utente può scegliere per descrivere i dati raccolti.può scegliere per descrivere i dati raccolti.

La sintassi della funzione Matlab che fa questo tipo di analisi è:La sintassi della funzione Matlab che fa questo tipo di analisi è:

>> >> yhat = predict(modello,dati,k,init)yhat = predict(modello,dati,k,init)

dove: dove: modellomodello è il tipo di modello che si è scelto per descrivere il meccanismo di è il tipo di modello che si è scelto per descrivere il meccanismo di generazione dei dati;generazione dei dati;

datidati è un oggetto di tipo è un oggetto di tipo iddata;iddata;

kk è l’orizzonte predittivo;è l’orizzonte predittivo;

initinit è la modalità di inizializzazione; se è la modalità di inizializzazione; se init ='estimate‘ init ='estimate‘ lo stato iniziale è fissato al valore lo stato iniziale è fissato al valore che minimizza l’errore di predizione associato al modello ed ai dati; che minimizza l’errore di predizione associato al modello ed ai dati; init = 'zero' init = 'zero' fissa lo fissa lo stato iniziale a zero; stato iniziale a zero; init = 'model'init = 'model' usa lo stato inziale del modello che viene usa lo stato inziale del modello che viene automaticamente salvato alla sua creazione.automaticamente salvato alla sua creazione.

L’output è: L’output è: yhat, yhat, un ogetto un ogetto iddataiddata i cui OutputData sono i valori predetti. i cui OutputData sono i valori predetti.

Page 10: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Calcolo del predittoreCalcolo del predittore A partire dai primi 5000 dati raccolti nel vettore A partire dai primi 5000 dati raccolti nel vettore uscita, uscita, generatigenerati per per

simulazione tramite l’esempio guida, si identifica un modello AR(3). Per simulazione tramite l’esempio guida, si identifica un modello AR(3). Per l’identificazione del Matlab utilizza, in questo caso, l’algoritmo dei l’identificazione del Matlab utilizza, in questo caso, l’algoritmo dei Minimi Quadrati. Minimi Quadrati. Se si fosse desiderato identificare, invece, un modello Se si fosse desiderato identificare, invece, un modello ARMA, Matlab avrebbe ricorso all’algoritmo della ARMA, Matlab avrebbe ricorso all’algoritmo della Massima Massima Verosimiglianza.Verosimiglianza.

>> m>> modelloodello = ar(uscita(1:5000),[3]); = ar(uscita(1:5000),[3]); In questo modo si è identificato il modello AR(3). Questo modello può In questo modo si è identificato il modello AR(3). Questo modello può

essere utilizzato per formare la predizione. In una prima fase, la essere utilizzato per formare la predizione. In una prima fase, la predizione viene effettuata sui primi 5000 dati, gli stessi usati per predizione viene effettuata sui primi 5000 dati, gli stessi usati per l’identificazione:l’identificazione:

>> >> yyhathat = predict(m = predict(modelloodello,,[ingresso(1:5000);uscita(1:5000)][ingresso(1:5000);uscita(1:5000)],,2,’estimate’2,’estimate’);); In una seconda fase, la predizione viene effettuata sui restanti dati,così da In una seconda fase, la predizione viene effettuata sui restanti dati,così da

avere un criterio avere un criterio oggettivo oggettivo di valutazione della bontà predittiva del di valutazione della bontà predittiva del modello:modello:

>> compare(yhat,modello,2,5001: end);>> compare(yhat,modello,2,5001: end);

Page 11: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Calcolo del predittoreCalcolo del predittore

Nella figura si vede il confronto tra la seconda metà dei dati e valori predetti dell’uscita in base al modello AR(3) stimato.

Page 12: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Stima non parametricaStima non parametrica In questa sezione ci occuperemo di stimare alcune caratteristiche del In questa sezione ci occuperemo di stimare alcune caratteristiche del

meccanismo di generazione dati (a noi noto solo attraverso una sua meccanismo di generazione dati (a noi noto solo attraverso una sua realizzazione) in modo realizzazione) in modo non parametriconon parametrico, senza passare attraverso , senza passare attraverso l’identificazione preventiva di un modello.l’identificazione preventiva di un modello.

Il primo passo per avere informazioni sulle caratteristiche del sistema è fare Il primo passo per avere informazioni sulle caratteristiche del sistema è fare una stima della funzione di una stima della funzione di covarianza campionariacovarianza campionaria. Ciò si ottiene col . Ciò si ottiene col comando:comando:

>>Gammahat>>Gammahat = covf(mymod = covf(mymod ,, 1);1);

dove: dove: mymod mymod è un iddata che contiene i dati in ingresso e in uscita;è un iddata che contiene i dati in ingresso e in uscita;

1 1 indica che indica che . Il valore di questo parametro . Il valore di questo parametro (nell’esempio 1) decrementato di 1 sarà dunque il valore di (nell’esempio 1) decrementato di 1 sarà dunque il valore di

Con Con 11, dunque, stimeremo la varianza campionaria., dunque, stimeremo la varianza campionaria.

In questo caso, con i dati dell’esempio guida, si ottiene:In questo caso, con i dati dell’esempio guida, si ottiene:

011|| 12 tt

17.0357.24

57.24207.16

)0(ˆ)0(ˆ

)0(ˆ)0(ˆˆ

uuuy

yuyy

R

Page 13: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Stima non parametricaStima non parametrica

Il passo successivo della stima non parametrica è l’Il passo successivo della stima non parametrica è l’analisi spettraleanalisi spettrale diretta.diretta.

Un primo strumento per stimare lo spettro in questo modo è il Un primo strumento per stimare lo spettro in questo modo è il periodogrammaperiodogramma. A partire dai dati in esame, coi comandi. A partire dai dati in esame, coi comandi

>> >> [[Pyy,wPyy,w]] = periodogram(uscita(1:1024)); = periodogram(uscita(1:1024));

>> plot(w,Pyy)>> plot(w,Pyy)

viene calcolato e graficato il periodogramma a partire da 1024 viene calcolato e graficato il periodogramma a partire da 1024 campioni dell’uscita del sistema. Dato che, numericamente, il calcolo campioni dell’uscita del sistema. Dato che, numericamente, il calcolo del periodogramma si basa sulla Fast Fourier Transform (FFT), per del periodogramma si basa sulla Fast Fourier Transform (FFT), per ottimizzare l’algoritmo è consigliabile utilizzare un numero di ottimizzare l’algoritmo è consigliabile utilizzare un numero di campioni che sia una potenza di 2.campioni che sia una potenza di 2.

Page 14: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Stima non parametricaStima non parametrica

In questa figura si vede il grafico del periodogramma calcolato su 1024 campioni dell’uscita del processo. La densità spettrale di potenza stimata viene graficata come funzione delle frequenze w, la cui unità di misura, in Matlab, è [rad/sample].

Page 15: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Stima non parametricaStima non parametrica

Com’è noto, la stima dello spettro via periodogramma soffre di diversi Com’è noto, la stima dello spettro via periodogramma soffre di diversi problemi, da cui deriva l’estrema irregolarità del grafico.problemi, da cui deriva l’estrema irregolarità del grafico.

Uno dei rimedi più noti per ottenere stime più regolari dello spettro è utilizzare Uno dei rimedi più noti per ottenere stime più regolari dello spettro è utilizzare il metodo di Bartlett, ovvero suddividere i dati in diverse sottosequenze, il metodo di Bartlett, ovvero suddividere i dati in diverse sottosequenze, calcolare il periodogramma di ognuna di esse, e ricavare la stima globale dello calcolare il periodogramma di ognuna di esse, e ricavare la stima globale dello spettro come media di questi nuovi periodogrammi.spettro come media di questi nuovi periodogrammi.

Ciò si ottiene, in Matlab, con il comando:Ciò si ottiene, in Matlab, con il comando: >> >> [[Pyy,wPyy,w]]= pwelch(uscita(1:1024),bartlett(256),0);= pwelch(uscita(1:1024),bartlett(256),0); dove dove bartlett(256)bartlett(256) indica che il tipo di finestra scelta è quella di bartlett (molte indica che il tipo di finestra scelta è quella di bartlett (molte

altre sono disponibili, ognuna ha delle caratteristiche peculiari che non altre sono disponibili, ognuna ha delle caratteristiche peculiari che non discuteremo in questa sede) e che i campioni in ogni sottosequenza sono 256;discuteremo in questa sede) e che i campioni in ogni sottosequenza sono 256;

0 0 è il parametro con cui scegliere il numero di campioni di è il parametro con cui scegliere il numero di campioni di overlapoverlap. . Il valore 0 Il valore 0 indica che non si utilizzano finestre parzialmente sovrapposte.indica che non si utilizzano finestre parzialmente sovrapposte.

Matlab offre molte altre funzioni per la stima non parametrica della densità Matlab offre molte altre funzioni per la stima non parametrica della densità spettrale di potenza (per una panoramica esaustiva si rimanda alla System spettrale di potenza (per una panoramica esaustiva si rimanda alla System Identification Toolbox User’s Guide).Identification Toolbox User’s Guide).

Page 16: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Stima non parametricaStima non parametrica

In questa figura si vede il periodogramma stimato col metodo di Bartlett, con 4 sottosequenze da 256 dati l’una. Si può apprezzare la riduzione delle fluttuazioni. Aumentando il numero delle sottosequenze il diagramma è via via più regolare.

Page 17: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Stima non parametrica Stima non parametrica della risposta in frequenzadella risposta in frequenza

Matlab consente anche la stima della risposta in frequenza del sistema a Matlab consente anche la stima della risposta in frequenza del sistema a partire dai dati. Con la funzione partire dai dati. Con la funzione spa spa : : >>g = spa (data)>>g = spa (data)

dove dove data data è un vettore che contiene campioni di una realizzazione del è un vettore che contiene campioni di una realizzazione del processo in esame, si ottiene in output processo in esame, si ottiene in output gg, che contiene tale stima:, che contiene tale stima:

Le frequenze cui viene calcolata la stima sono fissate di default ai valori Le frequenze cui viene calcolata la stima sono fissate di default ai valori

w = [1:128]/128*pi/Tsw = [1:128]/128*pi/Ts, dove , dove TsTs è il tempo di campionamento (1 nel è il tempo di campionamento (1 nel contesto in esame), ma possono essere anche scelte dall’utente (nel qual contesto in esame), ma possono essere anche scelte dall’utente (nel qual caso dovranno essere passate come ulteriore parametro alla funzione caso dovranno essere passate come ulteriore parametro alla funzione spaspa))..

Con il comando Con il comando >> bode (g) >> bode (g)

si ottiene il diagramma di Bode di modulo e fase della risposta in frequenza si ottiene il diagramma di Bode di modulo e fase della risposta in frequenza stimata. stimata.

)(ˆ jeG

Page 18: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Stima parametricaStima parametrica Passiamo ora ad analizzare le tecniche di identificazione parametrica, ovvero i Passiamo ora ad analizzare le tecniche di identificazione parametrica, ovvero i

metodi di identificazione che mirano a descrivere il meccanismo di metodi di identificazione che mirano a descrivere il meccanismo di generazione dati ignoto mediante un modello di una data famiglia (MA, generazione dati ignoto mediante un modello di una data famiglia (MA, AR(X), ARMA(X), ecc.).AR(X), ARMA(X), ecc.).

Cominciamo ad analizzare la procedura per la stima di un modello AR(n):Cominciamo ad analizzare la procedura per la stima di un modello AR(n):

>> >> mmodelloodello = ar = ar ((data data ,, n,n, metodo metodo))

dove: dove: data data è un oggetto iddata che contiene i campioni di ingresso e uscita;è un oggetto iddata che contiene i campioni di ingresso e uscita;

n n è l’ordine del modello;è l’ordine del modello;

metodo metodo permette di scegliere l’algoritmo da utilizzare. Le opzioni più permette di scegliere l’algoritmo da utilizzare. Le opzioni più

comuni sono ‘ls’, ovvero il metodo dei Minimi Quadrati , e ‘yw’comuni sono ‘ls’, ovvero il metodo dei Minimi Quadrati , e ‘yw’

che, per trovare la stima, risolve le equazioni di Yule Walker ache, per trovare la stima, risolve le equazioni di Yule Walker a

partire dal calcolo delle funzioni di covarianza campionarie.partire dal calcolo delle funzioni di covarianza campionarie.

Page 19: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Stima parametricaStima parametrica Per la stima di modelli MA e ARMA(X), si utilizza la funzione:Per la stima di modelli MA e ARMA(X), si utilizza la funzione:

>> >> mmodelloodello = armax(dat = armax(datii,'na',na,'nb',nb,'nc',nc,'nk',nk),'na',na,'nb',nb,'nc',nc,'nk',nk)

in cui i parametri sono quelli del modello teorico:in cui i parametri sono quelli del modello teorico:

Con un’opportuna scelta degli ordini delle diverse parti (AR, MA, X), Con un’opportuna scelta degli ordini delle diverse parti (AR, MA, X),

si possono descrivere modelli AR,MA,ARMAX degli ordini desiderati.si possono descrivere modelli AR,MA,ARMAX degli ordini desiderati.

La procedura di stima si basa sull’algoritmo della Massima La procedura di stima si basa sull’algoritmo della Massima Verosimiglianza (MLE).Verosimiglianza (MLE).

)()()()()()( tezCntuzBtyzA k

Page 20: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Scelta del modello ottimo e sua Scelta del modello ottimo e sua validazionevalidazione

In base alle funzioni viste nella precedente sezione, procederemo ora a In base alle funzioni viste nella precedente sezione, procederemo ora a stimare diversi modelli per descrivere i dati dell’esempio. Si tratterà poi di stimare diversi modelli per descrivere i dati dell’esempio. Si tratterà poi di scegliere il modello scegliere il modello ottimoottimo, sia dal punto di vista della complessità sia dal , sia dal punto di vista della complessità sia dal punto di vista della famiglia di modelli. Si sappia che i dati utilizzati punto di vista della famiglia di modelli. Si sappia che i dati utilizzati nell’esempio sono stati generati da un AR(3).nell’esempio sono stati generati da un AR(3).

Stimiamo 4 diversi modelli: un AR(1), un AR(3), un MA(3) ed un Stimiamo 4 diversi modelli: un AR(1), un AR(3), un MA(3) ed un ARMA(1,2): ARMA(1,2):

>>m1=ar(uscita, 1, ‘ls’);>>m1=ar(uscita, 1, ‘ls’);

>>m2=ar(uscita, 3, ‘ls’);>>m2=ar(uscita, 3, ‘ls’);

>>m3=armax(uscita, ‘na’,0,’nc’,3 );>>m3=armax(uscita, ‘na’,0,’nc’,3 );

>>m4=armax(uscita, ‘na’,1,’nc’,2);>>m4=armax(uscita, ‘na’,1,’nc’,2);

Page 21: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Scelta del modello ottimo e sua Scelta del modello ottimo e sua validazionevalidazione

Prima di tutto occorre comprendere quale sia la famiglia di modelli cui Prima di tutto occorre comprendere quale sia la famiglia di modelli cui è più probabile appartenga il meccanismo di generazione dati.è più probabile appartenga il meccanismo di generazione dati.

Per far ciò, analizziamo l’errore di predizione, sapendo che il caso Per far ciò, analizziamo l’errore di predizione, sapendo che il caso ottimo è quello in cui l’errore di predizione è un rumore bianco.ottimo è quello in cui l’errore di predizione è un rumore bianco.

A tal fine, utilizziamo una particolare funzione Matlab:A tal fine, utilizziamo una particolare funzione Matlab:>> resid(m1,uscita)>> resid(m1,uscita)>> resid(m2,uscita)>> resid(m2,uscita)>> resid(m3,uscita)>> resid(m3,uscita)>> resid(m4,uscita)>> resid(m4,uscita)

Tale funzione calcola l’errore di predizione commesso dal predittore Tale funzione calcola l’errore di predizione commesso dal predittore associato al modello e ne valuta la funzione di autocorrelazione. Il associato al modello e ne valuta la funzione di autocorrelazione. Il grafico mostra i valori di tale funzione rispetto ad un intervallo di grafico mostra i valori di tale funzione rispetto ad un intervallo di confidenza del 99%. Se l’errore è bianco, pertanto, ci aspettiamo che confidenza del 99%. Se l’errore è bianco, pertanto, ci aspettiamo che tutti i valori della funzione di autocorrelazione, ad eccezione tutti i valori della funzione di autocorrelazione, ad eccezione ovviamente del primo, siano nulli, o comunque sufficientemente ovviamente del primo, siano nulli, o comunque sufficientemente piccoli da restare all’interno dell’intervallo di confidenza.piccoli da restare all’interno dell’intervallo di confidenza.

Page 22: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Scelta del modello ottimo e sua Scelta del modello ottimo e sua validazionevalidazione

La figura mostra l’analisi dei residui prima descritta nel caso del modello AR(1). Come si vede l’errore di predizione non è bianco, coerentemente col fatto che il meccanismo di generazione dati reale è un AR(3).

Page 23: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Scelta del modello ottimo e sua Scelta del modello ottimo e sua validazionevalidazione

La figura mostra l’analisi dei residui prima descritta nel caso del modello MA(3). Come si vede l’errore di predizione non è bianco, coerentemente col fatto che il meccanismo di generazione dati reale è un AR(3).

Page 24: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Scelta del modello ottimo e sua Scelta del modello ottimo e sua validazionevalidazione

La figura mostra l’analisi dei residui prima descritta nel caso del modello ARMA(1,2). Come si vede l’errore di predizione non è bianco, coerentemente col fatto che il meccanismo di generazione dati reale è un AR(3).

Page 25: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Scelta del modello ottimo e sua Scelta del modello ottimo e sua validazionevalidazione

La figura mostra l’analisi dei residui prima descritta nel caso del modello AR(3). Come si vede l’errore di predizione in questo caso è bianco (si vede che l’unico campione della funzione di autocorrelazione diverso da zero è il primo), coerentemente col fatto che il meccanismo di generazione dati reale è proprio un AR(3).

Page 26: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Scelta del modello ottimo e sua Scelta del modello ottimo e sua validazionevalidazione

Una volta individuata la famiglia di modelli, nel nostro caso AR(n), Una volta individuata la famiglia di modelli, nel nostro caso AR(n), occorre determinare la complessità ottima. Esaminiamo le funzioni occorre determinare la complessità ottima. Esaminiamo le funzioni Matlab che consentono questa analisi, applicandole ai modelli della Matlab che consentono questa analisi, applicandole ai modelli della famiglia AR con ordine famiglia AR con ordine n = 1 ,...,10.n = 1 ,...,10.

Per fare ciò utilizziamo i criteri noti, ovvero il Final Prediction Error Per fare ciò utilizziamo i criteri noti, ovvero il Final Prediction Error (FPE) e l’Akaike Information Criterion (AIC). (FPE) e l’Akaike Information Criterion (AIC).

I comandi Matlab I comandi Matlab >> aic(modello)>> aic(modello)

>>fpe (modello)>>fpe (modello)

consentono di calcolare i valori di tali indici per il modello identificato.consentono di calcolare i valori di tali indici per il modello identificato.

Page 27: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Scelta del modello ottimo e sua Scelta del modello ottimo e sua validazionevalidazione

La figura mostra l’andamento di FPE al variare dell’ordine. Coerentemente con quanto ci si aspetta, l’ordine che ottimizza questo criterio nel caso dell’esempio guida è n =3.

Page 28: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

Algoritmi di identificazione ricorsivi Algoritmi di identificazione ricorsivi e con oblioe con oblio

Spesso, per ottimizzare i tempi di calcolo, è opportuno utilizzare algoritmi Spesso, per ottimizzare i tempi di calcolo, è opportuno utilizzare algoritmi ricorsivi per l’identificazione, ad esempio il ricorsivi per l’identificazione, ad esempio il Recursive Least Square Recursive Least Square Algorithm (RLS). Allo stesso modo, spesso si vuole poter agire sul peso Algorithm (RLS). Allo stesso modo, spesso si vuole poter agire sul peso relativo dei dati, attribuendo importanza minore ai dati lontani nel tempo. Ciò relativo dei dati, attribuendo importanza minore ai dati lontani nel tempo. Ciò si realizza introducendo il si realizza introducendo il coefficiente d’obliocoefficiente d’oblio..

Matlab offre la possibilità di scegliere questa strada. Per esempio:Matlab offre la possibilità di scegliere questa strada. Per esempio: >> [est,yhat] = rarx (uscita(1:length(uscita)/2),[3],’ff’,0.98 );>> [est,yhat] = rarx (uscita(1:length(uscita)/2),[3],’ff’,0.98 );

fornisce una stima dei parametri di un modello AR(3), costruito a partire dalla fornisce una stima dei parametri di un modello AR(3), costruito a partire dalla prima metà dei dati utilizzando l’algoritmo RLS. In questo caso si è usata prima metà dei dati utilizzando l’algoritmo RLS. In questo caso si è usata l’opzione l’opzione ‘ff’ ‘ff’ (leggi: forgetting factor), che utilizza un coefficiente di oblio, (leggi: forgetting factor), che utilizza un coefficiente di oblio, fissato, in questo caso, a 0.98.fissato, in questo caso, a 0.98.

Gli output di questa funzione sono Gli output di questa funzione sono estest, che è una matrice la cui , che è una matrice la cui k-esima k-esima riga riga contiene i parametri stimati al tempo contiene i parametri stimati al tempo kk (ovvero stimati in base ai dati fino al (ovvero stimati in base ai dati fino al k-k-esimoesimo incluso); incluso); yhat yhat è il vettore che contiene la predizione dell’uscita secondo è il vettore che contiene la predizione dell’uscita secondo il modello stimato. Si può valutarne la bontà analizzando l’errore di tale il modello stimato. Si può valutarne la bontà analizzando l’errore di tale predizione sulla seconda metà dei dati (non utilizzati nella stima del modello).predizione sulla seconda metà dei dati (non utilizzati nella stima del modello).

Page 29: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

L’interfaccia graficaL’interfaccia grafica Per concludere questa breve panoramica sul System Identification Per concludere questa breve panoramica sul System Identification

Toolbox, introduciamo la GUI che questo tool offre.Toolbox, introduciamo la GUI che questo tool offre. Per aprirla occorre scrivere al promptPer aprirla occorre scrivere al prompt

>> >> identident

Questa è l’interfaccia che si presenta all’utente

Page 30: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

L’interfaccia graficaL’interfaccia grafica

Per analizzare i dati occorre importarli: il menù a tendina Per analizzare i dati occorre importarli: il menù a tendina DataData consente consente

di importare i dati dal Workspace di Matlab.di importare i dati dal Workspace di Matlab. E’ offerta all’utente la possibilità di pretrattare i dati importati, secondo le E’ offerta all’utente la possibilità di pretrattare i dati importati, secondo le

modalità indicate nel menù posto sotto alla scritta modalità indicate nel menù posto sotto alla scritta OperationsOperations (si possono (si possono rimuovere i trend, selezionare solo alcune variabili da analizzare, rimuovere i trend, selezionare solo alcune variabili da analizzare, effettuare dei prefiltraggi, ecc.).effettuare dei prefiltraggi, ecc.).

Dopo aver scelto i dati da analizzare si possono costruire delle stime sia Dopo aver scelto i dati da analizzare si possono costruire delle stime sia parametriche sia non parametriche, come specificato nelle opzioni del parametriche sia non parametriche, come specificato nelle opzioni del menù a tendina menù a tendina Estimate Estimate

E’ possibile, inoltre, importare dei modelli creati precedentemente in E’ possibile, inoltre, importare dei modelli creati precedentemente in Matlab (mediante l’opzione Matlab (mediante l’opzione import import del menù del menù Models Models ).).

Page 31: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

L’interfaccia graficaL’interfaccia grafica Scegliendo l’opzione di identificazione parametrica, per esempio, si Scegliendo l’opzione di identificazione parametrica, per esempio, si

apre una finestra di dialogo in cui scegliere il tipo di modello e il suo apre una finestra di dialogo in cui scegliere il tipo di modello e il suo ordine:ordine:

Page 32: Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione

- IMAD - Politecnico di Milano: System Identification Toolbox di Matlab-

L’interfaccia graficaL’interfaccia grafica

Una volta creati i modelli, essi vengono visualizzati nei riquadri sotto Una volta creati i modelli, essi vengono visualizzati nei riquadri sotto la scritta la scritta ModelsModels. Selezionando una delle. Selezionando una delle caselle sotto la scritta caselle sotto la scritta Model Model Views Views si possono valutare e confrontare le caratteristiche dei diversi si possono valutare e confrontare le caratteristiche dei diversi modelli (analizzare gli errori di predizione, valutare la risposta modelli (analizzare gli errori di predizione, valutare la risposta all’impulso e allo scalino dei vari modelli, le risposte in frequenza dei all’impulso e allo scalino dei vari modelli, le risposte in frequenza dei modelli stimati, ecc.)modelli stimati, ecc.)

Dunque questa interfaccia è uno strumento utile ed intuitivo per la fase Dunque questa interfaccia è uno strumento utile ed intuitivo per la fase iniziale di analisi in una procedura reale di indentificazione. E’ ovvio, iniziale di analisi in una procedura reale di indentificazione. E’ ovvio, peraltro, che ogni singolo problema avrà delle peculiarità che, quasi peraltro, che ogni singolo problema avrà delle peculiarità che, quasi sempre, richiederanno un’analisi studiata ad hoc, per la quale sarà sempre, richiederanno un’analisi studiata ad hoc, per la quale sarà necessario creare nuove funzioni Matlab che sfruttino le potenzialità necessario creare nuove funzioni Matlab che sfruttino le potenzialità del Toolbox ma siano orientate alla specifica applicazione.del Toolbox ma siano orientate alla specifica applicazione.