Documente Academic
Documente Profesional
Documente Cultură
VALIDAREA MODELELOR
■ Funcţia compare
Sintaxă: compare(data,m)
[ym,fit,x0]=compare(data,m)
Exemplul 3.1
y(t) −1.5 * y(t −1) + 0.7 * y(t − 2) = u(t −1) + 0.5 * u(t − 2) + e(t)
y1
y1. (sim)
-2
z;
-4 measu
red
-6 m1; fit:
8
24.01
-8
6 %
-10
4
50 100 150
2 timp
■ Funcţiile arxstruc,
ivstruc şi selstruc
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);
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)
2■ 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)
0.5
-0.50 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.50 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
■ Funcţia impulse
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--')
1.5
y1To
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)
6
To y1
0
-10 0 10 20 30 40 50
Time
■ Funcţia bode
Sintaxă: bode(m)
[mag,phase,w] = bode(m)
■ Funcţia nyquist
Sintaxă: nyquist(m)
[fr,w] = nyquist(m)
Exemplul 3.6
Programul următor estimează trei modele de tip ARX şi afişează
caracteristicile amplitudine – frecvenţă şi fază frecvenţă (caracteristicile
BODE) şi caracteristicile Nyquist 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])
bode(m1,'b-*',m2,'r--',m3)
pause nyquist(m1,'b-
*',m2,'r--',m3)
From u1 to y1
2
10
1
10
Amplitude
0
10
-1
10
-3 -2 -1 0 1
10 10 10 10 10
10
Frequenc
y (rad/)
Phase (degrees)
-2
-4
Imag Axis
-6
-8
-10
-12
-14
-6 -4 -2
Real Axis
1■ Funcţia pzmap
Sintaxă: pzmap(m)
pzmap(m,'sd',sd,'mode',mode)
■ Funcţia tfdata
Sintaxă: [n,d]=tfdata(m)
Exemplul 3.7
Programul următor estimează un model de tip ARX (modelul notat
me), după care numărătorul şi numitorul funcţiei de transfer
corespunzătoare acestui model sunt memorate în vectorii n şi d iar polii
şi zerourile corespunzătoare acestui model sunt afişate grafic împreună
cu intervalele de încredere.
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)
TEME:
y(t) + 0.8 * y(t −1) + 0.6 * y(t − 2) = 0.5 * u(t −1) + u(t − 2) + e(t)
Se cere:
1) să se creeze un model Matlab pentru acest sistem;
2) ştiind că zgomotul e(t) este de tip gaussian cu deviaţia standard 0.5, se
cere găsirea celui mai bun model ARX de ordin cel mult 5 care să descrie
acest sistem precum şi parametrii acestui model.
3) Pentru modelul obţinut la punctul b) să se afişeze:
2- gradul de asemănare între datele reale şi ieşirea modelului;
- funcţia de corelaţie a reziduurilor;
1- funcţia pondere;
2- funcţia indicială;
3- caracteristica complexă de frecvenţă amplitudine-fază;
4- caracteristicile BODE;
5- funcţia de transfer corespunzătoare modelului;
6- polii şi zerourile modelului împreună cu regiunile de încredere.