Documente Academic
Documente Profesional
Documente Cultură
VALIDAREA MODELELOR
37
Prezentăm în continuare câteva din funcţiile Matlab utilizate pentru
analiza şi validarea modelelor.
■ Funcţia compare
Sintaxă: compare(data,m)
[ym,fit,x0]=compare(data,m)
38
Când se specifică şi argumentele de ieşire ale funcţiei compare (sintaxa
[ym,fit,x0]=compare(data,m)) nu va mai fi afişat nici un grafic,
iar semnificaţia parametrilor este următoarea:
- yh: este un tablou de celule de dimensiune egală cu numărul de
modele. Fiecare celulă conţine ieşirea corespunzătoare modelului sub
forma unui obiect de tip iddata.
- fit: este un număr ce arată gradul de asemănare (măsurat în
procente) între ieşirea reală şi ieşirea estimată.
- x0: este un tablou de celule, fiecare celulă conţine estimaţia stării
iniţiale a modelului.
Exemplul 3.1
u=idinput(300,’prbs’);
e=idinput(300,’rgs’,[],[-0.1 0.1]);
y=sim(m,[u e]);
z=iddata(y,u,1)
39
compare(z,m1) ; % afişează gradul de asemănare între datele reale şi
% ieşirea modelului m1
pause
compare(z,m2) % afişează gradul de asemănare între datele reale şi
% ieşirea modelului m2
pause
compare(z,m1,m2) % afişează gradul de asemănare între datele reale
% şi ieşirea modelelor m1 şi m2
y1. (sim)
z; measured
8 m1; fit: 24.01%
0
y1
-2
-4
-6
-8
-10
Aceste funcţii sunt utilizate pentru alegerea celui mai bun model ARX pe
baza unui set de date. Sintaxele celor trei funcţii sunt următoarele:
Sintaxă: V = arxstruc(ze,zv,NN)
V = ivstruc(ze,zv,NN)
nn = selstruc(V,c)
40
Datele stocate în ze sunt utilizate pentru determinarea modelelor ARX cu
structura specificată de matricea NN. Pentru aceste modele se calculează
suma normalizată a erorilor pătratice de predicţie pe baza datelor de
validare zv şi este returnată în obiectul Matlab V. Acest obiect este apoi
folosit de funcţia selstruc ce returnează valorile optime pentru structura
modelului ARX în vectorul nn. Parametrul c este o valoare numerică
utilizată ca parametru în procedurile de optimizare (şi se alege de obicei
egală cu zero).
Exemplul 3.2
Considerăm un sistem discret descris de următoarea ecuaţie cu diferenţe:
y (t ) − 1.5 * y (t − 1) + 0.7 * y (t − 2) = u(t − 1) + 0.5 * u(t − 2) + e(t )
Zgomotul e(t) este de tip gaussian. Se cere găsirea celui mai bun
model ARX de ordin cel mult 5 care să descrie acest sistem precum şi
parametrii acestui model.
Soluţie:
Se creează un model pentru acest sistem folosind funcţia idpoly,
după se simulează ieşirea sistemului la o intrare de tip semnal pseudo-
aleator binar pe o perioadă de 400 de secunde. Datele astfel obţinute le
grupăm într-un obiect de tip iddata după care le împărţim în două: un
obiect iddata notat ze va conţine primele 200 de valori şi va fi utilizat
pentru estimare iar următoarele 200 de valori vor fi grupate într-un obiect
notat zv şi vor fi utilizate pentru validarea modelelor. Folosind funcţiile
arxstruc şi selstruc determinăm valorile optime pentru gradele
polinoamelor modelului ARX, după care, folosind funcţia arx, estimăm
parametrii acestui model. Programul Matlab este următorul:
A =[1,-1.5, 0.7]
B =[0, 1, 0.5]
m=idpoly(A,B)
u=idinput(400,'prbs');
e=idinput(400,'rgs');
y=sim(m,[u e]);
z=iddata(y,u,1)
idplot(z)
ze=z(1:200);
zv=z(201:400);
NN = struc(1:5,1:5,1);
41
V = arxstruc(ze,zv,NN)
nn = selstruc(V,0)
m = arx(z,nn)
■ Funcţia pe
Sintaxă: e=pe(data,m)
[e,x0] = pe(m,data,init)
42
• init=’estimate’: starea iniţială este estimată astfel încât
norma erorii de predicţie să fie minimizată; ea este returnată
în parametrul x0;
• init=’zero’: setează starea iniţială la zero;
• init=’model’: utilizează starea iniţială a modelului;
• init=x0i: x0i este un vector coloană ce conţine valorile stării
iniţiale specificate de utilizator.
■ Funcţia resid
Sintaxă: resid(data,m)
resid(data,m,tip)
e=resid(data,m)
Exemplul 3.3
Programul următor afişează funcţiile de corelaţie a reziduurilor
pentru două modele de tip ARX estimate folosind acelaşi set de date:
A =[1,-1.5, 0.7]
B =[0, 1, 0.5]
m=idpoly(A,B)
u=idinput(400,'prbs');
e=idinput(400,'rgs');
y=sim(m,[u e]);
z=iddata(y,u,1)
idplot(z)
ze=z(1:200);
zv=z(201:400);
m1=arx(ze,[1 1 1])
m2=arx(ze,[2 2 1])
resid(zv,m1)
pause
resid(zv,m2)
44
Correlation function of residuals. Output y1
1
0.5
-0.5
0 5 10 15 20 25
lag
Cross corr. function between input u1 and residuals from output y1
0.6
0.4
0.2
-0.2
-25 -20 -15 -10 -5 0 5 10 15 20 25
lag
0.5
-0.5
0 5 10 15 20 25
lag
Cross corr. function between input u1 and residuals from output y1
0.2
0.1
-0.1
-0.2
-25 -20 -15 -10 -5 0 5 10 15 20 25
lag
45
După cum se observă, modelul m2 este mai bun decât modelul m1
deoarece valorile funcţiilor de corelaţie a reziduurilor pentru modelul m2
nu depăşesc intervalele de încredere.
■ Funcţia impulse
Sintaxă: impulse(m)
impulse(data)
[y,t,ysd] = impulse(m)
46
obiectelor de tip idmodel cât şi obiectelor de tip iddata. Pentru modele
discrete m, funcţia pondere y şi deviaţia standard estimată ysd, sunt
calculate folosind funcţia sim. Când este apelată cu argumentele de ieşire
funcţia returnează vectorul de ieşire y, deviaţia standard a lui y - ysd şi
vectorul de timp t. Când este apelată fără argumentele de ieşire, funcţia
va trasa pe ecran graficul funcţiei pondere.
Dacă argumentul de intrare este un obiect iddata, funcţia va estima
un model FIR de ordin mare după ce în prealabil datele au fost prefiltrate
astfel încât intrarea să fie cât mai ”albă” cu putinţă. Funcţia pondere a
acestui model FIR este apoi afişată grafic. Dacă este apelată cu
argumente de ieşire, şi datele de intrare sunt de tip iddata funcţia
returnează modelul FIR estimat sub forma unui obiect de tip idarx.
Ordinul filtrului care realizează prefiltrarea datelor poate fi setat
modificând valoarea proprietăţii pw. În mod implicit această valoare este
10.
Se pot utiliza diverse combinaţii de modele şi seturi de date ca
argumente de intrare. Răspunsurile fiecărui model sunt trasate separat,
culorile şi stilul liniilor pot fi definite prin modificarea valorile
proprietăţii PlotStyle.
Exemplul 3.4
Programul următor estimează două modele de tip ARX şi afişează pe
acealaşi grafic răspunsurile la impuls pentru cele două modele.
A =[1,-1.5, 0.7]
B =[ 0, 1, 0.5]
m=idpoly(A,B)
u=idinput(300,'prbs');
e=idinput(300,'rgs',[],[-0.1 0.1]);
y=sim(m,[u e]);
z=iddata(y,u,1)
idplot(z)
m1=arx(z,[1 1 1])
m2=arx(z,[2 2 1])
impulse(m1,'b-*',m2,'r--')
47
From u1
2.5
1.5
1
To y1
0.5
-0.5
-1
-20 -10 0 10 20 30 40 50 60
Time
■ Funcţia step
Sintaxă: step(m)
step(data)
[y,t,ysd] = step(m)
48
Exemplul 3.5
Programul următor estimează trei modele de tip ARX şi afişează pe
acelaşi grafic răspunsurile la intrare treaptă pentru cele trei modele.
A =[1,-1.5, 0.7]
B =[ 0, 1, 0.5]
m=idpoly(A,B)
u=idinput(300,'prbs');
e=idinput(300,'rgs',[],[-0.1 0.1]);
y=sim(m,[u e]);
z=iddata(y,u,1)
idplot(z)
m1=arx(z,[1 1 1])
m2=arx(z,[2 2 1])
m3=arx(z,[2 1 1])
step(m1,'b-*',m2,'r--',m3)
6
To y1
0
-10 0 10 20 30 40 50
Time
■ Funcţia bode
Sintaxă: bode(m)
[mag,phase,w] = bode(m)
49
Sintaxa bode(m, w) specifică explicit domeniul de frecvenţe utilizat
pentru calcularea caracteristicilor de frecvenţă. Dacă se doreşte analiza
unui interval particular de frecvenţe [wmin, wmax], se setează parametrul
w={wmin, wmax}. Se va plota răspunsul sistemului pentru 100 de
frecvenţe distribuite logaritmic între wmin şi wmax.
■ Funcţia nyquist
Sintaxă: nyquist(m)
[fr,w] = nyquist(m)
Exemplul 3.6
A =[1,-1.5, 0.7]
B =[ 0, 1, 0.5]
m=idpoly(A,B)
u=idinput(300,'prbs');
e=idinput(300,'rgs',[],[-0.1 0.1]);
y=sim(m,[u e]);
50
z=iddata(y,u,1)
idplot(z)
m1=arx(z,[1 1 1])
m2=arx(z,[2 2 1])
m3=arx(z,[2 1 1])
bode(m1,'b-*',m2,'r--',m3)
pause
nyquist(m1,'b-*',m2,'r--',m3)
2 From u1 to y1
10
1
10
A m plitude
0
10
-1
10
-3 -2 -1 0 1
10 10 10 10 10
0
-50
P hase (degrees)
-100
-150
-200
-250
-300
-3 -2 -1 0 1
10 10 10 10 10
Frequency (rad/)
-2
-4
Im a g Axis
-6
-8
-10
-12
-14
-6 -4 -2 0 2 4 6 8 10 12
Real Axis
51
3.4 Afişarea polilor şi zerourilor modelului
■ Funcţia pzmap
Sintaxă: pzmap(m)
pzmap(m,'sd',sd,'mode',mode)
■ Funcţia tfdata
Sintaxă: [n,d]=tfdata(m)
52
- m: obiect de tip iddmodel ce reprezintă un model obţinut prin
identificare.
[n,d]=tfdata(m,’v’)
Exemplul 3.7
A =[1,-1.5, 0.7]
B =[ 0, 1, 0.5]
m=idpoly(A,B)
u=idinput(300,'prbs');
e=idinput(300,'rgs',[],[-0.1 0.1]);
y=sim(m,[u e]);
z=iddata(y,u,1)
idplot(z)
me=arx(z,[2 2 1])
[n,d]=tfdata(me,'v')
pzmap(me,'sd',30)
53
TEME:
54
3. Considerăm un sistem discret descris de următoarea ecuaţie cu
diferenţe:
y (t ) + 1.3 * y (t − 1) + 0.55 * y (t − 2) + 0.075 * y (t − 3) = 0.7 * u (t − 1) + e(t )
Se cere:
a) să se creeze un model Matlab pentru acest sistem;
b) ştiind că zgomotul e(t) este de tip gaussian cu media egală cu 1 şi
deviaţia standard de 0.4, se cere găsirea celui mai bun model
ARX de ordin cel mult 5 care să descrie acest sistem precum şi
parametrii acestui model.
c) Pentru modelul obţinut la punctul b) să se afişeze:
- funcţia de corelaţie a reziduurilor;
- funcţia pondere şi funcţia indicială;
- gradul de asemănare între datele reale şi ieşirea modelului;
- caracteristica complexă de frecvenţă amplitudine-fază;
- caracteristicile BODE;
- polii şi zerourile modelului împreună cu regiunile de încredere.
55