Sunteți pe pagina 1din 45

Universidad de Almera

rea de Ingeniera de Sistemas y Automtica

OBJETIVOS DEL CURSO

Ensear a realizar funciones en Matlab


o Las llamadas builtin functions. Son funciones que MATLAB tiene incorporadas internamente y por tanto sus cdigos no son accesibles al usuario. o Funciones m functions. Son funciones cuyo cdigo es accesible y que estn escritas a base de rdenes de con objeto de realizar una funcin determinada.

El curso se apoya en el que imparti Jos Luis Guzmn en la asignatura de Automatizacin Industrial de segundo curso
2

PROGRAMA
1. 2. 3. 4. 5. Interfaz de usuario de MATLAB Ejecucin de comandos y creacin de variables Anlisis de vectores y matrices Anlisis de datos almacenados en archivo Visualizacin de datos

6. Automatizacin de comandos con scripts 7. Escritura de programas con estructura lgica y control de flujo 8. Desarrollo de funciones
3

Automatizacin de comandos con Scripts


Un script es un archivo de texto que contiene un listado comandos que se desea ejecutar secuencialmente. Se pueden almacenar para poder se ejecutados a posteriori. Es posible incluir comentarios para recordar y clarificar las actividades que se pretenden realizar con dichos comandos. Cada script se debe almacenar en un archivo de texto de la forma: nombre_archivo.m
4

Automatizacin de comandos con Scripts


Ejemplo de carga de archivo de datos y representacin grfica

Automatizacin de comandos con Scripts


Editor de Matlab

Zona de trabajo

Ejecucin de scripts Listado Archivos Abiertos


6

Automatizacin de comandos con Scripts


Editor de Matlab
Se pueden incluir comentarios haciendo uso del smbolo % al inicio de la lnea correspondiente. Si se utiliza doble %%, se genera un seccin visual que permite dividir virtualmente las zonas del script. Es posible seleccionar varios comandos y comentarlos todos de una vez. Para ello, se selecciona el texto que se desea comentar, se pulsa el botn derecho del ratn y se selecciona la opcin Comment. Para descomentar, realizar la misma operacin pero seleccionar la opcin Uncomment.
7

Automatizacin de comandos con Scripts


Ejemplo 1: (ejemplo_script_1.m)

Automatizacin de comandos con Scripts


Ejemplo 1: (ejemplo_script_1.m)

Cmo Ejecutar?

Nombre del archivo sin .m OJO: Ruta del Archivo!


9

Automatizacin de comandos con Scripts


Deteccin de errores

Si al ejecutar un script se obtiene un error, en la lnea de comandos de Matlab se muestra un resumen del posible error y un enlace a la lnea donde se ha producido el mismo
10

Automatizacin de comandos con Scripts


Pequeos Trucos

Es posible generar un script con la lista de comandos utilizados durante una sesin de trabajo con Matlab. Para ello, se selecciona la lista de comandos desde la ventana de Histrico de Comandos, se pulsa el botn derecho del ratn y se selecciona la opcin Create M-File.
11

BLOQUE 2
Desarrollo de Funciones

Desarrollo de Funciones
Se entiende por funcin a una secuencia de cdigo que, dado un conjunto de valores de entrada, realiza una serie de operaciones con los mismos y devuelve un conjunto de valores de salida. El trabajo con Matlab se basa en el uso de funciones propias o lo que usualmente se conoce como comandos. Por tanto, el desarrollo de funciones consistir en la creacin de comandos propios definidos e implementados por el usuario.

13

Desarrollo de Funciones
function [salida1,salida2,] = nombre_funcion(entrada1, entrada2,)
% Comentarios sobre la ayuda de funcin que luego puede ser utilizada con el % comando help Lista de operaciones que haciendo uso de comandos y operaciones de Matlab utilizan las variables de entrada para realizar diversas operaciones y almacenar el resultado en las variables de salida.

end Las funciones se implementan en el editor de Matlab al igual que los scripts. Sin embargo, el nombre del archivo NO puede ser cualquiera, debe ser el mismo que el nombre de la funcin:

nombre_funcion.m
14

Desarrollo de Funciones
Ejemplo de funcin y modo de uso (prod_det_matrices.m)
Ejemplo de funcin que, dadas dos matrices de entrada, genera como resultado el producto de las mismas y el determinante de cada una de ellas.

15

Desarrollo de Funciones
Qu diferencias existen entre una funcin y un script?

Las operaciones que se realizan con los scripts trabajan sobre variables del espacio de trabajo de Matlab y generan los resultados en ese mismo espacio. Las funciones slo hacen uso de las variables que se le pasa como entrada y slo se puede acceder a las variables que se generan como resultado de salida.

16

Desarrollo de Funciones
Qu diferencias existen entre una funcin y un script?

17

BLOQUE 2
Escritura de programas con estructura lgica y control de flujo

Estructura de programas, lgica y control de flujo

