comando c2dm (MatLab está errado?)
Publicado por Ernesto (2 intervenciones) el 05/10/2008 01:58:04
Estimados, estoy desarrollando mi tesis de grado , y bueno metiendome más al tema de discretización de sistemas es que estuve hoy revisando la teoría al respcto, y pues hoy me nació una gran duda. Siempre hemos solido usar el comando c2dm para discretizar un sistema.
Por ejm si tenemos en espacio de estados
X' = A X + B u
Y = CX + Du
las matrices A, B, C y D son en régimen continuo, pero si queremos encontrar las correspondientes matrices en régimen discreto con un tiempo de muestreo Ts y retenedor de orden cero , aplicamos:
[F,G,H,J] = c2dm(A,B,C,D,Ts,'zoh');
en teoria la matriz F se obtiene de F = exp(A*Ts) y la matriz G resolviendo una integral que ahora no viene al caso decir cómo es, pueden revisar los libros como el OGATA (Sistemas de control en tiempo discreto pg 314-315).
El punto es que usando la teoria , la F que obtengo no es la misma que me entrega el comando c2dm. Alguien sabe por qué????
Ejm,
%compruebenlo ejecutando el sgte código: comparen F con eAT al final del programa.
clear all;
A= [ 0 1.0000 0 0;
0 -0.1818 2.6727 0;
0 0 0 1.0000;
0 -0.4545 31.1818 0 ]
B=[
0
1.8182
0
4.5455
]
C=[
1 0 0 0
0 0 1 0
]
D=[
0
0
]
Ts=0.0100
F =[
1.0000 0.0100 0.0001 0.0000
0 0.9982 0.0267 0.0001
0 -0.0000 1.0016 0.0100
0 -0.0045 0.3119 1.0016
]
eAT = exp(A*Ts)
No sale lo mismo verdad?
Alguien sabe que cosa estoy haciendo mal?
Saludos y espero sus respuestas
Gracias
Por ejm si tenemos en espacio de estados
X' = A X + B u
Y = CX + Du
las matrices A, B, C y D son en régimen continuo, pero si queremos encontrar las correspondientes matrices en régimen discreto con un tiempo de muestreo Ts y retenedor de orden cero , aplicamos:
[F,G,H,J] = c2dm(A,B,C,D,Ts,'zoh');
en teoria la matriz F se obtiene de F = exp(A*Ts) y la matriz G resolviendo una integral que ahora no viene al caso decir cómo es, pueden revisar los libros como el OGATA (Sistemas de control en tiempo discreto pg 314-315).
El punto es que usando la teoria , la F que obtengo no es la misma que me entrega el comando c2dm. Alguien sabe por qué????
Ejm,
%compruebenlo ejecutando el sgte código: comparen F con eAT al final del programa.
clear all;
A= [ 0 1.0000 0 0;
0 -0.1818 2.6727 0;
0 0 0 1.0000;
0 -0.4545 31.1818 0 ]
B=[
0
1.8182
0
4.5455
]
C=[
1 0 0 0
0 0 1 0
]
D=[
0
0
]
Ts=0.0100
F =[
1.0000 0.0100 0.0001 0.0000
0 0.9982 0.0267 0.0001
0 -0.0000 1.0016 0.0100
0 -0.0045 0.3119 1.0016
]
eAT = exp(A*Ts)
No sale lo mismo verdad?
Alguien sabe que cosa estoy haciendo mal?
Saludos y espero sus respuestas
Gracias
Valora esta pregunta


0