Comments
Description
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.