Matlab, adems de ser un entorno que permite ejecutar rdenes de manera individual sobre la ventana de comandos, es en s un lenguaje de programacin formado por un conjunto de instrucciones tpicas de control de flujo. La sintaxis es muy parecida a la de cualquier lenguaje de programacin y todas las palabras reservadas pueden ser usadas directamente sobre la lnea de rdenes, en forma de script o en forma de funciones.

19

Estructura de programas, lgica y control de flujo


Operadores lgicos y relacionales

Permiten la comparacin de escalares (o de matrices elemento a elemento). Si el resultado de la comparacin es verdadero, devuelven un 1, en caso contrario devuelven un 0. Los operadores elementales son:

20

Estructura de programas, lgica y control de flujo

21

Estructura de programas, lgica y control de flujo

22

Estructura de programas, lgica y control de flujo


Estructuras condicionales (if)
Si expresin lista de comandos Sino lista de comandos adicional. Fin_sin

if expresin lista de comandos else lista de comandos adicional. end

if expresin lista de comandos elseif expresin lista de comandos adicional 1 elseif expresin lista de comandos adicional 2 else lista de comandos adicional 3 end

23

Estructura de programas, lgica y control de flujo


Estructuras condicionales (if): Ejemplos

Llamada a la funcin:

24

Estructura de programas, lgica y control de flujo


Estructuras condicionales (switch)

Segn_sea variable caso valor 1 lista de comandos 1. caso valor 2 lista de comandos 2. caso por defecto lista de comandos N. Fin_segn_sea

switch variable case valor 1 lista de comandos 1. case valor 2 lista de comandos 2. otherwise lista de comandos N. end

25

Estructura de programas, lgica y control de flujo


Estructuras condicionales (switch): Ejemplos

26

Estructura de programas, lgica y control de flujo


Estructuras repetitivas (for)
Desde variable=expresin lista de comandos a repetir; Fin_desde for variable=expresin lista de comandos a repetir; end

Estructuras repetitivas (while)


Mientras condicin lista de comandos a repetir; Fin_mientras while condicin lista de comandos a repetir; end

27

Estructura de programas, lgica y control de flujo


Estructuras repetitivas (for): Ejemplos

Estructuras repetitivas (while): Ejemplos

28

Estructura de programas, lgica y control de flujo


Ejemplo completo a desarrollar por los alumnos
X 5 7 10 12 14 16 19 20 23 27 Y 9 11 15 16 20 20 22 24 27 29
29

Desarrollar un programa lo ms genrico posible que permita calcular la regresin lineal para un conjunto de datos introducidos desde teclado. Adems de calcularlo, deber mostrar por pantalla los resultados para validar si la regresin es correcta.

Ejemplo: clculo parmetros de respuesta temporal de un sistema 2 orden (muy mejorable!)

Ejemplo: clculo parmetros de respuesta temporal de un sistema 2 orden (muy mejorable!)

>>num=1; >>den=[12*0.51]; >>[y,t]=step(sys1); >>step(sys1) >>[SO,ts,tp,te]=resp_esca(t,y)

Comandos del toolbox de control


Creacin de modelos lineales tf Creacin de funciones de transferencia a partir de numerador y denominador Tiempo continuo: sys = tf(num,den) Tiempo discreto: sys = tf(num,den,T) zpk Creacin de modelos en la forma ZPK (cero/polo/ganancia) Tiempo continuo: sys = zpk(z,p,k) Tiempo discreto: sys = zpk(z,p,k,T) ss Creacin de modelos en espacio de estados Tiempo continuo: sys = ss(A,B,C,D) Tiempo discreto: sys = ss(A,B,C,D,T) lti/frd Modelo a travs de respuesta en frecuencia Tiempo continuo: sys = frd(respuesta,frecuencias) Tiempo discreto: sys = frd(respuesta,frecuencias,T) delayss Comandos relacionados con la imposicin de retardos (usar help comando para una lti/exp descripcin detallada) setdelayModel filt

32

Comandos del toolbox de control


Extraccin de datos lti/tfdata Extraccin de numerador y denominador Tiempo continuo: [num,den] = tfdata(sys) Tiempo discreto: [num,den,T] = tfdata(sys) Obtencin de polos, ceros y ganancia Tiempo continuo: [z,p,k] = zpkdata(sys) Tiempo discreto: [z,p,k,T] = zpkdata(sys) Obtencin de las matrices de espacio de estados Tiempo continuo: [A,B,C,D] = ssdata(sys) Tiempo discreto: [A,B,C,D,T] = ssdata(sys) Obtencin de la respuesta en frecuencia a partir de un modelo [respuesta,frecuencias]=frdata(sys)

lti/zpkdata

lti/ssdata

lti/frdata

33

Comandos del toolbox de control


Conversiones c2d

