Professional Documents
Culture Documents
Resumen
El objetivo de esta gua es mostrar al estudiante que en un procedimiento de identificacin la
fase de estimacin de parmetros implica un problema de optimizacin.
1.
Aspectos teoricos.
(1)
= y(k) = ay(k 1) + by(k 2) + cu(k) / b R3
denota la estructura del modelo. (Ec.1) es una estructura ARX de segundo orden, y (Ec.2) es un
modelo particular, un miembro de la familia de modelos ; dicho miembro se denota como (), donde
T
es el vector 0.2 0.7 2.0
R3 .
() : y(k) = 0.2y(k 1) + 0.7y(k 2) + 2.0u(k)
(2)
D Rd
(3)
El vector ptimo dentro de la estructura seleccionada , es aquel que minimiza el ndice JN ; este vector
se denotar como N y se define segn (Ec.4).
N = arg mn JN ()
D
(4)
1.1.
N
1 X 2
ep (k/k 1, )
N
(5)
k=1
(6)
Para las estructuras FIR y ARX se puede demostrar que la ecuacin de prediccin es (Ec.7).
y(k) = (k)T
(7)
Siendo :
(Ec.7) para un modelo FIR.
(k) =
u(k 1) u(k 2) . . .
T
=
b1 b2 . . . bnb
u(k nb )
a1 a2 . . .
an a
b1 b2 . . .
bnb
T
u(k nb )
T
T
N
2
1 X
y(k) (k)T
N
(8)
k=1
N
JN
1 X
=
2(k) y(k) (k)T
(9)
k=1
N
1 X
2(k) y(k) (k)T = 0
N
(10)
k=1
N2 .
N
X
(k)y(k)
k=1
N
X
(k)(k)T = 0
k=1
N
X
(k)(k)
k=1
N
X
(k)y(k)
k=1
(11)
N
X
k=1
(k)(k)
!1
N
X
k=1
(k)y(k)
(12)
1.2.
(13)
Para la (Ec.13) se tiene que los vectores de parmetros y de regresin, son para el caso ARMAX los
mostrados en (Ec.14).
>> D = 1E -15;
>> A = [1 2+ D ;3 6];
>> inv ( A )
W a r n i n g: Matrix is close to s i n g u l a r or badly scaled .
R e s u l t s may be i n a c c u r a t e . RCOND = 3 . 7 0 0 7 4 3e -017.
6
7
ans =
1.0 e +015 *
9
10
- 2 . 2 5 1 7 9 9 8 1 368 525
1.12589990684262
11
12
0.75059993789508
- 0 . 3 7 5 2 9 9 9 68 947 54
(k, ) =
y(k 1) . . .
y(k na ) u(k 1) . . .
T
u(k nb ) ep (k 1) . . . ep (k nc )
T
=
a1 . . . ana b1 . . . bnb c1 . . . cnc
(14)
En (Ec.14) se nota que a diferencia de los modelos FIR y ARX, el valor de la salida predicho por
un modelo ARMAX en el instante k, y(k), tiene un vector de regresin que depende del error de
prediccin ep ; este a su vez depende del vector de parmetros. Luego y(k) no es una funcin lineal de
como en el caso FIR y ARX que se tiene y(k) = T (k) y no depende en absoluto de . En el caso de
los modelos BJ Y OE tambin se obtiene un vector de regresin dependiente del error de prediccin.
De acuerdo con lo anterior, el calculo de N no se puede hacer derivando e igualando a cero JN ()
porque el vector de regresin es tambin funcin de .
JN () =
N
2
1 X
y(k) T (k, )
N
k=1
Cuando se trabaja con estos modelos de regresin la estimacin de N se realiza mediante algoritmos
de optimizacin basados en tcnicas numricas; por tanto no es posible obtener expresiones analticas
como (Ec.12).
En Matlab existen las funciones armax, oe y bj, que permiten encontrar el vector de parmetros ptimo
a partir de un conjunto de datos de entrada-salida, y la cantidad de parmetros a estimar.
2.
En esta seccin se explicaran las funciones : armax, oe y bj. Para cada una de ellas se ha desarrollado
un ejemplo que ilustra su utilizacin.
2.1.
Funcin armax.
Permite estimar el vector de parmetros que minimiza el promedio de los cuadrados de errores de
prediccin, la funcin armax recibe dos argumentos: el primero
IDDATA con los
es un objeto de tipo
datos de entrada-salida, y el segundo un vector de la forma na nb nc nk , donde na , nb , nc y
4
3
4
5
6
7
% Se crea
Secador =
DModelo =
DValida =
el objeto IDDATA .
iddata ( y2 , u2 , 0 . 0 8 ) ;
Secador(1:500);
S e c a d o r (501: end );
11
12
13
14
15
% Se e s t i m a n los p a r a m e t r o s.
na
= 2;
nb
= 2;
nc
= 2;
nk
= 3;
MArmax = armax ( DModelo ,[ na nb nc nk ]);
c o m p a r e( DValida , MArmax );
nk son los ordenes de los polinomios A(q), B(q), C(q) y el retardo de tiempo en instantes de muestreo
respectivamente. En el programa del listado 2 se muestra un ejemplo de utilizacin de la funcin armax.
En la figura 1 se muestra una comparacin entre los datos del objeto DValida y los predichos por el
modelo MArmax.
y1. (sim)
DValida; measured
MArmax; fit: 84.82%
5.5
5
y1
9
10
4.5
3.5
50
60
70
3
4
5
6
7
% Se crea
Secador =
DModelo =
DValida =
el objeto IDDATA .
iddata ( y2 , u2 , 0 . 0 8 ) ;
Secador(1:500);
S e c a d o r (501: end );
11
12
13
14
% Se e s t i m a n los p a r a m e t r o s.
nb
= 2;
nf
= 2;
nk
= 3;
MOe
= oe ( DModelo ,[ nb nf nk ]);
c o m p a r e( DValida , MOe );
2.2.
Funcin oe.
Permite estimar el vector de parmetros que minimiza el promedio de los cuadrados de errores de
prediccin, la funcin oe recibe dos argumentos: el primero
es un objeto
de tipo IDDATA con los datos
de entrada-salida y el segundo un vector de la forma nb nf nk , donde nb , nf y nk son los ordenes
de los polinomios B(q), F (q) y el retardo de tiempo en instantes de muestreo respectivamente. En el
programa del listado 3 se muestra un ejemplo de utilizacin de la funcin oe.
En la figura 2 se muestra una comparacin entre los datos del objeto DValida y los predichos por el
modelo MOe.
y1. (sim)
DValida; measured
MOe; fit: 85.18%
5.5
5
y1
9
10
4.5
3.5
50
60
70
3
4
5
6
7
% Se crea
Secador =
DModelo =
DValida =
8
9
10
11
12
13
14
15
16
% Se e s t i m a n los p a r a m e t r o s
nb
= 2;
nf
= 2;
nc
= 2;
nd
= 2;
nk
= 3;
MBj
= bj ( DModelo ,[ nb nc nd nf nk ]);
c o m p a r e( DValida , MBj );
2.3.
Funcion bj.
Permite estimar el vector de parmetros que minimiza el promedio de los cuadrados de errores de
prediccin, la funcin bj recibe dos argumentos: el primero
es un objetode tipo IDDATA con los datos
de entrada-salida, y el segundo un vector de la forma na nb nc nk , donde nb , nf , nc , nd y nk son
los ordenes de los polinomios B(q), F (q), C(q), D(q) y el retardo de tiempo en instantes de muestreo
respectivamente. En el programa del listado 4 se muestra un ejemplo de utilizacin de la funcin bj.
En la figura 3 se muestra una comparacin entre los datos del objeto DValida y los predichos por el
modelo MBj.
3.
Ejemplo de aplicacin.
A continuacin se muestran dos ejemplos en los que se resuelve el problema de estimacin de parmetros;
el primero para una estructura ARX y el segundo para una estructura ARMAX.
3.1.
Ejemplo ARX
En el ejemplo 1 se muestra un programa en Matlab que permite encontrar el modelo ARX que mejor
se ajusta a un conjunto de datos.
Ejemplo 1 Para el conjunto de datos generado con el programa del listado 5 encuentre el modelo ARX
que mejor se ajusta a dichos datos.
Para realizar la identificacin de un modelo ARX a partir de los datos obtenidos al ejecutar el programa
del listado 5, se debe seleccionar primero la estructura del modelo. En este caso, aunque se sabe que se
utilizara una estructura ARX, se debe definir la cantidad de coeficientes a y b a estimar. Para realizar
la identificacin se partir de las estructuras mostradas en (Ec.15).
y1. (sim)
DValida; measured
MBj; fit: 83.61%
5.5
y1
4.5
3.5
50
60
70
(15)
(16)
3.2.
Ejemplo ARMAX
A continuacin se estimarn los parmetros de un modelo ARMAX utilizando Matlab. Al igual que en
los diferentes ejemplos desarrollados hasta ahora, los datos que se utilizaran para hacer la identificacin
sern generados mediante simulacin. En el listado 7 se muestra el programa utilizado para generar los
datos de entrada-salida del sistema.
8
% Se define el s i s t e m a de tiempo c o n t i n u o.
Zeta
= 0.5;
Wn
= 1;
Gs
= tf ( Wn ^2*[1 1] ,[1 2* Zeta * Wn Wn ^2]);
5
6
7
8
9
% E q u i v a l e n t e de tiempo d i s c r e t o.
h
= 0.2;
disp ( La f u n c i o n ideal es : );
Gz
= disp ( c2d ( Gs ,h , zoh ));
10
11
12
13
14
15
16
17
% Se o b t i e n e la salida del s i s t e m a.
N
= 200;
Tiempo = 0 : 0 . 2 : (N -1) * 0.2;
U
= 5 + i d i n p u t(N , rbs ,[0 1]);
Y
= lsim ( Gz ,U , Tiempo );
E
= i d i n p u t(N , rgs ,[0 1]);
Y
= Y + 0.01* E ;
18
19
20
4
5
6
7
% Se e l i m i n a n t e n d e n c i a s.
U
= dtrend ( U );
Y
= dtrend ( Y );
8
9
10
11
% Objeto iddata
Ts
= mean ( diff ( Tiempo ));
Datos
= iddata (Y ,U , Ts );
12
13
14
15
16
% Modelo na = 1 , nb = 1 , nk = 1
Theta1 = arx ( Datos , na ,1 , nb ,1 , nk ,1);
Ep1
= pe ( Theta1 , Datos );
Ind1
= mean ( Ep1 . o u t p u t d a t a .^2);
17
18
19
20
21
% Modelo na = 2 , nb = 2 , nk = 1
Theta2 = arx ( Datos , na ,2 , nb ,2 , nk ,1);
Ep2
= pe ( Theta2 , Datos );
Ind2
= mean ( Ep2 . o u t p u t d a t a .^2);
22
23
24
25
26
% Modelo na = 3 , nb = 2 , nk = 1
Theta3 = arx ( Datos , na ,3 , nb ,2 , nk ,1);
Ep3
= pe ( Theta3 , Datos );
Ind3
= mean ( Ep3 . o u t p u t d a t a .^2);
27
28
29
% Comparacion
disp ([ Ind1 , Ind2 , Ind3 ]);
Datos entradasalida
Entrada u(k)
6
5.5
5
4.5
4
10
15
20
25
Tiempo [seg]
30
35
40
10
15
20
25
Tiempo [seg]
30
35
40
Salida y(k)
8
6
4
2
0
JN
0.01384
0.00039
0.00038
Dada la importancia del cdigo del listado 7 se realizar una explicacin detallada de cada una de sus
sentencias. En el primer grupo de sentencias (lineas de cdigo de la uno a la cuatro) se definen los
polinomios A(q), B(q) y C(q) del modelo ARMAX de la (Ec.17); este modelo es el que se utilizar para
generar los datos.
y(k) 1.5y(k 1) + 0.7y(k 2) = u(k 1) + 0.5u(k 2) + e(k) e(k 1) + 0.2e(k 2)
(17)
En la linea 4 se invoca a la funcin idpoly con el fin de empaquetar los polinomios A,B,C y crear el
modelo de la (Ec.17) que se almacenara en la variable Mod. En la linea 5 se define el nmero de datos
de entrada-salida que se utilizar para la identificacin. En las lineas 6 y 7 se definen la seales de
excitacin y ruido, u(k) y e(k), que afectaran al sistema. La seal u(k) sera una secuencia binaria,
solo toma los valores 1 o 1, de caractersticas aleatorias y con componentes de frecuencia en la banda
[0, s /2], siendo s la frecuencia de muestreo. El tercer argumento de la funcin idinput indica el rango
de componentes de frecuencia que tendr la seal generada, por ejemplo, el argumento [0 0.7] indicara
a idinput que se desea generar una seal con componentes de frecuencia en la banda [0, 0.7s /2]. La
sentencia U = idinput(100,rbs,[0 0.7]) har que a la variable U se le asignen 100 valores que
pueden ser 1 o 1, si a estos 100 valores se les asigna una escala de tiempo, por ejemplo los mltiplos
enteros de 0.1 entre 0 y 9.9, se tendr una seal binaria de tiempo discreto con componentes en la
banda de frecuencia [0, 0.7s /2] siendo s = 2/0.1.
La seal de ruido sera muy similar a u(k), con la diferencia de que e(k) toma valores en el rango [1, 1].
La diferencia entre las sentencias para generar u(k) y e(k) es el segundo argumento de la funcin
10
From u1 to y1
Amplitude
10
10
10
10
10
10
10
10
Phase (degrees)
0
50
100
150
200
1
10
10
10
10
Frequency (rad/s)
11
% P o l i n o m i o s que c o n s t i t u y e n la e c u a c i n de d i f e r e n c i a s.
A
= [1 -1.5 0.7];
% P o l i n o m i o A ( q ).
B
= [0 1 0.5];
% P o l i n o m i o B ( q ).
C
= [1 -1 0.2];
% P o l i n o m i o C ( q ).
Mod
= idpoly (A ,B , C );
6
7
8
9
10
% Seales
N
=
U
=
E
=
de e x c i t a c i n y ruido .
100;
i d i n p u t(N , rbs ,[0 1]);
i d i n p u t(N , rgs ,[0 1]);
11
12
13
% Se o b t i e n e la seal de salida .
Y
= idsim ([ U E ] , Mod );
14
15
16
17
18
19
3
4
5
6
7
% Se e l i m i n a n t e n d e n c i a s.
U
= dtrend ( U );
Y
= dtrend ( Y );
Datos
= [ Y U ];
8
9
10
11
12
% Se s e l e c c i o n a la e s t r u c t u r a ARMAX .
na
= 2;
nb
= 2;
nc
= 2;
13
14
15
% Se estima el modelo .
ModEst = armax ( Datos ,[ na nb nc 1]);
12
En las lneas 2 y 3 se aplica la funcin dtrend a los vectores U y Y para que tengan valor promedio cero,
en la lnea 4 se conforma la matriz con los datos de entrada-salida requeridos por el comando armax.
La primera columna debe contener los datos de salida y la segunda los datos de entrada. En las lneas
5,6 y 7 se define la cantidad de parmetros a estimar de los polinomios A(q), B(q) y C(q).
na = 2 indica que se estimaran dos parmetros para el polinomio A(q), a1 y a2 . A(q) sera A(q) =
1 + a1 q 1 + a2 q 2 .
nb = 2 indica que se estimaran dos parmetros para el polinomio B(q), b1 y b2 . B(q) sera B(q) =
b1 q 1 + b2 q 2 .
nc = 2 indica que se estimaran dos parmetros para el polinomio C(q), c1 y c2 . C(q) sera C(q) =
1 + c1 q 1 + c2 q 2 .
El modelo entregado por el programa del listado 8 se muestra en (Ec.18).
y(k) = 1.449y(k 1) 0.6522y(k 2) + 0.9297u(k 1) + 0.6802u(k 2)
+ e(k) 0.829e(k 1) + 0.1197e(k 2)
4.
(18)
Ejercicios.
Ejercicio 1 Escriba un programa en Matlab que genere un conjunto de 300 datos a partir de un
modelo ARMAX inventado por usted; el modelo debe ser estable y con na = 2, nb = 2 y nc = 2. Una
vez generados los datos, almacenelos en un archivo .mat utilizando el comando save (ver el programa
del listado 7). Despus, haga otro programa donde se cargue el archivo generado anteriormente, y a
partir de el, realice una estimacin de parmetros utilizando la funciones, bj con nb = 2, nf = 2,
nc = 2 y nd = 2, y oe con nb = 2, nf = 2. Cual de los dos modelos estimados se ajusta mejor al
conjunto de datos ?. Justifique su respuesta.
13