La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione."— Transcript della presentazione:

1 Introduzione a System Identification Toolbox di MATLAB POLITECNICO DI MILANO Facoltà di Ingegneria Dipartimento di Elettronica e Informazione Corso: Identificazione dei Modelli e Analisi dei Dati BITTANTI Prof. Sergio BITTANTI Corso: Identificazione dei Modelli e Analisi dei Dati BITTANTI Prof. Sergio BITTANTI

2 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- ORGANIZZAZIONE DELLA PRESENTAZIONE Esempio guida Esempio guida Rappresentazione e trattamento dei dati sperimentali Rappresentazione e trattamento dei dati sperimentali Calcolo del predittore Calcolo del predittore Stima non parametrica di un modello: Stima non parametrica di un modello: »Stima di correlazione »Stima spettrale Stima parametrica di un modello Stima parametrica di un modello »Stima dei modelli col metodo dei Minimi Quadrati »Stima dei modelli col metodo della Massima Verosimiglianza Scelta del modello ottimo e sua validazione Scelta del modello ottimo e sua validazione »Analisi della complessità »Analisi dei residui: bianchezza dellerrore »Confronto di diversi modelli Algoritmi di identificazione ricorsivi e con oblio Algoritmi di identificazione ricorsivi e con oblio Linterfaccia grafica ident Linterfaccia grafica ident

3 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Introduzione Tipicamente un problema di identificazione inizia dopo aver progettato un set significativo di prove sperimentali ed aver raccolto una serie di dati dal sistema in esame. Tipicamente un problema di identificazione inizia dopo aver progettato un set significativo di prove sperimentali ed aver raccolto una serie di dati dal sistema in esame. In questa presentazione supporremo sempre un approccio Black Box al problema dellidentificazione; in altre parole, ci muoveremo come se non sapessimo nulla della fisica del sistema che genera i dati. In questa presentazione supporremo sempre un approccio Black Box al problema dellidentificazione; in altre parole, ci muoveremo come se non sapessimo nulla della fisica del sistema che genera i 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 è: 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 è: » load nomefile Ciò renderà i dati sperimentali disponibili nel Workspace della sessione di Matlab attiva. Ciò renderà i dati sperimentali disponibili nel Workspace della sessione di Matlab attiva.

4 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Esempio Guida Nel seguito, tutti gli esempi presentati faranno riferimento ad uno specifico sistema, che ora introduciamo. Nel seguito, tutti gli esempi presentati faranno riferimento ad uno specifico sistema, che ora introduciamo. I dati sono stati raccolti simulando un sistema AR(3), asintoticamente stabile: I dati sono stati raccolti simulando un sistema AR(3), asintoticamente stabile: con. con. I dati raccolti dalla simulazione sono stati memorizzati in due vettori chiamati ingresso (per il segnale e(t)) ed uscita (per il segnale y(t)), ognuno contenente campioni. I dati raccolti dalla simulazione sono stati memorizzati in due vettori chiamati ingresso (per il segnale e(t)) ed uscita (per il segnale y(t)), ognuno contenente campioni. Sulla base di tali dati si calcolerà il predittore e, nellipotesi che il vero meccanismo di generazione dei dati sia ignoto, si vedrà come impostare la stima parametrica e non parametrica di un modello. Infine si passerà alla validazione del modello scelto. Sulla base di tali dati si calcolerà il predittore e, nellipotesi che il vero meccanismo di generazione dei dati sia ignoto, si vedrà come impostare la stima parametrica e non parametrica di un modello. Infine si passerà alla validazione del modello scelto.

5 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Rappresentazione e trattamento dei dati sperimentali Per iniziare, viene creato un oggetto iddata dove vengono salvati i dati. Questo oggetto consentirà di porre in ununica struttura le diverse informazioni, cui si potrà accedere (come in unusuale struttura C) con la notazione puntata Per iniziare, viene creato un oggetto iddata dove vengono salvati i dati. Questo oggetto consentirà di porre in ununica struttura le diverse informazioni, cui si potrà accedere (come in unusuale struttura C) con la notazione puntata nomemodello.proprietà nomemodello.proprietà Il comando Matlab è: >> mymod=iddata(uscita,ingresso,1); Il comando Matlab è: >> mymod=iddata(uscita,ingresso,1); Con il comando >> get(mymod) si visualizzano a video tutte le proprietà dei dati. Con il comando >> get(mymod) si visualizzano a video tutte le proprietà dei dati. Analogamente, il comando >> set(mymod) consente allutente di modificare le proprietà dei dati. Analogamente, il comando >> set(mymod) consente allutente di modificare le proprietà dei dati.

