View Full Version : identificazione di modelli
serbring
29-06-2009, 16:29
ho misurato delle grandezze dal quale ho calcolato una funzione di risposta in frequenza. Da questa devo stimarne il modello continuo. Utilizzando matlab ho trovato dei modelli che devo validare. Sapete come posso fare per validare un modello continuo?
la butto lì:
Distanza, nello spazio delle fasi, tra i punti misurati e quelli predetti dal modello che vuoi validare.
Se per esempio dalle misure ottieni x(t) e v(t) a tempi discreti da un campionamento, campioni la risposta del modello allo stesso passo e valuti la distanza dai punti alla stessa posizione sul piano O (x,v).
potrebbe essere un'idea di quanto i dati estratti dal modello si allontanano istante per istante dal dato reale.
serbring
29-06-2009, 23:23
la butto lì:
Distanza, nello spazio delle fasi, tra i punti misurati e quelli predetti dal modello che vuoi validare.
Se per esempio dalle misure ottieni x(t) e v(t) a tempi discreti da un campionamento, campioni la risposta del modello allo stesso passo e valuti la distanza dai punti alla stessa posizione sul piano O (x,v).
potrebbe essere un'idea di quanto i dati estratti dal modello si allontanano istante per istante dal dato reale.
è praticamente quello che fà il comando resid in matlab, che per i modelli continui non funziona. Al che avevo pensato di trovare un modello discreto piuttosto che uno continuo, solamente che non riesco a capire cosa mi cambierebbe a livello pratico oltre ad avere la variabile Z anzichè la variabile S. I parametri che otterrei con un modello continuo sono uguali a quelli che otterrei con un modello discreto?
hakermatik
30-06-2009, 01:03
è praticamente quello che fà il comando resid in matlab, che per i modelli continui non funziona. Al che avevo pensato di trovare un modello discreto piuttosto che uno continuo, solamente che non riesco a capire cosa mi cambierebbe a livello pratico oltre ad avere la variabile Z anzichè la variabile S. I parametri che otterrei con un modello continuo sono uguali a quelli che otterrei con un modello discreto?
bhe cambia tutto.
Ad esempio, se un sistema continuo si definisce stabile quando i suoi poli sono minori di zero, un sistemo tempo discreto si definisce stabile quando i suoi poli sono IN MODULO minori di 1... (vabbè, questa è una definizione generica di stabilità)...
Praticamente i parametri ti cambiano tutti direi. Però il guadagno in continua resta invariato...
Attenzione però al metodo che usi per discretizzare il tuo sistema...con alcuni metodi può accadere che poli stabili del sistema continuo vengano mappati in poli instabili nel sistema tempo discreto. Poi naturalmente ci sono metodi che preservano la stabilità del sistema anche discretizzandolo (ad esempio la regola di tustin)
Cmq se ti può essere utile, in matlab per discretizzare un sistema si usa il comando C2D, e puoi scegliere anche il metodo di discretizzazione...
Buon lavoro!
hakermatik
30-06-2009, 01:07
cmq, per l'identificazione e la validazione di modelli prova ad usare il system identification toolbox, digita IDENT e vedi un pò se ne ricavi qualcosa...
serbring
30-06-2009, 08:53
cmq, per l'identificazione e la validazione di modelli prova ad usare il system identification toolbox, digita IDENT e vedi un pò se ne ricavi qualcosa...
lo sto già usando il system identification toolbox, però ho notato che dicendogli di plottare i residui del modello, matlab mi dice che il comando non è valido per i modelli continui. Al che mi chiedo come faccio a validare un modello continuo? Non sono un mago con l'inglese, ma a leggendo questo link mi sembra che il comando resid dovrebbe esistere anche per i modelli continui. http://www.mathworks.com/access/helpdesk/help/toolbox/ident/index.html?/access/helpdesk/help/toolbox/ident/gs/bqyzc00.html&http://www.google.it/search?hl=it&client=firefox-a&rls=org.mozilla%3Ait%3Aofficial&hs=Yu3&q=matlab+Continuous+Time+data+resid&btnG=Cerca&meta=
serbring
30-06-2009, 08:55
bhe cambia tutto.
Ad esempio, se un sistema continuo si definisce stabile quando i suoi poli sono minori di zero, un sistemo tempo discreto si definisce stabile quando i suoi poli sono IN MODULO minori di 1... (vabbè, questa è una definizione generica di stabilità)...
Praticamente i parametri ti cambiano tutti direi. Però il guadagno in continua resta invariato...
Attenzione però al metodo che usi per discretizzare il tuo sistema...con alcuni metodi può accadere che poli stabili del sistema continuo vengano mappati in poli instabili nel sistema tempo discreto. Poi naturalmente ci sono metodi che preservano la stabilità del sistema anche discretizzandolo (ad esempio la regola di tustin)
Cmq se ti può essere utile, in matlab per discretizzare un sistema si usa il comando C2D, e puoi scegliere anche il metodo di discretizzazione...
Buon lavoro!
avevo provato ad usare il comando d2c, identificando un modello discreto, validandolo analizzando i residui e poi convertendolo in continuo. Solamente che poi mi cambia gli ordini del numeratore e del denominatore della funzione di trasferimento del modello
hakermatik
30-06-2009, 11:49
avevo provato ad usare il comando d2c, identificando un modello discreto, validandolo analizzando i residui e poi convertendolo in continuo. Solamente che poi mi cambia gli ordini del numeratore e del denominatore della funzione di trasferimento del modello
scusa, in che senso ti cambia gli ordini? fammi un esempio che forse ho capito che intendi...
serbring
30-06-2009, 12:24
scusa, in che senso ti cambia gli ordini? fammi un esempio che forse ho capito che intendi...
cioè che se ho il numeratore di primo e grado ed il den di secondo grado, ottengo il numeratore o il denominatore di ordine differente. e quindi non riesco a confrontarlo con il modello teorico. Capito?
hakermatik
30-06-2009, 14:52
cioè che se ho il numeratore di primo e grado ed il den di secondo grado, ottengo il numeratore o il denominatore di ordine differente. e quindi non riesco a confrontarlo con il modello teorico. Capito?
si ho capito...ma puoi farmi un esempio REALE di quello che ti accade? forse è succeso anche a me quello che dici, ma è solo questione di notazione...
cmq se usi C2D usa l'opzione "matched" come metodo di discretizzazione...
serbring
30-06-2009, 15:11
si ho capito...ma puoi farmi un esempio REALE di quello che ti accade? forse è succeso anche a me quello che dici, ma è solo questione di notazione...
cmq se usi C2D usa l'opzione "matched" come metodo di discretizzazione...
ok adesso ci lavoro un attimo e te lo mostro. Non lo conoscevo questo modello di discretizzazione, forse era per quello che la forma della funzione di trasferimento non coincideva tra quella discreta e quella continua. Cmq è corretto identificare un modello discreto e poi convertirlo in continuo? Ci può essere qualche problema?
hakermatik
30-06-2009, 16:13
ok adesso ci lavoro un attimo e te lo mostro. Non lo conoscevo questo modello di discretizzazione, forse era per quello che la forma della funzione di trasferimento non coincideva tra quella discreta e quella continua. Cmq è corretto identificare un modello discreto e poi convertirlo in continuo? Ci può essere qualche problema?
se discretizzando non ottieni poli instabili non dovrebbero esserci grosso problemi.
Se non ricordo male dovresti stare attento nella scelta del tempo di campionamento.
Se può esserti utile dovrei avere una vecchia dispensa del corso di controllo digitale...però la cerco stasera. Se mi mandi la tua mail in pvt te la mando.
Cmq fammi vedere un esempio (se puoi) che mi è venuta in mente una cosa.
hakermatik
30-06-2009, 16:26
cmq quello che intendo io è che alcune volte matlab esprime i polinomi di denominatore e numeratore in maniera strana:
Ad esempio se il polinomio al denominatore in Z deve essere 2*z^2 +1 ricordo che usando ident alcune volte mi restituiva 2 + 1*z^-2 . E lo stesso faceva per il numeratore. Allora bastava moltiplicare numeratore e denominatore per Z^2 e tornava tutto...
Non so se hai lo stesso problema...
serbring
09-07-2009, 10:50
cmq quello che intendo io è che alcune volte matlab esprime i polinomi di denominatore e numeratore in maniera strana:
Ad esempio se il polinomio al denominatore in Z deve essere 2*z^2 +1 ricordo che usando ident alcune volte mi restituiva 2 + 1*z^-2 . E lo stesso faceva per il numeratore. Allora bastava moltiplicare numeratore e denominatore per Z^2 e tornava tutto...
Non so se hai lo stesso problema...
ciao rieccomi, son stato un po' impegnato perchè ho avuto un altra urgenza al lavoro. Comunque ho fatto come hai detto te ed in effetti con l'opzione matched è tutto ok,
questo è la fdt discreta calcolata partendo dai dati discreti
caso dd
0.1992 z - 0.1313
----------------------
z^2 - 1.778 z + 0.7962
questi son gli zeri
0.6593
questi sono i poli
0.8891 + 0.0751i
0.8891 - 0.0751i
questa è la fdt continua convertita da quella discreta
caso dc
11.82 s + 318.8
---------------------
s^2 + 14.76 s + 84.25
questi son gli zeri
-26.9745
questi sono i poli
-7.3813 + 5.4557i
-7.3813 - 5.4557i
mentre questa è la fdt calcolata partendo dai dati continui
caso cc
8.134 s + 353.7
---------------------
s^2 + 15.77 s + 93.17
questi sono gli zeri
-43.4859
questi sono i poli
-7.8869 + 5.5649i
-7.8869 - 5.5649i
Con il comando matched tutto torna, anche se il sistema non è più stabile. Non ho capito come potrei garantire la stabiltà del sistema avendo cura di scegliere il tempo di campionamento. Intendi il tempo di campionamento nel definire l'oggetto idfrd?
grazie per la disponibilità
hakermatik
09-07-2009, 11:44
scusa non ho capito. Se usi matched il sistema ti diventa instabile? Ma i sistemi che hai postato sono tutti stabili...se non vedo male io.
ma forse non ho capito?
hakermatik
09-07-2009, 11:52
senti, devo aver fatto confusione io mi sa.
Prova a discretizzare con tustin. Sicuramente deve darti un sistema stabile (se lo è quello di partenza)...
Ti mando le dispense del mio corso tra un pò...se ti servono ancora...
serbring
09-07-2009, 13:08
senti, devo aver fatto confusione io mi sa.
Prova a discretizzare con tustin. Sicuramente deve darti un sistema stabile (se lo è quello di partenza)...
Ti mando le dispense del mio corso tra un pò...se ti servono ancora...
ho provato, solamente che poi cambia l'ordine del numeratore e del denominatore della fdt.
Ti ringrazio gli appunti mi potrebbero far comodo
hakermatik
10-07-2009, 14:28
ciao, ti ho mandato un messaggio privato con le slides...
Fammi sapere!
serbring
17-08-2009, 00:31
c'è una cosa che non sono riuscito a capire....Ma da una funzione di trasferimento discreta come riesco a calcolare la frf? Sò che se è continua devo sostituire s=jw, mentre in una discreta come faccio?
P. S.
Mi puoi rimandare gli appunti che per errore li ho cancellati ed ho anche cancellato il messaggio che mi avevi mandato che avevo la casella piena?
Grazie
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.