Funciones arx y oe de Matlab El tema está resuelto (Valoración de 5.00 sobre 5, resultante de 1 votos)

Aplicaciones y herramientas informáticas, internet y otros sucedáneos informáticos
por
#327740
Buenas tardes.

Tengo dudas sobre cómo usar las funciones arx y oe de Matlab.

Necesito hallar la función de transferencia de un sistema real, he recogido los datos y los he almacenado en un archivo txt. Usaré la mitad de los datos para hallar la función de transferencia y la otra mitad para comparar el sistema obtenido con el real, de este modo ver el error y elegir el sistema más adecuado.

He mirado manuales, ejemplos, etc. pero no logro entender cuáles son los argumentos de estas funciones, qué tipo deben ser,... ¿podríais ayudarme?

>>sys = arx(data,[na nb nk],Name,Value)
>>sys = oe(data,[nb nf nk],Name,Value)

La verdad es que soy bastante nueva en esto de Matlab... así que cualquier ayuda será bienvenida! Muchas gracias :)
Avatar de Usuario
por
#328233
No tengo ni idea de cómo va, pero te agradecería que subieras el archivo de texto y explicaras un poco más lo que quieres hacer para trastear un poco a ver si lo averiguo, suena interesante. Los datos los has sacado del sistema real o mediante una simulación?
por
#328460
En primer lugar, muchas gracias por tu interés!

Adjunto el fichero de datos en formato .xls (no puedo adjuntarlo como .txt). La primera columna es la temperatura leída, y lo que aparece a la derecha es la variable manipulada (en %), de este modo veo cómo de rápido sube el sistema según el valor de éste, y después cómo baja la temperatura al dejarlo en reposo.

Los datos se han obtenido del sistema real. Es un control de temperatura.

Por lo que he visto se puede hallar el modelo a través de la Toolbox de identificación (>>ident) pero también creando un fichero .m

De nuevo muchas gracias por el interés mostrado! Y si puedo aportar algo más que te ayude, dímelo porfa!
Regístrese y/o inicie sesión para ver archivos adjuntos.
Avatar de Usuario
por
#328467
Voy a echarle un vistazo a ver si consigo hacer algo, por la pinta de los datos, entiendo que quieres controlar la temperatura de algo, con la activacion de otro algo. Si es algo sencillito tipo un depósito y una resistencia yo creo que acabarías antes sacando la función de forma analítica. En el Ogata hay muchos ejemplos de estos.

No te prometo que pueda averiguar como se hace, pero voy a echarle un ojo.
Avatar de Usuario
por
#328471
Tienes que meter esos datos en dos vectores columna, entrada y salida. Abres el System identification tool y das click en import data, y en time domain data. En input escribes el nombre del vector de la variable de entrada y en output el de la temperatura. En estimate puedes calcular la funcion arx dando click en polynomial models, borras los ordenes y le das a "Order selection", le das a "Estimate" y la calcula. Despues el cuadradito que ha aparecido a la derecha del System identification tool con nombre "arx..." lo arrastras a "To Workspace", ya en Matlab escribes tf(arx...) y te devuelve la función de transferencia.

Comenta cuando sepas si te vale, un saludo!

Me habia colado una cosa, al crear la funcion ARX te salen unos gráficos, Seleccionas el que está en rojo, que indica la mejor aproximación, y le das a Save, ahora si te aparecerá este grafico en la ventana principal de la herramienta.
Última edición por toñuko el 18 Sep 2013, 13:19, editado 1 vez en total
Avatar de Usuario
por
#328479
Buenas! No he probado el metodo de Toñuco, pero os cuento como las uso yo:

Los argumentos tanto de Oe como de arx son los mismos

en data, se pasan los datos a partir de los que se generara el model. Esto incluye las entradas, las salidas y el periodo de muestreo. Para enviar todo eso como un solo vector en mi caso uso la siguiente orden:

data= iddata(salida,entrada,Ts);

Siendo salida y entrada dos vectores de igual longitud con las entradas y las salidas correspondientes de tu sistema.

Despues, se pasa otro vector de la forma [1 1 (2*Ts)] ; donde los dos primeros números indican el número de ceros y de polos(más concretamente el orden del numerador y del denominador) que quieres que tenga tu modelo, y el tercero indica el retardo real que tiene tu sistema, en mi ejemplo, dos veces el periodo de muestreo.

Las funciones te devolverán algo así:

arx
A(q) = 1-0.8408 q^-1
B(q) = 0.2468 q^-2
Loss funcion 22.0351 and FPF 22.0868
Samply time 0.01

oe
B(q) = 0.3699 q^-2
F(q) = 1- 0.7612 q^-1
Loss funcion 104.715 and FPF 104.962
Samply interval 0.01


Usa para tu proyecto la que tenga menor Loss Function (Función de pérdidas). En mi caso la recomendable es la de arx, quedando mi modelo:

(0.2468* z^-1)/(z-0.8402)

Espero que esto te ayude Noelia.

PD: recuerda que las "q" equivalen a las "z" en Matlab.
por
#328490
Muchísimas gracias Toñuco y Sergionidas!

Lo probaré en cuanto pueda y os digo. Pero parece que está bastante bien explicado (y de modo muy sencillo). Gracias de nuevo! :D
por
#328884
Ya está probado de las dos formas y funciona perfectamente, muchísimas gracias a los dos!!!
Palabras clave
Temas similares

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

Permisos de mensaje

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro