...

identificazione di sistemi dinamici

by user

on
Category: Documents
12

views

Report

Comments

Transcript

identificazione di sistemi dinamici
IDENTIFICAZIONE DI SISTEMI
DINAMICI
MARTINA FAVARO
Dipartimento di Ingegneria dell’Informazione,
Università di Padova
Lezione n.3
RAPPRESENTAZIONE E TRATTAMENTO DEI
DATI SPERIMENTALI
Costruiamo un oggetto che rappresenta un ’set di dati’ su cui eseguire
l’identificazione.
La costruzione corretta richiede l’uscita,l’ingresso e il periodo di campionamento che di default é pari a 1.
data=iddata(y,u,Ts);
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.
La funzione detrend offre la possibilitá di rimuovere diversi tipi di trend:
2
newdata=detrend(data,type,breakpoint);
dove:
data é un oggetto iddata;
type é l’ordine del trend da rimuovere.
Di default type=0, in questo caso si rimuove il trend di “ordine 0”, ossia la
media del segnale; con type=1 si possono rimuovere i trend lineari, con
type=2 i trend quadratici e cosı́ via. Aumentando il valore di type vengono rimossi trend polinomiali di ordine crescente.
É possibile decidere su quali parti 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.
L’output newdata é un oggetto iddata che conterrá tutti i segnali contenuti in quello di partenza data privati del trend.
I dati disponibili devono essere suddivisi in dati per l’identificazione e dati
per la validazione del modello.
IDENTIFICAZIONE PARAMETRICA
Analizziamo le tecniche di identificazione parametrica , ovvero i metodi di
identificazione che mirano a descrivere il meccanismo di generazione dei
dati ignoto mediante un modello di una data famiglia (MA,AR,ARMA...).
Esaminiamo alcuni dei modelli utilizzati pi frequentemente e le relative routine di identificazione:
• ARX: A(z)y(t) = B(z)u(t − nk) + e(t)
A(z) = 1 + a1z−1 + · · · + ana z−na , B(z) = b1 + b2z−1 + · · · + bnb z−nb+1.
model=arx(data,[na nb nk])
• ARMAX: A(z)y(t) = B(z)u(t − nk) +C(z)e(t)
A(z) = 1 + a1z−1 + · · · + ana z−na , B(z) = b1 + b2z−1 + · · · + bnb z−nb+1,
3
C(z) = 1 + c1z−1 + · · · + cnc z−nc .
model=armax(data,[na nb nc nk])
B(z)
• OE: y(t) = F(z) u(t − nk) + e(t)
B(z) = b1 + b2z−1 + · · · + bnb z−nb+1, F(z) = 1 + f1z−1 + · · · + fn f z−n f
model=oe(data,[nb nf nk])
• BJ:
B(z)
C(z)
y(t) = F(z) u(t − nk) + D(z) e(t)
B(z) = b1 + b2z−1 + · · · + bnb z−nb+1, F(z) = 1 + f1z−1 + · · · + fn f z−n f ,
C(z) = 1 + c1z−1 + · · · + cnc z−nc , D(z) = 1 + d1z−1 + · · · + dnd z−nd
model=bj(data,[nb nc nd nf nk])
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 dei dati.
Per fare ció analizziamo l’errore di predizione sapendo che il modello ottimo é quello in cui l’errore di predizione é un rumore bianco.
A tal fine utilizziamo il seguente comando matlab
>> resid(model,data)
Calcola l’errore di predizione commesso dal predittore associato al modello
e ne valuta la funzione di autocorrelazione
4
Correlation function of residuals. Output Temperature
1
0.5
0
−0.5
0
5
10
15
20
25
lag
Cross corr. function between input Power and residuals from output Temperature
0.5
0
−0.5
−30
−20
−10
0
lag
10
20
30
Il primo grafico mostra i valori di tale funzione rispetto ad un intervallo di
confidenza del 99%. Se l’errore é bianco ci aspettiamo che tutti i valori
della funzione di autocorrelazione, ad eccezione ovviamnete del primo,
siano nulli o cmq sufficientemente piccoli da restare nell’intervallo di confidenza.
Il secondo grafico mostra la cross-correlazione tra l’errore e l’input.
Naturalmente vogliamo che lo stesso test di bianchezza funzioni non solo
sui dati con cui abbiamo identificato il modello ma anche sui restanti che
abbiamo conservato per la validazione per cui applicheremo anchea loro il
resid.
INTERFACCIA GRAFICA
Il System Identification Toolbox si presenta con un front-end grafico e con
una collezione di funzioni.
Per avviare l’ambiente grafico usare il comando
>> ident
e per una demo interattiva il comando
>> iddemo
(selezionare il demo 1).La dimostrazione interattiva guida l’utente passo
passo nell’identificazione di un modello ARX a partire da dati reali e nella
relativa validazione.
Avviamo l’interfaccia grafica:
• Per analizzare i dati occorre importarli:il menú DATA consente di importare i dati dal workspace di matlab
5
• É possibile pretrattare i dati importati secondo le modalitá riportate nel
menú sotto la scritta OPERATIONS (si possono rimuovere trend...)
• Dopo aver scelto i dati da analizzare si possono costruire delle stime
sia non parametriche che parametriche come specificato nel menú
delle opzioni ESTIMATE.
• É possibile inoltre importare dei modelli creati precedentemente in
matlab( mediante l’opzione IMPORT del menú MODELS)
• Scegliendo l’opzione di identificazione parametrica si apre una finestra di dialogo in cui scegliere il tipodi modello e il suo ordine.
• 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, per esempio analizzare gli errori di predizione...
Si tratta di uno strumento utile e intuitivo per la fase iniziale di analisi in una
procedura reale di identificazione.
Fly UP