6 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Rappresentazione e trattamento dei dati sperimentali La prima operazione da farsi sui dati prima di intraprendere la fase di identificazione vera e propria è la rimozione di eventuali trend presenti nei dati stessi. Nel caso dellesempio 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: La prima operazione da farsi sui dati prima di intraprendere la fase di identificazione vera e propria è la rimozione di eventuali trend presenti nei dati stessi. Nel caso dellesempio 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: >> figure % creo una figura in cui plottare i dati >> figure % creo una figura in cui plottare i dati >> subplot(2,1,1) %divido la figura in 2 parti in cui plotterò uscita e ingresso originali e senza trend >> subplot(2,1,1) %divido la figura in 2 parti in cui plotterò uscita e ingresso originali e senza trend >> plot(ingresso(1:100)); % grafico sulla finestra di grafico creata i primi 100 campioni del segnale in ingresso >> plot(ingresso(1:100)); % grafico sulla finestra di grafico creata i primi 100 campioni del segnale in ingresso >> hold on; % mantengo aperta la figura corrente per plottare lingresso dopo il detrend nella stessa finestra >> y=detrend(ingresso); %assegno alla variabile y i valori dellingresso da cui viene rimosso il trend >> y=detrend(ingresso); %assegno alla variabile y i valori dellingresso da cui viene rimosso il trend >> plot(y(1:100),'r') %grafico nella stessa finestra i campioni dellingresso dopo il detrend in rosso >> plot(y(1:100),'r') %grafico nella stessa finestra i campioni dellingresso dopo il detrend in rosso >> hold off; % rilascio la figura corrente >> subplot(2,1,2) %creo una seconda finestra nella figura >> subplot(2,1,2) %creo una seconda finestra nella figura >> plot(uscita(1:100)); % grafico sulla finestra di grafico creata i primi 100 campioni del segnale in uscita >> plot(uscita(1:100)); % grafico sulla finestra di grafico creata i primi 100 campioni del segnale in uscita >> hold on ; % mantengo aperta la figura corrente per plottare lusicta dopo il detrend nella stessa finestra >> u=detrend(uscita); %assegno alla variabile u i valori delluscita da cui viene rimosso il trend >> u=detrend(uscita); %assegno alla variabile u i valori delluscita da cui viene rimosso il trend >> plot(u(1:100),'r') %gafico nella stessa finestra i campioni dellingresso dopo il detrend in rosso >> plot(u(1:100),'r') %gafico nella stessa finestra i campioni dellingresso dopo il detrend in rosso >> hold off; % rilascio la figura corrente

7 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Rappresentazione e trattamento dei dati sperimentali - la funzione detrend - In generale, la funzione detrend (utilizzata nellesempio precedente per rimuovere il valor medio) offre la possibilità di rimuovere diversi tipi di trend In generale, la funzione detrend (utilizzata nellesempio precedente per rimuovere 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 è un oggetto iddata; mod è un oggetto iddata; o è lordine 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 lineari, con o=2 i trend quadratici e così via; aumentando il valore del parametro o vengono rimossi trend polinomiali di ordine crescente. o è lordine 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 lineari, con o=2 i trend quadratici e così via; aumentando il valore del parametro o vengono rimossi trend polinomiali di ordine crescente. 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). Specificando nel parametro breakpoint gli estremi della porzione di dati a cui applicare il detrend si può applicare la funzione solo alla parte dei dati di interesse. Loutput della funzione new_mod è un oggetto iddata che conterrà tutti i segnali contenuti in quello di partenza mod privati del trend. Loutput della funzione new_mod è un oggetto iddata che conterrà tutti i segnali contenuti in quello di partenza mod privati del trend.

8 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Rappresentazione e trattamento dei dati sperimentali Nella figura vediamo il risultato delloperazione di detrend sullesempio 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 delluscita.

