[MATLAB] Identificazione modello
ho una funzione di trasferimento nel quale devo identificare un modello. Ho trovato nel quale almeno confrontando l'andamento con i valori misurati sembra andare abbastanza bene, solamente che vorrei un metodo che mi quantificasse la bontà. L'analisi dei residui può esser sufficiente?
ho provato ad usare il comando residue nel seguente modo:
con:
fp: vettore delle frequenze
hp: vettore dei valori complessi della funzione di trasferimento
num e den sono i gradi del modello
solamente che ottengo il seguente errore:
Resid cannot be applied to Continuous Time data.
ho provato ad usare il comando residue nel seguente modo:
hpidfrd=idfrd(hp,2*pi*fp,0); modarx=arx(hpidfrd,[num+1 den]) resid(hpidfrdiddata,modarx)
con:
fp: vettore delle frequenze
hp: vettore dei valori complessi della funzione di trasferimento
num e den sono i gradi del modello
solamente che ottengo il seguente errore:
Resid cannot be applied to Continuous Time data.
Risposte
Ciao, l'analisi dei residui fa semplicemente il calcolo dell'errore quadratico medio tra l'uscita generata dal tuo modello e quella simulata. E' un indicatore di certo buono però secondo me devi tenere conto di almeno altri 3 parametri: usa il diagramma poli-zeri per vedere se ci sono delle cancellazioni polo-zero che indicano una sovraparametrizzazione del tuo modello..guarda come seconda cosa la complessità che è il numero di coefficienti utilizzati dal tuo modello, più è complesso, più realizzandolo i costi aumenterebbero, come ultima cosa non poco importante guarderei l'incertezza sui parametri che indica l'affidabilità del tuo modello..
Mai sentito parlare dell'interfaccia "ident" di matlab!?Ti tornerebbe veramente utile, c'è tutto a parte il calcolo delle incertezze sui residui e la verifica delle condizioni di persistente eccitazione.
Se hai bisogno di chiarimenti chiedi pure..ho sostenuto l'esame di "Identificazione dei modelli e analisi dei dati" da poco!
Ciao ciao
Mai sentito parlare dell'interfaccia "ident" di matlab!?Ti tornerebbe veramente utile, c'è tutto a parte il calcolo delle incertezze sui residui e la verifica delle condizioni di persistente eccitazione.
Se hai bisogno di chiarimenti chiedi pure..ho sostenuto l'esame di "Identificazione dei modelli e analisi dei dati" da poco!
Ciao ciao
"pinc86":
Ciao, l'analisi dei residui fa semplicemente il calcolo dell'errore quadratico medio tra l'uscita generata dal tuo modello e quella simulata. E' un indicatore di certo buono però secondo me devi tenere conto di almeno altri 3 parametri: usa il diagramma poli-zeri per vedere se ci sono delle cancellazioni polo-zero che indicano una sovraparametrizzazione del tuo modello..guarda come seconda cosa la complessità che è il numero di coefficienti utilizzati dal tuo modello, più è complesso, più realizzandolo i costi aumenterebbero, come ultima cosa non poco importante guarderei l'incertezza sui parametri che indica l'affidabilità del tuo modello..
Mai sentito parlare dell'interfaccia "ident" di matlab!?Ti tornerebbe veramente utile, c'è tutto a parte il calcolo delle incertezze sui residui e la verifica delle condizioni di persistente eccitazione.
Se hai bisogno di chiarimenti chiedi pure..ho sostenuto l'esame di "Identificazione dei modelli e analisi dei dati" da poco!
Ciao ciao
Ciao, ti rispondo solo ora perchè non avevo notato la risposta. In che senso devo vedere la mappa poli e zeri per vedere se ci sono delle cancellazioni? Queste cancellazioni cosa mi comportano? Ed invece come controllo l'incertezza sui parametri?
L'interfaccia ident la conosco, ma preferisco il codice solo perchè una volta scritto lo script fà tutto in automotico.
Comunque poi ho provato a crearmi un modello discreto, ho controllato i residui e successivamente l'ho convertito in un modello in continuo con il comando d2c. Ti mostro il diagramma dei residui
http://www.megaportal.it/imghost/2009/0 ... 130882.jpg
Dici che è buono? Mi sembra di aver capito che il diagramma è buono è sotto l'area gialla vero? Solo che in alcuni intervalli di frequenze l'area in giallo sparisce. E' normale?
caro serbring,
il grafico ottenuto è leggermente diverso da quello che si apre automaticamente con l'interfaccia ident, fatto sta che la bianchezza mi sembra abbastanza lontana in quei picchi
..La media è buona perchè cade in un intervallo compreso approssimativamente tra 0.01 e 0.5..ma cm ti avevo detto visto che il residuo è il discostamento della tua uscita simulata da quella "validata" (cioè basata sul calcolo dei campioni che tu hai inserito"), in certi punti tu hai che il modello in condizioni di operatività non seguirebbe una variazione anche notevole dell'ingresso con tutte le conseguenze del caso..
Comunque io proverei anche con gli altri modelli per vedere come vanno..Di soliuto un Armax ti aggiusta tutto in questi casi anche perchè questi picchi sono ben discostati tra loro, ma hanno una rilevanza significativa soprattutto per frequenze elevate..
Se usi l'interfaccia ident la cosa si semplifica notevolmente..è veramente utile..
Ti consiglio di organizzare i tuoi dati in vettori colonna..uno per gli ingressi e uno per le uscite..Se poi hai un numero sufficiente di campioni (>800), suddividi a metà i campioni sia in ingresso che in uscita, poi usane metà per la simulazione e l'altra metà per la validazione. Se no non facendo così rischi di progetare un modello che funziona bene per i dati su cui stai lavorando, ma che poi operativamente su altri dati creerebbe problemi nel controllo..
Se hai bisogno di chiarimenti comunque non esitare
.
Ciao ciao
il grafico ottenuto è leggermente diverso da quello che si apre automaticamente con l'interfaccia ident, fatto sta che la bianchezza mi sembra abbastanza lontana in quei picchi

Comunque io proverei anche con gli altri modelli per vedere come vanno..Di soliuto un Armax ti aggiusta tutto in questi casi anche perchè questi picchi sono ben discostati tra loro, ma hanno una rilevanza significativa soprattutto per frequenze elevate..
Se usi l'interfaccia ident la cosa si semplifica notevolmente..è veramente utile..
Ti consiglio di organizzare i tuoi dati in vettori colonna..uno per gli ingressi e uno per le uscite..Se poi hai un numero sufficiente di campioni (>800), suddividi a metà i campioni sia in ingresso che in uscita, poi usane metà per la simulazione e l'altra metà per la validazione. Se no non facendo così rischi di progetare un modello che funziona bene per i dati su cui stai lavorando, ma che poi operativamente su altri dati creerebbe problemi nel controllo..
Se hai bisogno di chiarimenti comunque non esitare

Ciao ciao
"pinc86":
caro serbring,
il grafico ottenuto è leggermente diverso da quello che si apre automaticamente con l'interfaccia ident, fatto sta che la bianchezza mi sembra abbastanza lontana in quei picchi..La media è buona perchè cade in un intervallo compreso approssimativamente tra 0.01 e 0.5..ma cm ti avevo detto visto che il residuo è il discostamento della tua uscita simulata da quella "validata" (cioè basata sul calcolo dei campioni che tu hai inserito"), in certi punti tu hai che il modello in condizioni di operatività non seguirebbe una variazione anche notevole dell'ingresso con tutte le conseguenze del caso..
Comunque io proverei anche con gli altri modelli per vedere come vanno..Di soliuto un Armax ti aggiusta tutto in questi casi anche perchè questi picchi sono ben discostati tra loro, ma hanno una rilevanza significativa soprattutto per frequenze elevate..
Se usi l'interfaccia ident la cosa si semplifica notevolmente..è veramente utile..
Ti consiglio di organizzare i tuoi dati in vettori colonna..uno per gli ingressi e uno per le uscite..Se poi hai un numero sufficiente di campioni (>800), suddividi a metà i campioni sia in ingresso che in uscita, poi usane metà per la simulazione e l'altra metà per la validazione. Se no non facendo così rischi di progetare un modello che funziona bene per i dati su cui stai lavorando, ma che poi operativamente su altri dati creerebbe problemi nel controllo..
Se hai bisogno di chiarimenti comunque non esitare.
Ciao ciao
ciao Pinc,
grazie mille per la risposta,
ho provato ad usare il comando armax, ma mi dice che non può essere usato su frequency response data. I risulti mostrati solo per il modello oe ma ho usato anche i modelli arx e pem.
Ecco il residual plot che creato con l'interfaccia ident.
http://www.megaportal.it/imghost/2009/0 ... 227240.jpg
Sinceramente non ho capito molto il significato di quei due grafici. Del primo che avevo postato (quello con i picchi gialli), praticamente l'area gialla cosa mi indica? La linea è la media di cosa?
Se uso il modello pem ottengo questo risultato:
http://www.megaportal.it/imghost/2009/0 ... 229239.jpg
E' migliore? Considera che l'eccitazione del mio sistema aveva un frequenza variabile da 0,2 Hz, quindi è comprensibile che a frequenze inferiori di 0,2Hz la bontà del modello non'è ottimale
Nel grafico che ti ho mostrato in questo plot, cosa mi indica la linea tratteggiata?
Inoltre a me serve un modello continuo. Posso validare il modello discreto e poi convertirlo in continuo?
Hai per caso delle dispense in cui posso vedere queste cose?
Ehm...I grafici che hai ottenuto non erano molto logici...Forse il problema sta proprio nel fatto che i dati da cui vai ad attingere sono continui...La piattaforma ident è creata per analizzare e lavorare con sistemi a dati campionati e quindi non può funzionare nel tempo continuo per il semplice fatto che il sistema non riuscirebbe a risolvere la "mole" di calcoli nel tempo previsto in tempo continuo, difatti per il teorema........."un sistema controllato non può avere un'uscita che dipende dall'ingresso nello stesso istante ma dipenderà dall'istante k se siamo nell'istante k+1...non può funzionare.
Rimango molto perplesso sul fatto dell'uso del PEM...Ti conviene usare solamente modelli parametrici e cioè ARX,ARMAX,BJ e OE..Il funzionamento di questi è semplice..Empiricamente il più apprezzato come funzionalità è l'ARX..Se non devi implementare fisicamente il modello anche l'ARMAX che per un progetto reale andrebbe però ad aumentare notevolmente i costi del progetto in quanto con l'ARX hai un polinomio di definzione in meno..Più completo di tutti è il Box-Jenkins che però provando vari progetti o funziona bene subito o non funziona...
A questo punto non so fino a quanto posso esserti di aiuto..Io in programmazione non sono ancora bravino...dovresti farti un programmino che a partire da un sistema a tempo continuo ti estrapoli dei campioni da mettere in un file comodo da usare tipo un .dat e poi da lì lavorare con l'interfaccia ident...
Comunque tornando alla tua prima domanda iniziale, il primo post, ti dice che non si possono applicare i residui al tempo-continuo proprio per il problema che ti dicevo..non puoi utilizzare un modello che lavora bene a tempo continuo..Gli unici che sono implementati sono un sistema di controllo chiamato RLS che però fa solamente un controllo a "tempo-continuo" ho messo tra virgolette perchè il suo funzionamento è di campionare velocemente il segnale a tempo continuo per compiere controlli sul processo in atto, ma non fornisce previsioni.
Fammi sapere
Ciao ciao
Rimango molto perplesso sul fatto dell'uso del PEM...Ti conviene usare solamente modelli parametrici e cioè ARX,ARMAX,BJ e OE..Il funzionamento di questi è semplice..Empiricamente il più apprezzato come funzionalità è l'ARX..Se non devi implementare fisicamente il modello anche l'ARMAX che per un progetto reale andrebbe però ad aumentare notevolmente i costi del progetto in quanto con l'ARX hai un polinomio di definzione in meno..Più completo di tutti è il Box-Jenkins che però provando vari progetti o funziona bene subito o non funziona...
A questo punto non so fino a quanto posso esserti di aiuto..Io in programmazione non sono ancora bravino...dovresti farti un programmino che a partire da un sistema a tempo continuo ti estrapoli dei campioni da mettere in un file comodo da usare tipo un .dat e poi da lì lavorare con l'interfaccia ident...
Comunque tornando alla tua prima domanda iniziale, il primo post, ti dice che non si possono applicare i residui al tempo-continuo proprio per il problema che ti dicevo..non puoi utilizzare un modello che lavora bene a tempo continuo..Gli unici che sono implementati sono un sistema di controllo chiamato RLS che però fa solamente un controllo a "tempo-continuo" ho messo tra virgolette perchè il suo funzionamento è di campionare velocemente il segnale a tempo continuo per compiere controlli sul processo in atto, ma non fornisce previsioni.
Fammi sapere
Ciao ciao
"pinc86":
Ehm...I grafici che hai ottenuto non erano molto logici...Forse il problema sta proprio nel fatto che i dati da cui vai ad attingere sono continui...La piattaforma ident è creata per analizzare e lavorare con sistemi a dati campionati e quindi non può funzionare nel tempo continuo per il semplice fatto che il sistema non riuscirebbe a risolvere la "mole" di calcoli nel tempo previsto in tempo continuo, difatti per il teorema........."un sistema controllato non può avere un'uscita che dipende dall'ingresso nello stesso istante ma dipenderà dall'istante k se siamo nell'istante k+1...non può funzionare.
Rimango molto perplesso sul fatto dell'uso del PEM...Ti conviene usare solamente modelli parametrici e cioè ARX,ARMAX,BJ e OE..Il funzionamento di questi è semplice..Empiricamente il più apprezzato come funzionalità è l'ARX..Se non devi implementare fisicamente il modello anche l'ARMAX che per un progetto reale andrebbe però ad aumentare notevolmente i costi del progetto in quanto con l'ARX hai un polinomio di definzione in meno..Più completo di tutti è il Box-Jenkins che però provando vari progetti o funziona bene subito o non funziona...
A questo punto non so fino a quanto posso esserti di aiuto..Io in programmazione non sono ancora bravino...dovresti farti un programmino che a partire da un sistema a tempo continuo ti estrapoli dei campioni da mettere in un file comodo da usare tipo un .dat e poi da lì lavorare con l'interfaccia ident...
Comunque tornando alla tua prima domanda iniziale, il primo post, ti dice che non si possono applicare i residui al tempo-continuo proprio per il problema che ti dicevo..non puoi utilizzare un modello che lavora bene a tempo continuo..Gli unici che sono implementati sono un sistema di controllo chiamato RLS che però fa solamente un controllo a "tempo-continuo" ho messo tra virgolette perchè il suo funzionamento è di campionare velocemente il segnale a tempo continuo per compiere controlli sul processo in atto, ma non fornisce previsioni.
Fammi sapere
Ciao ciao
Ciao, io non devo implementare il sistema, devo solamente trovare l'equazione matematica della funzione di trasferimento e per far questo ho bisogno di un modello continuo, ma io parto da valori campionati frutto di alcune misurazioni che ho fatto. Successivamente con il comando idfrd ho definito una risposta in frequenza continua, dal quale ho trovato una serie di modelli continui usando i modelli pem, oe, arx ecc.
Inoltre per fare una prova ho usato il comando idfrd per definire una risposta in frequenza discreta, poi ho calcolato il modello discresco sempre usando i modelli pem, oe, arx, dal quale ho estrapolato i grafici dei residui che ti ho mostrato. Dopo di che ho convertito la funzione di trasferimento trovata da discreta a continua. Come risultato ho ottenuto che le due funzioni di trasferimento sono molto simili tra loro. Allora ho deciso di trovare un modello discreto, validarlo ed infine convertirlo in continuo.
Ora i miei dubbi sono:
Come faccio a validare un modello discreto?
Devo usare i grafici che ti ho postato? Come faccio a riconoscere se il modello è buono?
Grazie, scusami se ti faccio molte domande, ma è da un po' che vago nel web in cerca di informazioni con scarsi risultati
Ho capito finalmente il problema..Domani ho un esame e sto facendo le ore piccole..Appena torno su internet in qst giorni cmq ti rispondo..Comunque ti ripeto che fai quasi tutto con "ident"..Ti spiegherò meglio a breve!Ciao ciao
"pinc86":
Ho capito finalmente il problema..Domani ho un esame e sto facendo le ore piccole..Appena torno su internet in qst giorni cmq ti rispondo..Comunque ti ripeto che fai quasi tutto con "ident"..Ti spiegherò meglio a breve!Ciao ciao
grazie mille pinc. In bocca al lupo per l'esame
Attendo tue notizie.
ciao
Ciao serbring, allora tu parti con i tuoi dati campionati che saranno suppongo in un file ***.dat giusto!?
Bene allora innanzitutto l'equazione matematica che ti viene fornita dai modelli di calcolo è in forma polinomiale: una parte per l'errore associato alle misurazioni (rumore di fondo, errore degli strumenti, rumore termico...) e una parte per il dato rilevato vero e proprio.
I modelli FIR e OE sono i più scarni..più semplici e meno costosi ma difficilmente funzionano..Gli Arx sono i più usati e funzionali e hanno una funzione polinomiale che modella leggermente la parte di errore..Gli Armax e i Box-Jenkins(BJ) sono i più complessi ma quelli da tenere di solito in considerazione sono ARX e ARMAX.
I tuoi dati spero siano in forma "matriciale", allora li estrai in questo modo:
Innanzitutto carichi il file:
load ***.dat-ascii;
poi ti crei i vettori ingresso e uscita:
u=xxx(:,1);
y=xxx(:,2);
bene ora controlli che sia verificata la persistente eccitazione (significa quanto i tuoi dati eccitano tutte le frequenze del sistema ma mi avevi detto qualcosa di simile quindi dovresti saper fare) e poi apri ident.
Da interfaccia ident ora carichi i tuoi dati con "Data --> Import" e metti ingressi --> u e uscita --> y..poi poni il sampling interval al valore del campionamento dei tuoi dati, di solito rimane a 1..
Bene ora hai i tuoi dati importati, di fianco dove c'è Preprocess, selezioni remove means in modo da eliminare un'eventuale componente continua associata al segnale..
Ora che hai fatto ciò se hai un numero di campioni elevato li spezzi a metà in modo da fare la bozza di modello con i primi e validarli coi secondi..
Quindi fai Select Range, sempre dove c'è preprocess..Occhio che ad es se hai mille dati devi selezionare prima da 0 a 499 e poi da 500 a 999!!!
Bene ora trascini la prima metà in working data e la seconda metà sull'altra finestrella bianca dei validation data..
Ora tenendo evidenziati i dati del primo range, cominci a calcolare i possibili modelli.
Ti consiglio vivamente di partire con gli ARX che hanno la magnifica funzione di calcolo automatica..Tu metti quanti poli al massimo vuoi per ogni polinomio es se ne vuoi al massimo 10 per ogni coefficiente metti 1:10 1:10 1:10 e lui ti calcola tutti i possibili modelli..tu estrapoli solo quelli calcolati dal grafico che ti salta fuori che normalmente sono i migliori..devi fare un compromesso tra l'MDL e il Best-Fit..
Poi con gli altri modelli invece provi a mettere dei valori a caso senza mai eccedere..di norma non più di 10 per ogni n*...
Bene ora che sulla parte destra dell'interfaccia avrai i tuoi modelli di qualunque tipo con le funzioni sotto verifichi prima autocorrelazione e crosscorrelazione..devono essere entro i limiti, ma se non è possibile guardi la soluzione migliore,poi guardi le risposte al transitorio e guardi se all'eccitazione del gradino i modelli reagiscono.
Successivamente guardi il diagramma poli-zeri..questo è molto importante(insieme all'auto e cross correlazione) perchè ti segnala:
1- se i poli sono esterni al cerchio unitario il modello definito è instabile
2- se ci sono dei poli-zeri sovrapposti vuol dire che c'è stata una sovraparametrizzazione, cioè che hai dei coefficienti in più di cui puoi fare a meno..
Bene ora i modelli che secondo te sono migliori li trascini nella casella "To Workspace" così ce li hai disponibili in matlab
Poi da matlab bisogna verificare quanto i parametri sono affidabili, questo perchè capita che un modello che ti sembra buonissimo ha in realtà delle incertezze sui parametri definiti troppo elevate...
Bene ora da Matlab usi la funzione Polydata: [A,B,C,D,F,dA,dB,dC,dD,dF]=POLYDATA(xxxxxx) dove in xxxxxx ci va il nome di ogni modello che andrai a testare es. arx12101
Ora per ogni modello guardi dove ci sono valori semplicemente scrivendo: A= , B= e così via..
Questo ovviamente anche per i dA, dB...
ora fai per ogni sottofunzione del polinomio cioè per ogni A, B, C,... questa formula che ti esprime l'incertezza massima sui parametri:
max(100*abs(dA./A)) l'esempio te l'ho fatto per A ma iterandolo per tutti gli altri ottieni l'incertezza massima per ogni parametro
te l'ho messo in questa forma così è gia in percentuale l'incertezza..
Così dovresti avere gli elementi principali per costruire il tuo modello discreto..
Spero di essere stato chiaro
Ciao ciao
Bene allora innanzitutto l'equazione matematica che ti viene fornita dai modelli di calcolo è in forma polinomiale: una parte per l'errore associato alle misurazioni (rumore di fondo, errore degli strumenti, rumore termico...) e una parte per il dato rilevato vero e proprio.
I modelli FIR e OE sono i più scarni..più semplici e meno costosi ma difficilmente funzionano..Gli Arx sono i più usati e funzionali e hanno una funzione polinomiale che modella leggermente la parte di errore..Gli Armax e i Box-Jenkins(BJ) sono i più complessi ma quelli da tenere di solito in considerazione sono ARX e ARMAX.
I tuoi dati spero siano in forma "matriciale", allora li estrai in questo modo:
Innanzitutto carichi il file:
load ***.dat-ascii;
poi ti crei i vettori ingresso e uscita:
u=xxx(:,1);
y=xxx(:,2);
bene ora controlli che sia verificata la persistente eccitazione (significa quanto i tuoi dati eccitano tutte le frequenze del sistema ma mi avevi detto qualcosa di simile quindi dovresti saper fare) e poi apri ident.
Da interfaccia ident ora carichi i tuoi dati con "Data --> Import" e metti ingressi --> u e uscita --> y..poi poni il sampling interval al valore del campionamento dei tuoi dati, di solito rimane a 1..
Bene ora hai i tuoi dati importati, di fianco dove c'è Preprocess, selezioni remove means in modo da eliminare un'eventuale componente continua associata al segnale..
Ora che hai fatto ciò se hai un numero di campioni elevato li spezzi a metà in modo da fare la bozza di modello con i primi e validarli coi secondi..
Quindi fai Select Range, sempre dove c'è preprocess..Occhio che ad es se hai mille dati devi selezionare prima da 0 a 499 e poi da 500 a 999!!!
Bene ora trascini la prima metà in working data e la seconda metà sull'altra finestrella bianca dei validation data..
Ora tenendo evidenziati i dati del primo range, cominci a calcolare i possibili modelli.
Ti consiglio vivamente di partire con gli ARX che hanno la magnifica funzione di calcolo automatica..Tu metti quanti poli al massimo vuoi per ogni polinomio es se ne vuoi al massimo 10 per ogni coefficiente metti 1:10 1:10 1:10 e lui ti calcola tutti i possibili modelli..tu estrapoli solo quelli calcolati dal grafico che ti salta fuori che normalmente sono i migliori..devi fare un compromesso tra l'MDL e il Best-Fit..
Poi con gli altri modelli invece provi a mettere dei valori a caso senza mai eccedere..di norma non più di 10 per ogni n*...
Bene ora che sulla parte destra dell'interfaccia avrai i tuoi modelli di qualunque tipo con le funzioni sotto verifichi prima autocorrelazione e crosscorrelazione..devono essere entro i limiti, ma se non è possibile guardi la soluzione migliore,poi guardi le risposte al transitorio e guardi se all'eccitazione del gradino i modelli reagiscono.
Successivamente guardi il diagramma poli-zeri..questo è molto importante(insieme all'auto e cross correlazione) perchè ti segnala:
1- se i poli sono esterni al cerchio unitario il modello definito è instabile
2- se ci sono dei poli-zeri sovrapposti vuol dire che c'è stata una sovraparametrizzazione, cioè che hai dei coefficienti in più di cui puoi fare a meno..
Bene ora i modelli che secondo te sono migliori li trascini nella casella "To Workspace" così ce li hai disponibili in matlab
Poi da matlab bisogna verificare quanto i parametri sono affidabili, questo perchè capita che un modello che ti sembra buonissimo ha in realtà delle incertezze sui parametri definiti troppo elevate...
Bene ora da Matlab usi la funzione Polydata: [A,B,C,D,F,dA,dB,dC,dD,dF]=POLYDATA(xxxxxx) dove in xxxxxx ci va il nome di ogni modello che andrai a testare es. arx12101
Ora per ogni modello guardi dove ci sono valori semplicemente scrivendo: A= , B= e così via..
Questo ovviamente anche per i dA, dB...
ora fai per ogni sottofunzione del polinomio cioè per ogni A, B, C,... questa formula che ti esprime l'incertezza massima sui parametri:
max(100*abs(dA./A)) l'esempio te l'ho fatto per A ma iterandolo per tutti gli altri ottieni l'incertezza massima per ogni parametro
te l'ho messo in questa forma così è gia in percentuale l'incertezza..
Così dovresti avere gli elementi principali per costruire il tuo modello discreto..
Spero di essere stato chiaro
Ciao ciao
"pinc86":
Ciao serbring, allora tu parti con i tuoi dati campionati che saranno suppongo in un file ***.dat giusto!?
Bene allora innanzitutto l'equazione matematica che ti viene fornita dai modelli di calcolo è in forma polinomiale: una parte per l'errore associato alle misurazioni (rumore di fondo, errore degli strumenti, rumore termico...) e una parte per il dato rilevato vero e proprio.
I modelli FIR e OE sono i più scarni..più semplici e meno costosi ma difficilmente funzionano..Gli Arx sono i più usati e funzionali e hanno una funzione polinomiale che modella leggermente la parte di errore..Gli Armax e i Box-Jenkins(BJ) sono i più complessi ma quelli da tenere di solito in considerazione sono ARX e ARMAX.
I tuoi dati spero siano in forma "matriciale", allora li estrai in questo modo:
Innanzitutto carichi il file:
load ***.dat-ascii;
poi ti crei i vettori ingresso e uscita:
u=xxx(:,1);
y=xxx(:,2);
fin qui ci sono
bene ora controlli che sia verificata la persistente eccitazione (significa quanto i tuoi dati eccitano tutte le frequenze del sistema ma mi avevi detto qualcosa di simile quindi dovresti saper fare)
questa cosa non la saprei fare. I mei dati sono una risposta in frequenza, ho una tabella in cui ho la frequenza in u ed in in y ho i valori complessi della fdt.
e poi apri ident.
Da interfaccia ident ora carichi i tuoi dati con "Data --> Import" e metti ingressi --> u e uscita --> y..poi poni il sampling interval al valore del campionamento dei tuoi dati, di solito rimane a 1..
Bene ora hai i tuoi dati importati, di fianco dove c'è Preprocess, selezioni remove means in modo da eliminare un'eventuale componente continua associata al segnale..
Ora che hai fatto ciò se hai un numero di campioni elevato li spezzi a metà in modo da fare la bozza di modello con i primi e validarli coi secondi..
Quindi fai Select Range, sempre dove c'è preprocess..Occhio che ad es se hai mille dati devi selezionare prima da 0 a 499 e poi da 500 a 999!!!Bene ora trascini la prima metà in working data e la seconda metà sull'altra finestrella bianca dei validation data..
Ora tenendo evidenziati i dati del primo range, cominci a calcolare i possibili modelli.
ho pochi campioni, circa un centinaio, quindi non credo che posso fare la cross validazione, giusto?
Ti consiglio vivamente di partire con gli ARX che hanno la magnifica funzione di calcolo automatica..Tu metti quanti poli al massimo vuoi per ogni polinomio es se ne vuoi al massimo 10 per ogni coefficiente metti 1:10 1:10 1:10 e lui ti calcola tutti i possibili modelli..tu estrapoli solo quelli calcolati dal grafico che ti salta fuori che normalmente sono i migliori..devi fare un compromesso tra l'MDL e il Best-Fit..
Poi con gli altri modelli invece provi a mettere dei valori a caso senza mai eccedere..di norma non più di 10 per ogni n*...
mi risulta che il modello migliore è più complicato di quello teorico che chiamo ARX623. Ti mostro un po' di grafici del modello più elaborato e di un modello che ha la stessa forma di quello teorico che chiamo ARX221
grafico del model output
http://www.megaportal.it/imghost/2009/0 ... 759385.bmp
grafico del model resids dall'interfaccia ident del modello arx221
http://www.megaportal.it/imghost/2009/0 ... 758397.bmp
grafico del model resids dall'interfaccia ident del modello arx623
http://www.megaportal.it/imghost/2009/0 ... 758431.bmp
Da quest'ultima tipologia di grafico cosa devo guardare affinchè possa dire che il modello è buono?
grafici del comando resid:
ARX 623
http://www.megaportal.it/imghost/2009/0 ... 758364.bmp
ARX221
http://www.megaportal.it/imghost/2009/0 ... 758327.bmp
Invece da quest'ultima tipologia di grafico cosa devo guardare affinchè possa dire che il modello è buono?
Bene ora che sulla parte destra dell'interfaccia avrai i tuoi modelli di qualunque tipo con le funzioni sotto verifichi prima autocorrelazione e crosscorrelazione..devono essere entro i limiti, ma se non è possibile guardi la soluzione migliore,poi guardi le risposte al transitorio e guardi se all'eccitazione del gradino i modelli reagiscono.
Successivamente guardi il diagramma poli-zeri..questo è molto importante(insieme all'auto e cross correlazione) perchè ti segnala:
1- se i poli sono esterni al cerchio unitario il modello definito è instabile
se il modello è instabile come posso risolvere il problema? E' da scartare?
2- se ci sono dei poli-zeri sovrapposti vuol dire che c'è stata una sovraparametrizzazione, cioè che ho dei coefficientidi cui puoi fare a meno..
Ti mostro la mappa dei poli e degli zeri di entrambi i modelli calcolati:
modello ARX221
http://www.megaportal.it/imghost/2009/0 ... 758679.bmp
modello ARX623
http://www.megaportal.it/imghost/2009/0 ... 758734.bmp
ti scrivo anche le due funzioni di trasferimento che ho trovato
modello ARX221 0.032661 (z-0.9824) ----------------------- (z^2 - 1.977z + 0.9771) modello ARX623 -1.2905e-007 z^2 (z-1.003) ----------------------------------------------------------------- (z-1.004) (z-1.03) (z^2 - 1.973z + 0.9731) (z^2 - 1.998z + 1.002)
quindi dal secondo modello potrei tranquillamente togliere uno zero al numeratore e scegliere un modello di tipo 613, giusto? Inoltre i due poli complessi e coniugati sono molto simili tra loro, li potrei trascurare tutti e due? L'instabilità del sistema come la posso sistemare?
Ho notato che matlab mi dà ha anche una fdt che lui chiama: Zero/pole/gain from input "v@y1" to output "y1":, è il modello per il rumore giusto?
Bene ora i modelli che secondo te sono migliori li trascini nella casella "To Workspace" così ce li hai disponibili in matlab
Poi da matlab bisogna verificare quanto i parametri sono affidabili, questo perchè capita che un modello che ti sembra buonissimo ha in realtà delle incertezze sui parametri definiti troppo elevate...
Bene ora da Matlab usi la funzione Polydata: [A,B,C,D,F,dA,dB,dC,dD,dF]=POLYDATA(xxxxxx) dove in xxxxxx ci va il nome di ogni modello che andrai a testare es. arx12101
Ora per ogni modello guardi dove ci sono valori semplicemente scrivendo: A= , B= e così via..
Questo ovviamente anche per i dA, dB...
ora fai per ogni sottofunzione del polinomio cioè per ogni A, B, C,... questa formula che ti esprime l'incertezza massima sui parametri:
max(100*abs(dA./A)) l'esempio te l'ho fatto per A ma iterandolo per tutti gli altri ottieni l'incertezza massima per ogni parametro
Questa incertezza dei parametri cosa mi indica praticamente? L'incertezza al max quanto deve valere?5%?
te l'ho messo in questa forma così è gia in percentuale l'incertezza..
Così dovresti avere gli elementi principali per costruire il tuo modello discreto..
Spero di essere stato chiaro
Ciao ciao
Grazie ancora pinc.
ciao!
Ho dato un'occhiata veloce..Allora io non ho mai trattato risposte in frequenza..A questo punto non so dirti proprio se l'interfaccia IDENT possa essere adatta ad un'analisi in frequenza..come ben saprai penso ci sono trasformazioni matematiche da fare per lavorare da dominio delle frequenze a quello dei tempi (e qui il bravo Fourier verrebbe in aiuto) però sinceramente mi viene il dubbio che avendo campioni che lavorano con la frequenza e non con istanti successivi, il modello in uso ti viene sbagliato..
IDENT è stato creato appositamente per analizzare sequenze di campioni, ma con campioni intesi come campionamento di un'uscita in funzione del tempo..
Invece nel tuo caso se non ho capito male tu hai semplicemente dei campioni che sono legati ad una frequenza indipendentemente dal tempo..O è un discorso del tipo ke a intervalli regolari misuri la riposta in frequenza di un dispositivo!?
Perchè se fosse così allora puoi utilizzarla, ma se è solo una sequenza di campioni dove per ogni frequenza hai un valore dell'uscita senza un collegamento temporale tra loro, non penso si possa utilizzare IDENT, anche perchè i grafici ottenuti sono un po' strani..
Una nota volevo farti per il diagramma Poli-Zeri.. A te interessa come ti ho detto che i poli ottenuti non eccedano il cerchio di raggio 1..e che non ci siano o non ci siano troppe cancellazioni polo-zero..ma nella foto che mi hai mandato sulle ordinate si arrivava fino a 0.15, quindi non potrei valutare...
Per quanto riguarda i grafici, mi viene da dirti che quello che hai analizzato tu, se è un'analisi frequenziale sia un dispositivo che attenua le frequenze alte e quindi sia un similare di un passa-basso..
I grafici ottenuti del 221 non sono buoni, quelli del 623 invece si, non guardare solamente la forma dei residui, guarda anche i valori..Per il 221 hai un *** x 10^4...che non è trascurabile..
Gli altri due grafici ottenuti non rieco ad interpretarli, non capisco a cosa si riferiscano..è percaso il model output!?
Se il modello è instabile, è assolutamente da scartare..immaginati un controllore di velocità di un'automobile che deve mantenere una tal velocità..ipotizza 100km/h sebben tu sia in discesa,salita,vento contro/a favore..Quando tu sei in discesa, se arrivi che sei già a 100 km/h il tuo controllo deve frenare giusto!?se invece accelera penso diventi un problema :=) ...
Come ultima cosa l'incertezza sui parametri ti indica anch'esso quanto un modello è affidabile..Di norma io tengo buono fino al 30%...
Fammi sapere
Ciao ciao
IDENT è stato creato appositamente per analizzare sequenze di campioni, ma con campioni intesi come campionamento di un'uscita in funzione del tempo..
Invece nel tuo caso se non ho capito male tu hai semplicemente dei campioni che sono legati ad una frequenza indipendentemente dal tempo..O è un discorso del tipo ke a intervalli regolari misuri la riposta in frequenza di un dispositivo!?
Perchè se fosse così allora puoi utilizzarla, ma se è solo una sequenza di campioni dove per ogni frequenza hai un valore dell'uscita senza un collegamento temporale tra loro, non penso si possa utilizzare IDENT, anche perchè i grafici ottenuti sono un po' strani..
Una nota volevo farti per il diagramma Poli-Zeri.. A te interessa come ti ho detto che i poli ottenuti non eccedano il cerchio di raggio 1..e che non ci siano o non ci siano troppe cancellazioni polo-zero..ma nella foto che mi hai mandato sulle ordinate si arrivava fino a 0.15, quindi non potrei valutare...
Per quanto riguarda i grafici, mi viene da dirti che quello che hai analizzato tu, se è un'analisi frequenziale sia un dispositivo che attenua le frequenze alte e quindi sia un similare di un passa-basso..
I grafici ottenuti del 221 non sono buoni, quelli del 623 invece si, non guardare solamente la forma dei residui, guarda anche i valori..Per il 221 hai un *** x 10^4...che non è trascurabile..
Gli altri due grafici ottenuti non rieco ad interpretarli, non capisco a cosa si riferiscano..è percaso il model output!?
Se il modello è instabile, è assolutamente da scartare..immaginati un controllore di velocità di un'automobile che deve mantenere una tal velocità..ipotizza 100km/h sebben tu sia in discesa,salita,vento contro/a favore..Quando tu sei in discesa, se arrivi che sei già a 100 km/h il tuo controllo deve frenare giusto!?se invece accelera penso diventi un problema :=) ...
Come ultima cosa l'incertezza sui parametri ti indica anch'esso quanto un modello è affidabile..Di norma io tengo buono fino al 30%...
Fammi sapere
Ciao ciao
"pinc86":
Ho dato un'occhiata veloce..Allora io non ho mai trattato risposte in frequenza..A questo punto non so dirti proprio se l'interfaccia IDENT possa essere adatta ad un'analisi in frequenza..come ben saprai penso ci sono trasformazioni matematiche da fare per lavorare da dominio delle frequenze a quello dei tempi (e qui il bravo Fourier verrebbe in aiuto) però sinceramente mi viene il dubbio che avendo campioni che lavorano con la frequenza e non con istanti successivi, il modello in uso ti viene sbagliato..
credo che IDENT vada bene anche per fare un'analisi in frequenza perchè quando vado ad importare i dati di input mi consente di importare anche risposte in frequenza (variabili di tipo IDFRD), c'è proprio scritto, quindi non penso che ci sia problemi, in tal senso.
IDENT è stato creato appositamente per analizzare sequenze di campioni, ma con campioni intesi come campionamento di un'uscita in funzione del tempo..
Invece nel tuo caso se non ho capito male tu hai semplicemente dei campioni che sono legati ad una frequenza indipendentemente dal tempo..O è un discorso del tipo ke a intervalli regolari misuri la riposta in frequenza di un dispositivo!?Perchè se fosse così allora puoi utilizzarla, ma se è solo una sequenza di campioni dove per ogni frequenza hai un valore dell'uscita senza un collegamento temporale tra loro, non penso si possa utilizzare IDENT, anche perchè i grafici ottenuti sono un po' strani.
in pratica ho fatto delle misure temporali campionate e poi con il software di acquisizione ho ricavato la risposta in frequenza. Ho trovato in giro delle pubblicazioni di persone che hanno utilizzato ad esempio il modello bj per modellare delle risposte in frequenza quindi credo che potrei farlo anche io, no? Quali grafici sono un po' strani? per quale motivo li vedi strani?
Una nota volevo farti per il diagramma Poli-Zeri.. A te interessa come ti ho detto che i poli ottenuti non eccedano il cerchio di raggio 1..e che non ci siano o non ci siano troppe cancellazioni polo-zero..ma nella foto che mi hai mandato sulle ordinate si arrivava fino a 0.15, quindi non potrei valutare...
i grafici li ho troncati per farti vedere meglio i poli, ma non ci sono poli al di fuori del grafico. Se io ho un polo di terzo grado all'origine, posso ridurre di due gradi, il grado al denominatore?
Per quanto riguarda i grafici, mi viene da dirti che quello che hai analizzato tu, se è un'analisi frequenziale sia un dispositivo che attenua le frequenze alte e quindi sia un similare di un passa-basso..
hai ragione il sistema è assimilabile ad un passa basso, è una vibrazione meccanica, alle altre frequenza, la massa limita le accelerazioni
I grafici ottenuti del 221 non sono buoni, quelli del 623 invece si, non guardare solamente la forma dei residui, guarda anche i valori..Per il 221 hai un *** x 10^4...che non è trascurabile..
cosa intendi per forma dei residui? Questa non l'ho proprio capita.
Gli altri due grafici ottenuti non rieco ad interpretarli, non capisco a cosa si riferiscano..è percaso il model output!?
se ti riferisci ai primi due grafici sono il model output che ottengo dall'interfaccia ident.
Se il modello è instabile, è assolutamente da scartare..immaginati un controllore di velocità di un'automobile che deve mantenere una tal velocità..ipotizza 100km/h sebben tu sia in discesa,salita,vento contro/a favore..Quando tu sei in discesa, se arrivi che sei già a 100 km/h il tuo controllo deve frenare giusto!?se invece accelera penso diventi un problema :=) ...
quindi se il sistema è instabile immagino che lo debba scartare, ma se il modello migliore è un [6 2 3], ma poi il modello risulta instabile, cosa dovrei fare? dovrei prendere un modello di un altro grado più basso? Agisco su nk?
Come ultima cosa l'incertezza sui parametri ti indica anch'esso quanto un modello è affidabile..Di norma io tengo buono fino al 30%...
Fammi sapere
Ciao ciao
te per l'esame hai studiato sul bittanti, oppure su una qualche dispensa del tuo prof?
Grazie ancora pinc.
ciao
Ciao,
ok allora è normale che la risposta sia strana..Ti spiego il perchè ti ho detto di guardare la forma dei residui..
Idealmente i residui nel "modello perfetto", dovrebbero essere una costante a zero..Cioè non dovresti averenessun discostamento tra uscita prevista e uscita reale..
E' ovvio che più la funzione dei residui è lontana dall'asse x, più il tuo modello non funziona bene..Di solito si hanno dei leggeri discostamenti, o al massimo qualche picco..Invece tu presenti dei discostamenti marcati e duraturi..Non so come dirtelo..Ma se integrassi i residui ti viene un valore non trascurabile..mentre deve tendere il più possibile a zero..
Per quanto riguarda il fatto sul cosa fare se un modello buono risulta instabile e invece uno peggiore è stabile..
Tu devi immaginare sempre di implementare il tuo modello su un impianto..anche se il modello ti serve solo per la simulazione, deve essere il migliore possibile..
Quindi devi guardare i parametri fondamentali..Il tuo modello deve essere innanzitutto affidabile..
Quindi un modello instabile è assolutamente da scartare, stessa cosa vale per un incertezza sui parametri elevata, per i residui molto "sporchi" (quello che ti dicevo prima)..
Poi successivamente prendi in esame le altre cose..Complessità,Best-Fit..
Nei grafici del poli-zeri, quando vai a vedere se è stabile, introduci gli intervalli di confidenza, che sono gli scarti che possono avere gli zeri e i poli all'interno del cerchio unitario..
Del resto mi sembra di averti detto e ridetto tutto..
Io non ho studiato sul Bittanti, ma dalle dispense di un mio professore..
Ciao ciao
ok allora è normale che la risposta sia strana..Ti spiego il perchè ti ho detto di guardare la forma dei residui..
Idealmente i residui nel "modello perfetto", dovrebbero essere una costante a zero..Cioè non dovresti averenessun discostamento tra uscita prevista e uscita reale..
E' ovvio che più la funzione dei residui è lontana dall'asse x, più il tuo modello non funziona bene..Di solito si hanno dei leggeri discostamenti, o al massimo qualche picco..Invece tu presenti dei discostamenti marcati e duraturi..Non so come dirtelo..Ma se integrassi i residui ti viene un valore non trascurabile..mentre deve tendere il più possibile a zero..
Per quanto riguarda il fatto sul cosa fare se un modello buono risulta instabile e invece uno peggiore è stabile..
Tu devi immaginare sempre di implementare il tuo modello su un impianto..anche se il modello ti serve solo per la simulazione, deve essere il migliore possibile..
Quindi devi guardare i parametri fondamentali..Il tuo modello deve essere innanzitutto affidabile..
Quindi un modello instabile è assolutamente da scartare, stessa cosa vale per un incertezza sui parametri elevata, per i residui molto "sporchi" (quello che ti dicevo prima)..
Poi successivamente prendi in esame le altre cose..Complessità,Best-Fit..
Nei grafici del poli-zeri, quando vai a vedere se è stabile, introduci gli intervalli di confidenza, che sono gli scarti che possono avere gli zeri e i poli all'interno del cerchio unitario..
Del resto mi sembra di averti detto e ridetto tutto..
Io non ho studiato sul Bittanti, ma dalle dispense di un mio professore..
Ciao ciao
Allora grazie a te ho capito che devo testare la bianchezza dei residui e la correlazione tra residui e segnale di output. Ma come faccio a testare ciò con matlab?
Infine come faccio ad introdurre gli intervalli di confidenza dei poli e degli zeri?
Infine come faccio ad introdurre gli intervalli di confidenza dei poli e degli zeri?
Mi fa piacere..Guarda per la bianchezza te l'ho già detto..ci sono le funzioni di auto e cross correlazione nell'interfaccia ident..Del resto ti ripeto con quella fai veramente tutto..
Se vuoi altre informazioni mandami una mail dal sito che ti dò indicazioni magari su appunti che ti possono servire..
Ciao ciao serbring
Se vuoi altre informazioni mandami una mail dal sito che ti dò indicazioni magari su appunti che ti possono servire..
Ciao ciao serbring