Conversin de modelos de tiempo continuo a tiempo discreto sysd=c2d(sys,T,mtodo) Mtodo: zoh (mantenedor de orden cero), foh (mantenedor de orden 1), impulse (basada en respuesta impulsional), tustin (trapezoidal), matched (polo-cero) Conversin de modelos de tiempo discreto a tiempo continuo sys=d2c(sysd,mtodo) Mtodo: zoh (mantenedor de orden cero), (basada en respuesta impulsional), tustin (trapezoidal), matched (polo-cero) Remuestreado de un modelo de tiempo discreto con un nuevo muestreo T sysd=d2c(sysd,T,mtodo) Mtodo: zoh (mantenedor de orden cero), (basada en respuesta impulsional), tustin (trapezoidal) Sobremuestreo de un modelo de tiempo discreto con un nuevo muestreo T sysd=upsample(sysd,T,mtodo) Mtodo: zoh (mantenedor de orden cero), (basada en respuesta impulsional), tustin (trapezoidal)

d2c

d2d

upsample

34

Comandos del toolbox de control

Interconexin de sistemas parallel Conexin de sistemas LTI en paralelo sys =parallel(sys1,sys2,in1,in2,out1,out2) series Conexin de sistemas LTI en serie sys =series(sys1,sys2,out1,in2) feedback Conexin de modelos LTI con un lazo de realimentacin sys=feedback(sys1,sys2)

35

Comandos del toolbox de control


Ganancia y dinmica del sistema dcgain Ganancia en estado estacionario K=dcgain(sys) lti/bandwidth Ancho de banda del sistema Ab=bandwidth(sys) lti/pole Polos del sistema p=pole(sys) lti/zero Ceros del sistema z=zero(sys) lti/order Orden del modelo (nmero de estados) ns=order(sys) pzmap Transformacin polo-cero [p,z]=pzmap(sys) damp Frecuencia natural y factor de amortiguamiento relativo de los polos del sistema [wn,Z]=damp(sys)

36

Comandos del toolbox de control


Anlisis en el dominio del tiempo step Respuesta a escaln t puede ser tfin, 0:T:tfin step(sys) step(sys,t) stepinfo Caractersticas de la respuesta a escaln (tiempo de subida) s=stepinfo(y,t,yfinal) s es una estructura que contiene los siguientes indicadores: RiseTime: tiempo de subida SettlingTime: tiempo de establecimiento SettlingMin: mnimo valor de y dentro del tiempo de establecimiento SettlingMax: mximo valor de y dentro del tiempo de establecimiento Overshoot: sobreoscilacin (%) referida a yfinal Undershoot: suboscilacin (%) Peak: valor mximo de y PeakTime: tiempo de pico impulse Respuesta a impulso t puede ser tfin, 0:T:tfin impulse(sys) impulse(sys,t) initial Respuesta libre a partir de condiciones iniciales t puede ser tfin, 0:T:tfin initial(sys,x0) initial(sys,x0,t)

37

Comandos del toolbox de control


Anlisis en el dominio del tiempo lsim Respuesta a una entrada definida por el usuario t puede ser tfin, 0:T:tfin lsim(sys,u,t) lsiminfo Caractersticas de la respuesta lineal s=lsiminfo(y,t,yfinal) s es una estructura que contiene los siguientes indicadores: SettlingTime: tiempo de establecimiento Min: mnimo valor de y Max: mximo valor de y MaxTime: tiempo en que el mximo se alcanza gensig Genera seales de entrada para ser usadas con la funcin lsim [u,t] = gensig(tipo,periodo) tipo = 'sin' --- seal senoidal tipo = 'square' --- seal cuadrada tipo = 'pulse' --- pulso peridico

38

Comandos del toolbox de control


Anlisis en el dominio de la frecuencia bode Diagramas de Bode de la respuesta en frecuencia bode(sys) bodemag Diagrama de Bode de magnitud bodemag(sys) nyquist Diagrama de Nyquist nyquist(sys) nichols Diagrama de Nichols nichols(sys) margin Mrgenes de fase y ganancia margin(sys) Diseo de compensadores rlocus Diagramas de Bode de la respuesta en frecuencia rlocus(sys) place Diagrama de Bode de magnitud K=place(A,B,P) Modelos en espacio de estados ctrb Forma cannica de control CO = ctrb(A,B) obsv Forma cannica de observacin OB = obsv(A,C) 39

40

Secuencia de ponderacin
Se define como la secuencia de salida de un sistema cuando se le aplica una secuencia de impulso unitario {k}. Posee una gran utilidad para el estudio y anlisis de sistemas dinmicos:

Sistema

rea de Ingeniera de Sistemas y Automtica

41

Secuencia de ponderacin
Conocida la secuencia de ponderacin de un sistema {gk} y conocida una entrada cualquiera {uk}, es posible obtener la secuencia de salida del sistema a dicha entrada.

Sistema

rea de Ingeniera de Sistemas y Automtica

Ejemplos

Secuencia de ponderacin

Ejemplos

Secuencia de ponderacin

Ejemplos
Simulacin basada en ecuaciones en diferencia
1 0.9 0.8 0.7 Entrada y salida 0.6 0.5 0.4 0.3 0.2 0.1 0

10

15

20

25 30 Muestreos

35

40

45

50

Universidad de Almera

rea de Ingeniera de Sistemas y Automtica

S-ar putea să vă placă și