9 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Calcolo del predittore Si vuole ora ottenere, a partire dai dati raccolti, una predizione dei valori futuri delluscita del processo mediante un modello (MA,AR(X),ARMA(X)) che lutente può scegliere per descrivere i dati raccolti. Si vuole ora ottenere, a partire dai dati raccolti, una predizione dei valori futuri delluscita del processo mediante un modello (MA,AR(X),ARMA(X)) che lutente 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: modello è il tipo di modello che si è scelto per descrivere il meccanismo di generazione dei dati; dove: modello è il tipo di modello che si è scelto per descrivere il meccanismo di generazione dei dati; dati è un oggetto di tipo iddata; dati è un oggetto di tipo iddata; k è lorizzonte predittivo; k è lorizzonte predittivo; init è la modalità di inizializzazione; se init ='estimate lo stato iniziale è fissato al valore che minimizza lerrore di predizione associato al modello ed ai dati; init = 'zero' fissa lo stato iniziale a zero; init = 'model' usa lo stato inziale del modello che viene automaticamente salvato alla sua creazione. init è la modalità di inizializzazione; se init ='estimate lo stato iniziale è fissato al valore che minimizza lerrore di predizione associato al modello ed ai dati; init = 'zero' fissa lo stato iniziale a zero; init = 'model' usa lo stato inziale del modello che viene automaticamente salvato alla sua creazione. Loutput è: yhat, un ogetto iddata i cui OutputData sono i valori predetti. Loutput è: yhat, un ogetto iddata i cui OutputData sono i valori predetti.

10 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Calcolo del predittore A partire dai primi 5000 dati raccolti nel vettore uscita, generati per simulazione tramite lesempio guida, si identifica un modello AR(3). Per lidentificazione del Matlab utilizza, in questo caso, lalgoritmo dei Minimi Quadrati. Se si fosse desiderato identificare, invece, un modello ARMA, Matlab avrebbe ricorso allalgoritmo della Massima Verosimiglianza. A partire dai primi 5000 dati raccolti nel vettore uscita, generati per simulazione tramite lesempio guida, si identifica un modello AR(3). Per lidentificazione del Matlab utilizza, in questo caso, lalgoritmo dei Minimi Quadrati. Se si fosse desiderato identificare, invece, un modello ARMA, Matlab avrebbe ricorso allalgoritmo della Massima Verosimiglianza. >> modello = ar(uscita(1:5000),[3]); >> modello = ar(uscita(1:5000),[3]); In questo modo si è identificato il modello AR(3). Questo modello può essere utilizzato per formare la predizione. In una prima fase, la predizione viene effettuata sui primi 5000 dati, gli stessi usati per lidentificazione: In questo modo si è identificato il modello AR(3). Questo modello può essere utilizzato per formare la predizione. In una prima fase, la predizione viene effettuata sui primi 5000 dati, gli stessi usati per lidentificazione: >> yhat = predict(modello,[ingresso(1:5000);uscita(1:5000)],2,estimate); >> yhat = predict(modello,[ingresso(1:5000);uscita(1:5000)],2,estimate); In una seconda fase, la predizione viene effettuata sui restanti dati,così da avere un criterio oggettivo di valutazione della bontà predittiva del modello: In una seconda fase, la predizione viene effettuata sui restanti dati,così da avere un criterio oggettivo di valutazione della bontà predittiva del modello: >> compare(yhat,modello,2,5001: end); >> compare(yhat,modello,2,5001: end);

11 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Calcolo del predittore Nella figura si vede il confronto tra la seconda metà dei dati e valori predetti delluscita in base al modello AR(3) stimato.

12 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Stima non parametrica In questa sezione ci occuperemo di stimare alcune caratteristiche del meccanismo di generazione dati (a noi noto solo attraverso una sua realizzazione) in modo non parametrico, senza passare attraverso lidentificazione preventiva di un modello. In questa sezione ci occuperemo di stimare alcune caratteristiche del meccanismo di generazione dati (a noi noto solo attraverso una sua realizzazione) in modo non parametrico, senza passare attraverso lidentificazione preventiva di un modello. Il primo passo per avere informazioni sulle caratteristiche del sistema è fare una stima della funzione di covarianza campionaria. Ciò si ottiene col comando: Il primo passo per avere informazioni sulle caratteristiche del sistema è fare una stima della funzione di covarianza campionaria. Ciò si ottiene col comando: >>Gammahat = covf(mymod, 1); >>Gammahat = covf(mymod, 1); dove: mymod è un iddata che contiene i dati in ingresso e in uscita; dove: mymod è un iddata che contiene i dati in ingresso e in uscita; 1 indica che. Il valore di questo parametro (nellesempio 1) decrementato di 1 sarà dunque il valore di 1 indica che. Il valore di questo parametro (nellesempio 1) decrementato di 1 sarà dunque il valore di Con 1, dunque, stimeremo la varianza campionaria. Con 1, dunque, stimeremo la varianza campionaria. In questo caso, con i dati dellesempio guida, si ottiene: In questo caso, con i dati dellesempio guida, si ottiene:

13 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Stima non parametrica Il passo successivo della stima non parametrica è lanalisi spettrale diretta. Il passo successivo della stima non parametrica è lanalisi spettrale diretta. Un primo strumento per stimare lo spettro in questo modo è il periodogramma. A partire dai dati in esame, coi comandi Un primo strumento per stimare lo spettro in questo modo è il periodogramma. A partire dai dati in esame, coi comandi >> [Pyy,w] = periodogram(uscita(1:1024)); >> [Pyy,w] = periodogram(uscita(1:1024)); >> plot(w,Pyy) >> plot(w,Pyy) viene calcolato e graficato il periodogramma a partire da 1024 campioni delluscita del sistema. Dato che, numericamente, il calcolo del periodogramma si basa sulla Fast Fourier Transform (FFT), per ottimizzare lalgoritmo è consigliabile utilizzare un numero di campioni che sia una potenza di 2. viene calcolato e graficato il periodogramma a partire da 1024 campioni delluscita del sistema. Dato che, numericamente, il calcolo del periodogramma si basa sulla Fast Fourier Transform (FFT), per ottimizzare lalgoritmo è consigliabile utilizzare un numero di campioni che sia una potenza di 2.

14 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Stima non parametrica In questa figura si vede il grafico del periodogramma calcolato su 1024 campioni delluscita del processo. La densità spettrale di potenza stimata viene graficata come funzione delle frequenze w, la cui unità di misura, in Matlab, è [rad/sample].

15 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Stima non parametrica Comè noto, la stima dello spettro via periodogramma soffre di diversi problemi, da cui deriva lestrema irregolarità del grafico. Comè noto, la stima dello spettro via periodogramma soffre di diversi problemi, da cui deriva lestrema irregolarità del grafico. Uno dei rimedi più noti per ottenere stime più regolari dello spettro è utilizzare il metodo di Bartlett, ovvero suddividere i dati in diverse sottosequenze, calcolare il periodogramma di ognuna di esse, e ricavare la stima globale dello spettro come media di questi nuovi periodogrammi. Uno dei rimedi più noti per ottenere stime più regolari dello spettro è utilizzare il metodo di Bartlett, ovvero suddividere i dati in diverse sottosequenze, calcolare il periodogramma di ognuna di esse, e ricavare la stima globale dello spettro come media di questi nuovi periodogrammi. Ciò si ottiene, in Matlab, con il comando: Ciò si ottiene, in Matlab, con il comando: >> [Pyy,w]= pwelch(uscita(1:1024),bartlett(256),0); >> [Pyy,w]= pwelch(uscita(1:1024),bartlett(256),0); dove bartlett(256) indica che il tipo di finestra scelta è quella di bartlett (molte altre sono disponibili, ognuna ha delle caratteristiche peculiari che non discuteremo in questa sede) e che i campioni in ogni sottosequenza sono 256; dove bartlett(256) indica che il tipo di finestra scelta è quella di bartlett (molte altre sono disponibili, ognuna ha delle caratteristiche peculiari che non discuteremo in questa sede) e che i campioni in ogni sottosequenza sono 256; 0 è il parametro con cui scegliere il numero di campioni di overlap. Il valore 0 indica che non si utilizzano finestre parzialmente sovrapposte. 0 è il parametro con cui scegliere il numero di campioni di overlap. Il valore 0 indica che non si utilizzano finestre parzialmente sovrapposte. Matlab offre molte altre funzioni per la stima non parametrica della densità spettrale di potenza (per una panoramica esaustiva si rimanda alla System Identification Toolbox Users Guide). Matlab offre molte altre funzioni per la stima non parametrica della densità spettrale di potenza (per una panoramica esaustiva si rimanda alla System Identification Toolbox Users Guide).

16 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Stima non parametrica In questa figura si vede il periodogramma stimato col metodo di Bartlett, con 4 sottosequenze da 256 dati luna. Si può apprezzare la riduzione delle fluttuazioni. Aumentando il numero delle sottosequenze il diagramma è via via più regolare.

17 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Stima non parametrica della risposta in frequenza Matlab consente anche la stima della risposta in frequenza del sistema a partire dai dati. Con la funzione spa : >>g = spa (data) Matlab consente anche la stima della risposta in frequenza del sistema a partire dai dati. Con la funzione spa : >>g = spa (data) dove data è un vettore che contiene campioni di una realizzazione del processo in esame, si ottiene in output g, che contiene tale stima: dove data è un vettore che contiene campioni di una realizzazione del processo in esame, si ottiene in output g, 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/Ts, dove Ts è il tempo di campionamento (1 nel contesto in esame), ma possono essere anche scelte dallutente (nel qual caso dovranno essere passate come ulteriore parametro alla funzione spa). w = [1:128]/128*pi/Ts, dove Ts è il tempo di campionamento (1 nel contesto in esame), ma possono essere anche scelte dallutente (nel qual caso dovranno essere passate come ulteriore parametro alla funzione spa). Con il comando >> bode (g) Con il comando >> bode (g) si ottiene il diagramma di Bode di modulo e fase della risposta in frequenza stimata. si ottiene il diagramma di Bode di modulo e fase della risposta in frequenza stimata.

18 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Stima parametrica Passiamo ora ad analizzare le tecniche di identificazione parametrica, ovvero i metodi di identificazione che mirano a descrivere il meccanismo di generazione dati ignoto mediante un modello di una data famiglia (MA, AR(X), ARMA(X), ecc.). Passiamo ora ad analizzare le tecniche di identificazione parametrica, ovvero i metodi di identificazione che mirano a descrivere il meccanismo di generazione dati ignoto mediante un modello di una data famiglia (MA, 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): >> modello = ar (data, n, metodo) >> modello = ar (data, n, metodo) dove: data è un oggetto iddata che contiene i campioni di ingresso e uscita; dove: data è un oggetto iddata che contiene i campioni di ingresso e uscita; n è lordine del modello; n è lordine del modello; metodo permette di scegliere lalgoritmo da utilizzare. Le opzioni più metodo permette di scegliere lalgoritmo 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 a che, 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.

19 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Stima 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: >> modello = armax(dati,'na',na,'nb',nb,'nc',nc,'nk',nk) >> modello = armax(dati,'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 unopportuna scelta degli ordini delle diverse parti (AR, MA, X), Con unopportuna 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 sullalgoritmo della Massima Verosimiglianza (MLE). La procedura di stima si basa sullalgoritmo della Massima Verosimiglianza (MLE).

20 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Scelta del modello ottimo e sua validazione In base alle funzioni viste nella precedente sezione, procederemo ora a stimare diversi modelli per descrivere i dati dellesempio. Si tratterà poi di scegliere il modello ottimo, sia dal punto di vista della complessità sia dal punto di vista della famiglia di modelli. Si sappia che i dati utilizzati nellesempio sono stati generati da un AR(3). In base alle funzioni viste nella precedente sezione, procederemo ora a stimare diversi modelli per descrivere i dati dellesempio. Si tratterà poi di scegliere il modello ottimo, sia dal punto di vista della complessità sia dal punto di vista della famiglia di modelli. Si sappia che i dati utilizzati nellesempio sono stati generati da un AR(3). Stimiamo 4 diversi modelli: un AR(1), un AR(3), un MA(3) ed un ARMA(1,2): Stimiamo 4 diversi modelli: un AR(1), un AR(3), un MA(3) ed un 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);

21 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Scelta del modello ottimo e sua validazione Prima di tutto occorre comprendere quale sia la famiglia di modelli cui è più probabile appartenga il meccanismo di generazione dati. Prima di tutto occorre comprendere quale sia la famiglia di modelli cui è più probabile appartenga il meccanismo di generazione dati. Per far ciò, analizziamo lerrore di predizione, sapendo che il caso ottimo è quello in cui lerrore di predizione è un rumore bianco. Per far ciò, analizziamo lerrore di predizione, sapendo che il caso ottimo è quello in cui lerrore 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(m2,uscita) >> resid(m3,uscita) >> resid(m4,uscita) Tale funzione calcola lerrore di predizione commesso dal predittore associato al modello e ne valuta la funzione di autocorrelazione. Il grafico mostra i valori di tale funzione rispetto ad un intervallo di confidenza del 99%. Se lerrore è bianco, pertanto, ci aspettiamo che tutti i valori della funzione di autocorrelazione, ad eccezione ovviamente del primo, siano nulli, o comunque sufficientemente piccoli da restare allinterno dellintervallo di confidenza. Tale funzione calcola lerrore di predizione commesso dal predittore associato al modello e ne valuta la funzione di autocorrelazione. Il grafico mostra i valori di tale funzione rispetto ad un intervallo di confidenza del 99%. Se lerrore è bianco, pertanto, ci aspettiamo che tutti i valori della funzione di autocorrelazione, ad eccezione ovviamente del primo, siano nulli, o comunque sufficientemente piccoli da restare allinterno dellintervallo di confidenza.

22 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Scelta del modello ottimo e sua validazione La figura mostra lanalisi dei residui prima descritta nel caso del modello AR(1). Come si vede lerrore di predizione non è bianco, coerentemente col fatto che il meccanismo di generazione dati reale è un AR(3).

23 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Scelta del modello ottimo e sua validazione La figura mostra lanalisi dei residui prima descritta nel caso del modello MA(3). Come si vede lerrore di predizione non è bianco, coerentemente col fatto che il meccanismo di generazione dati reale è un AR(3).

24 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Scelta del modello ottimo e sua validazione La figura mostra lanalisi dei residui prima descritta nel caso del modello ARMA(1,2). Come si vede lerrore di predizione non è bianco, coerentemente col fatto che il meccanismo di generazione dati reale è un AR(3).

25 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Scelta del modello ottimo e sua validazione La figura mostra lanalisi dei residui prima descritta nel caso del modello AR(3). Come si vede lerrore di predizione in questo caso è bianco (si vede che lunico campione della funzione di autocorrelazione diverso da zero è il primo), coerentemente col fatto che il meccanismo di generazione dati reale è proprio un AR(3).

26 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Scelta del modello ottimo e sua validazione Una volta individuata la famiglia di modelli, nel nostro caso AR(n), occorre determinare la complessità ottima. Esaminiamo le funzioni Matlab che consentono questa analisi, applicandole ai modelli della famiglia AR con ordine n = 1,...,10. Una volta individuata la famiglia di modelli, nel nostro caso AR(n), occorre determinare la complessità ottima. Esaminiamo le funzioni Matlab che consentono questa analisi, applicandole ai modelli della famiglia AR con ordine n = 1,...,10. Per fare ciò utilizziamo i criteri noti, ovvero il Final Prediction Error (FPE) e lAkaike Information Criterion (AIC). Per fare ciò utilizziamo i criteri noti, ovvero il Final Prediction Error (FPE) e lAkaike Information Criterion (AIC). I comandi Matlab >> aic(modello) I comandi Matlab >> 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.

27 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Scelta del modello ottimo e sua validazione La figura mostra landamento di FPE al variare dellordine. Coerentemente con quanto ci si aspetta, lordine che ottimizza questo criterio nel caso dellesempio guida è n =3.

28 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Algoritmi di identificazione ricorsivi e con oblio Spesso, per ottimizzare i tempi di calcolo, è opportuno utilizzare algoritmi ricorsivi per lidentificazione, ad esempio il Recursive Least Square Algorithm (RLS). Allo stesso modo, spesso si vuole poter agire sul peso relativo dei dati, attribuendo importanza minore ai dati lontani nel tempo. Ciò si realizza introducendo il coefficiente doblio. Spesso, per ottimizzare i tempi di calcolo, è opportuno utilizzare algoritmi ricorsivi per lidentificazione, ad esempio il Recursive Least Square Algorithm (RLS). Allo stesso modo, spesso si vuole poter agire sul peso relativo dei dati, attribuendo importanza minore ai dati lontani nel tempo. Ciò si realizza introducendo il coefficiente doblio. 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 prima metà dei dati utilizzando lalgoritmo RLS. In questo caso si è usata lopzione ff (leggi: forgetting factor), che utilizza un coefficiente di oblio, fissato, in questo caso, a fornisce una stima dei parametri di un modello AR(3), costruito a partire dalla prima metà dei dati utilizzando lalgoritmo RLS. In questo caso si è usata lopzione ff (leggi: forgetting factor), che utilizza un coefficiente di oblio, fissato, in questo caso, a Gli output di questa funzione sono est, che è una matrice la cui k-esima riga contiene i parametri stimati al tempo k (ovvero stimati in base ai dati fino al k- esimo incluso); yhat è il vettore che contiene la predizione delluscita secondo il modello stimato. Si può valutarne la bontà analizzando lerrore di tale predizione sulla seconda metà dei dati (non utilizzati nella stima del modello). Gli output di questa funzione sono est, che è una matrice la cui k-esima riga contiene i parametri stimati al tempo k (ovvero stimati in base ai dati fino al k- esimo incluso); yhat è il vettore che contiene la predizione delluscita secondo il modello stimato. Si può valutarne la bontà analizzando lerrore di tale predizione sulla seconda metà dei dati (non utilizzati nella stima del modello).

29 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Linterfaccia grafica Per concludere questa breve panoramica sul System Identification Toolbox, introduciamo la GUI che questo tool offre. Per concludere questa breve panoramica sul System Identification Toolbox, introduciamo la GUI che questo tool offre. Per aprirla occorre scrivere al prompt Per aprirla occorre scrivere al prompt >> ident >> ident Questa è linterfaccia che si presenta allutente

30 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Linterfaccia grafica Per analizzare i dati occorre importarli: il menù a tendina Data consente Per analizzare i dati occorre importarli: il menù a tendina Data consente di importare i dati dal Workspace di Matlab. di importare i dati dal Workspace di Matlab. E offerta allutente la possibilità di pretrattare i dati importati, secondo le modalità indicate nel menù posto sotto alla scritta Operations (si possono rimuovere i trend, selezionare solo alcune variabili da analizzare, effettuare dei prefiltraggi, ecc.). E offerta allutente la possibilità di pretrattare i dati importati, secondo le modalità indicate nel menù posto sotto alla scritta Operations (si possono rimuovere i trend, selezionare solo alcune variabili da analizzare, effettuare dei prefiltraggi, ecc.). Dopo aver scelto i dati da analizzare si possono costruire delle stime sia parametriche sia non parametriche, come specificato nelle opzioni del menù a tendina Estimate Dopo aver scelto i dati da analizzare si possono costruire delle stime sia parametriche sia non parametriche, come specificato nelle opzioni del menù a tendina Estimate E possibile, inoltre, importare dei modelli creati precedentemente in Matlab (mediante lopzione import del menù Models ). E possibile, inoltre, importare dei modelli creati precedentemente in Matlab (mediante lopzione import del menù Models ).

31 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Linterfaccia grafica Scegliendo lopzione di identificazione parametrica, per esempio, si apre una finestra di dialogo in cui scegliere il tipo di modello e il suo ordine: Scegliendo lopzione di identificazione parametrica, per esempio, si apre una finestra di dialogo in cui scegliere il tipo di modello e il suo ordine:

32 - IMAD - Politecnico di Milano: System Identification Toolbox di Matlab- Linterfaccia grafica Una volta creati i modelli, essi vengono visualizzati nei riquadri sotto la scritta Models. Selezionando una delle caselle sotto la scritta Model Views si possono valutare e confrontare le caratteristiche dei diversi modelli (analizzare gli errori di predizione, valutare la risposta allimpulso e allo scalino dei vari modelli, le risposte in frequenza dei modelli stimati, ecc.) Una volta creati i modelli, essi vengono visualizzati nei riquadri sotto la scritta Models. Selezionando una delle caselle sotto la scritta Model Views si possono valutare e confrontare le caratteristiche dei diversi modelli (analizzare gli errori di predizione, valutare la risposta allimpulso e allo scalino dei vari modelli, le risposte in frequenza dei modelli stimati, ecc.) Dunque questa interfaccia è uno strumento utile ed intuitivo per la fase iniziale di analisi in una procedura reale di indentificazione. E ovvio, peraltro, che ogni singolo problema avrà delle peculiarità che, quasi sempre, richiederanno unanalisi studiata ad hoc, per la quale sarà necessario creare nuove funzioni Matlab che sfruttino le potenzialità del Toolbox ma siano orientate alla specifica applicazione. Dunque questa interfaccia è uno strumento utile ed intuitivo per la fase iniziale di analisi in una procedura reale di indentificazione. E ovvio, peraltro, che ogni singolo problema avrà delle peculiarità che, quasi sempre, richiederanno unanalisi studiata ad hoc, per la quale sarà necessario creare nuove funzioni Matlab che sfruttino le potenzialità del Toolbox ma siano orientate alla specifica applicazione.


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

Presentazioni simili


Annunci Google