Sei sulla pagina 1di 510

10.

SIMULINK


10.1 INTRODUCCION

Simulink es un software que funciona bajo la plataforma de Matlab y es una
herramienta muy til para modelar, simular y analizar sistemas, tanto lineales como
no lineales. Permite al usuario realizar sus estudios tanto en el dominio del tiempo
como el de Laplace, expresar las funciones de transferencia en las diferentes formas
incluyendo la del espacio de los estados y otras opciones. En una interfaz grfica
(GUI) como la que se observa en la Figura 10.1, el usuario construye un diagrama
de bloques que desarrollan procedimientos que realizan las operaciones matemticas
requeridas para la solucin de un modelo.




Figura 10.1. Librerias (Izquierda) y Espacio de trabajo de Simulink (Derecha)


10.2 ACCESO A SIMULINK

Para acceder a Simulink se requiere abrir el espacio de trabajo de Matlab y presionar
el icono Simulink o tambin mediante la digitacin de dicha palabra clave con
letras minsculas en el editor de comandos. Con lo anterior se despliega, solamente,
la ventana de ttulo Simulink Library Browser que se observa a la izquierda de la
Figura 10.1. El espacio de trabajo de Simulink es la ventana que se observa a la
derecha y se despliega presionando el icono Create a new model que se encuentra

Mach
178
en la barra estndar o desplegando el men File y seleccionando sucesivamente
New y Model (Ctrl + N)


10.3 LIBRERIAS DE SIMULINK

Al desplegar el rbol de Simulink y haciendo clic izquierdo sobre su nombre se
despliegan las libreras que contienen los bloques operacionales agrupados de
acuerdo a diferentes propsitos comunes. Los nombres de las libreras son:
Continuous, Discontinuities, Discrete, Look-Up Tables, Math Operations, Model
Verification, Model-Wide Utilities, Ports & Subsystems, Signal Attributes, Signal
Routing, Sinks, Sources y User-Defined Functions.


Instalacin y Conexin de un bloque operacional

Para la instalacin de un bloque en el espacio de trabajo de Simulink se selecciona
de la librera con un clic izquierdo del mouse y en forma sostenida se arrastra hasta
el espacio de trabajo de Simulink. Las conexiones entre dos bloques se realizan
acercando el puntero del mouse a uno de los topes (entrada o salida) hasta que este
cambie en forma de cruz, se presiona el botn izquierdo del mouse y en forma
sostenida se arrastra hasta el otro tope. La conexin es correcta cuando el puntero
del mouse tome la forma de una cruz de doble trazo. Se debe observar una lnea con
una saeta en el tope del bloque de entrada.


Especificacin de un bloque operacional

Las especificaciones mnimas requeridas en un bloque se relacionan con la
operacin que realizan dentro del diagrama que representa el proceso de solucin del
modelo matemtico del sistema.


10.4 LIBRERA CONTINUOUS (CONTINUO)

La Figura 10.2a muestra la ventana que se despliega al hacer doble clic sobre la
librera Continuous y la Figura 10.2b muestra los conos que simbolizan a cada
uno de los bloques que incluye esta librera. Los nombres de los bloques son:
Derivative (Derivada), Integrator (Integrador), State-Space (Espacio de los Estados),
Transfer Fcn (Funcin de Transferencia como numerador/denominador), Transport
Delay (Tiempo Muerto), Variable Transport Delay (Tiempo Muerto Variable), Zero-
Pole (Transferencia Muerto en la forma de zeros y polos)


Mach
179


(a) (b)

Figura 10.2. Librera (a) Continuous y (b) Bloques operacionales


Los bloques de la librera Continuous representan unidades que se alimentan de
una informacin de entrada y que al desarrollar sobre esta un proceso matemtico
transmite el resultado como una informacin de salida. En la librera Continuous
se incluyen los bloques para realizar operaciones matemticas continuas en el
tiempo.


Bloque Derivada (Derivative)

El bloque Derivative desarrolla la derivada con respecto al tiempo de la variable
de entrada para lo cual no se necesita especificacin. La Figura 10.3 muestra la
ventana que se despliega al hacer doble clic sobre el icono Derivative




Figura 10.3 Especificaciones del bloque Derivative

Mach
180
Bloque Integrador (Integrator)

El bloque Integrator desarrolla la operacin de integrar la informacin de entrada
desde un tiempo inicial hasta un tiempo final que se especifica como uno de los
parmetros de la simulacin. Se observa en la ventana de especificaciones del
bloque integrador mostrada en la Figura 10.4a que se requiere la especificacin de la
condicin inicial de la variable que se suma (integra)




(a) (b)

Figura 10.4 Especificaciones del bloque (a) Integrator (b) State-Space


Bloque Espacio de los Estados (State-Space)

La Figura 10.4b muestra la ventana de especificaciones para el bloque que desarrolla
un modelo lineal en la forma del Espacio de los Estados. Se observan los cuadros
para especificar las matrices A, B, C y D y las condiciones iniciales.


Bloques Funciones de Transferencia (Transfer Fcn y Zero-Pole)

La Figura 10.5 muestra las ventanas de especificaciones para las funciones de
transferencia en la forma de numerador/denominador y en la de zeros y polos.


Mach
181


(a) (b)

Figura 10.5 Especificaciones de bloques (a) Transfer Fcn y (b) Zero-Pole


En la Figura 10.5a, se observan los cuadros donde se especifican en forma matricial
el numerador y el denominador de la funcin de transferencia mientras que en la
Figura 10.5b los cuadros donde se incluyen en forma matricial los zeros, los polos y
las ganancias de la funcin de transferencia

Es comn a todas las ventanas de especificaciones de bloques operacionales, la
inclusin de la barra de ttulo seguido de un pequeo cuadro con el nombre del
bloque y una breve descripcin de la funcin de ste. De igual manera, en la parte
inferior se incluyen los botones OK, Cancel, Help y Apply


Bloque Tiempo Muerto (Transport Delay)

La Figura 10.6 muestra las ventanas de especificaciones para los bloques que
incluyen un atraso por tiempo muerto dentro de la dinmica de un sistema. Simulink
incluye un bloque Transport Delay y otro titulado Variable Transport Delay

El bloque Transport Delay aplica el tiempo muerto a la seal de entrada que se
especifica en el cuadro de nombre Time Delay, mientras que el bloque Variable
Transport Delay aplica el tiempo muerto a la primera seal de entrada y en la
segunda entrada se especifica el tiempo muerto. Las otras especificaciones,
usualmente, se dejan como aparecen por defecto



Mach
182


(a) (b)

Figura 10.6 Especificaciones de los bloques Transport Delay


10.5 LIBRERA MATH OPERATIONS (OPERADORES)

La Figura 10.7 muestra la ventana que se despliega al hacer doble clic sobre la
librera Math Operations y la Figura 10.8 los botones incluidos en dicha librera.




Figura 10.7 Librera Math Operations

Mach
183


Figura 10.8 Bloques de la librera Math Operations


Los bloques de la librera Math Operations se utilizan en la simulacin de la
dinmica de un sistema para aplicar operadores matemticos sobre su informacin
de entrada. A continuacin se describe la especificacin de algunos de ellos


Bloque Suma (Sum)

El bloque Sum realiza la suma algebraica de las informaciones de entradas
alimentadas al bloque. La Figura 10.9 muestra la ventana de especificaciones de este
bloque y se observa el cuadro desplegable donde se selecciona la forma del icono




Figura 10.9 Especificaciones del bloque Sum

Mach
184
El bloque Sum se especifica introduciendo en el cuadro List of signs los signos
de cada uno de las informaciones de entrada o el nmero de ellas. En el primer caso
los signos de suma o resta se despliegan a un lado de los topes de entrada del icono
que representa al bloque


Bloques Ganancia (Gain y Slider Gain)

El bloque Gain aplica un factor multiplicador constante a la informacin de
entrada y el producto lo transmite como la informacin de salida. El factor
multiplicador es la ganancia. La Figura 10.10a muestra la ventana de
especificaciones del bloque Gain. En el cuadro Gain se introduce la ganancia como
un valor constante

El bloque Slider Gain realiza la misma operacin del bloque Gain permitiendo
la variacin del valor de la ganancia asignada, mediante el botn deslizable, desde
un valor mnimo hasta un mximo. La Figura 10.10b muestra la ventana de
especificaciones del bloque Slider Gain




(a) (b)

Figura 10.10 Especificaciones de los bloques (a) Gain y (b) Slider Gain


Bloque Producto (Product)

El bloque Product realiza el producto o la divisin entre las informaciones de
entrada. Esto se especifica introduciendo, ya sea, el nmero de corrientes a
multiplicar o los signos producto o divisin para cada una de las informaciones de
entrada en el cuadro Number of inputs de la ventana de especificaciones que se
muestra en la Figura 10.11

Mach
185


Figura 10.11 Especificaciones del bloque Product


Al especificar los signos, estos se despliegan con los smbolos de producto o
divisin a un lado de los topes de entrada del icono que representa al bloque


Bloque Funcion (Math Function y Trigonometric Function)

El bloque Math Function aplica a la informacin de entrada una funcin
matemtica que se selecciona en el cuadro desplegable Function, mientras que el
bloque Trigonometric Function solo aplica funciones trigonomtricas como se
observa en la Figura 10.12




(a) (b)

Figura 10.12 Especificaciones del bloque (a) Math Function, (b) Trigonometric
Function

Mach
186
Bloque Minimo y Maximo (MinMax)

El bloque MinMax selecciona el valor mnimo o el mximo entre los
correspondientes a las informaciones de entrada. En su ventana de especificaciones
se encuentra el cuadro donde se elige la funcin del bloque, es decir, min o max
y un cuadro adicional donde se especifica el nmero de entradas al bloque. Despus
de introducir lo anterior, se observa en el icono del bloque un nmero de topes de
entrada igual al especificado


10.6 LIBRERA SOURCES (ENTRADAS)

La Figura 10.13 muestra la ventana que se despliega al hacer doble clic sobre la
librera Sources y la Figura 10.14 los conos de los bloques incluidos en dicha
librera




Figura 10.13. Librera Sources


Mach
187


Figura 10.14 Bloques de la librera Sources


La librera Sources contiene un conjunto de bloques de donde emergen seales
que representan los cambios en las variables de entrada. Estos bloques solo tienen
puertos de salida, es decir, no tienen puertos de entrada. A continuacin se describen
los bloques Step, Ramp, Sine Wave, Constant, Clock, Digital Clock, Signal
Generator


Bloques Paso y Rampa (Step y Ramp)

La Figura 10.15a muestra la ventana de especificaciones del bloque Step. En el
cuadro Step Time se introduce el tiempo transcurrido para que la variable de
entrada cambie desde un valor inicial que se introduce en el cuadro Initial value
hasta un valor final que se introduce en el cuadro Final value.



(a) (b)

Figura 10.15 Especificaciones de los bloques (a) Step y (b) Ramp

Mach
188
La Figura 1.15b muestra la ventana de especificaciones del bloque Ramp. En el
cuadro Slope se introduce la pendiente de la rampa y en el cuadro Start time se
introduce el tiempo de iniciacin del cambio rampa. Los cuadros de especificaciones
se dejan con sus valores por defecto


Bloques Seno y Generador de Seal (Sine Wave - Signal Generator)

La Figura 10.16a muestra la ventana de especificaciones del bloque Sine Wave.
La Amplitud, el umbral, la frecuencia y la fase de la onda sinusoidal se introducen
en los cuadros de nombres Amplitude, Bias, Frequency y Phase,
respectivamente.




(a) (b)

Figura 10.16 Especificaciones del bloque (a) Sine Wave y (b) Signal Generator

La Figura 10.16b muestra la ventana de especificaciones del bloque Signal
Generator. En el cuadro Wave from se especifica si la onda peridica de entrada
es sinusoidal, cuadrada, diente de sierra o al azar. La amplitud y la frecuencia se
introducen en los cuadros de nombres Amplitude y Frequency, respectivamente.


Bloques Reloj y Constante (Clock y Constant)

La Figura 10.17a muestra la ventana de especificaciones para el bloque Clock que
se utiliza para mostrar el tiempo de simulacin. Si se verifica el cuadro Display

Mach
189
time se despliega el tiempo sobre el icono. El bloque Display Clock se puede
utilizar como otra opcin.




(a) (b)

Figura 10.17 Especificaciones del bloque (a) Clock (b) Constante


La Figura 10.17b muestra la ventana de especificaciones para el bloque Constante
que se utiliza para entrar un valor constante en el diagrama de bloques que simula la
dinmica de un sistema.


10.7 LIBRERA SINKS (SALIDAS)

La librera Sinks contiene un conjunto de bloques receptores de seales de salida
y, por lo tanto, solo tienen puertos de entrada. Mediante estos bloques se observan
los resultados de las simulaciones en diferentes formas, por ejemplo, grfica o
numrica. La Figura 10.18a muestra la ventana que se despliega al hacer doble clic
sobre la librera Sinks y la Figura 6.18b muestra los botones que se incluyen en
dicha librera.

Los botones Scope, Floating Scope y XY Graph despliegan la informacin de
salida en funcin del tiempo, en forma grfica. El botn Scope no requiere
especificaciones y Floating Scope se utiliza para representar en grficos separados
los perfiles de cada una de las informaciones de salida, para lo cual se hace doble
clic sobre el icono, se presiona el cuadro Parameters y se introducen el nmero de
grficos en el cuadro Number of axes. El botn XY Graph requiere de las
especificaciones de los valores lmites en los ejes de representacin de las variables
X e Y. La Figura 10.19 muestra la ventana de especificaciones de los botones
Floating Scope y XY Graph.



Mach
190


(a) (b)

Figura 10.18 Librera Sinks




(a) (b)

Figura 10.19 Especificaciones del bloque (a) XY Graph y (b) Floating Scope


Los botones Display y To Workspace despliegan la informacin de salida en
forma numrica. El primero lo muestra en forma digital sobre el mismo icono
mientras que el segundo lo hace sobre el espacio de trabajo de Matlab asignndole

Mach
191
un smbolo a las variables que se quieren desplegar. El botn Display permite la
seleccin del formato numrico para el despliegue de la informacin de salida. La
Figura 10.20 muestra las ventanas de especificaciones de estos botones




(a) (b)

Figura 10.20 Especificaciones del bloque (a) Display y (b) To Workspace




Figura 10.21 Especificaciones del bloque To File


10.8 LIBRERAS SIGNAL ROUTING Y PORTS & SUBSYSTEMS

Las Figuras 10.22 muestran las ventanas que se despliegan al abrir las libreras
Signal Routing y Ports & Subsystems que contienen bloques de enrutamiento de
seales y definicin de puertos y subsistemas.

Mach
192


(a) (b)

Figura 10.22. Librera (a) Signal Routing (a) y (b) Ports & Subsystems


La librera Signal Routing contiene un conjunto de bloques de enrutamiento de
seales como interruptores, mezcladores, divisores, etc. Estos bloques tienen puertos
de entrada y de salida

La librera Ports & Subsystems contiene un conjunto de bloques que definen
puertos de entradas y de salidas o subsistemas con los que desarrollan lazos de
control de flujo como if, switch, while, for, etc.


10.9 SIMULACION DE UN SISTEMA CON SIMULINK

10.9.1 Sistema de Primer Orden Lineal Dominio Tiempo

En la Figura 10.23 se muestra un diagrama de bloques para la simulacin del
sistema de primer orden lineal en el dominio del tiempo, planteado en la Prctica
No. 1.

Mach
193





Figura 10.23. Diagrama de bloques del sistema de la Prctica 1

Mach
194
Los parmetros fsicos incluidos son los correspondientes al volumen en el tanque,
el flujo volumtrico a travs del mismo y la constante de velocidad de reaccin.

El botn Multiport Switch es un interruptor mltiple que se encuentra en la
librera Signal Routing. Su funcionamiento est acoplado con el botn constante
denominado Entrada cuya funcin es indicar al interruptor la funcin que debe
dejar pasar a travs de l. Esto se hace asignando los nmeros 1, 2 y 3 a los cambios
Step, Ramp y Sine Wave, respectivamente. El botn Mux de la librera Routing
Signal simula la circulacin de la seal rampa de entrada separada de la seal de
salida del sistema pero conjuntas de tal manera que el Scope que se alimenta con
la descarga del botn Mux muestra en una misma ventana ambos perfiles. El
botn Manual Switch se incluye para interrumpir el flujo de la informacin de
salida a travs de l cuando se haga la simulacin de la respuesta rampa. Su
operacin es manual

Al hacer la simulacin con la ecuacin diferencial estndar de un sistema de primer
orden lineal en trminos de sus variables desviacin, la condicin inicial en el
integrador es cero. Para la fijacin de los parmetros de la simulacin en cuanto a la
fijacin del tiempo y a la seleccin del mtodo para la solucin de la ecuacin
diferencial despliegue el men Simulation y llnela como se observa en la Figura
10.24.




Figura 10.24 Especificacin de los Parmetros de la Simulacin


En el cuadro Simulation Time se ha fijado como tiempo de simulacin 50
unidades de tiempo y en el cuadro Solver options se ha seleccionado el mtodo

Mach
195
ode23s (stiff/Mod. Rosenbrock). Estos mtodos rigurosos se seleccionan,
especialmente, cuando se observa que las respuestas se ven a trazos lineales muy
notorios, lo que puede deberse a la aplicacin de un mtodo menos riguroso


10.9.2 Sistema de Primer Orden Lineal Dominio Laplace

En la Figura 10.25 se muestra un diagrama de bloques para la simulacin del
sistema de primer orden lineal en el dominio del tiempo, planteado en la Prctica
No. 3.

La funcin de transferencia se procesa con el botn Transfer Fcn de la librera
Continuous. Se especific con un numerador de [0.875] y un denominador de
[4.375 1], es decir, con los parmetros correspondientes a la ganancia y constante de
tiempo determinados para dicho sistema. El botn Gain se coloca para alimentar
el Scope con la informacin correspondiente a la variable de salida dividida por la
ganancia del sistema, con lo que se observa claramente el perfil lineal de la
respuesta despus de un cierto tiempo. Nuevamente, para la solucin del modelo se
utiliza el mtodo ode23s (stiff/Mod. Rosenbrock) y se sugiere fijar un tiempo de 50
unidades de tiempo

Una funcin de transferencia se puede simular con el bloque LTI System que se
encuentra en la herramienta Control System Toolbox y que se observa al hacer
doble clic sobre dicha herramienta. Con el bloque LTI System se puede introducir
la funcin de transferencia ya sea en la forma estndar, o zero-pole o espacio de los
estados, utilizando los comandos correspondientes para cada una de ellas, es decir,
tf, zpk o ss


10.9.3 Sistema de Segundo Orden Lineal Dominio Tiempo

En la Figura 10.26 se muestra un diagrama de bloques para la simulacin del
sistema de segundo orden lineal en el dominio del tiempo, planteado en la Prctica
No. 4.

Se utiliza el bloque Math Function de la librera Math Operations para realizar
races cuadradas y potencias al cuadrado. Se incluye el botn Display de la librera
Sinks para desplegar el valor del coeficiente de amortiguamiento. Se observa la
necesidad de dos bloques Integrator debido a que la ecuacin diferencial que se
simula es de segundo orden



Mach
196


Figura 10.25 Diagrama de bloques del sistema de la Prctica 2




Mach
197



Figura 10.26 Diagrama de bloques del sistema de la Prctica 3

Mach
198
Las leyendas que aparecen sobre algunas corrientes se digitan haciendo un clic sobre
el lugar sobre el cual se quiere introducir. Las letras griegas se colocan con el estilo
Symbol


10.9.4 Sistema de Segundo Orden Lineal Dominio Laplace

En la Figura 10.27 se muestra un diagrama de bloques para la simulacin del
sistema de segundo orden lineal en el dominio de Laplace, planteado en la Prctica
No. 5.

En esta simulacin, se construye un archivo con Matlab, es decir, con extensin
punto m, que solicite al usuario los parmetros fsicos del sistema (Masa del bloque,
constante de elasticidad, coeficiente de amortiguamiento, aceleracin de la gravedad
y rea del diafragma, calcule los parmetros dinmicos (Ganancia, constante de
tiempo y coeficiente de amortiguamiento) y defina el numerador (num) y el
denominador (den) de la funcin de transferencia que se introducen como los
parmetros que especifican al bloque Funcin de Transferencia. Desde dicho
archivo se llama el archivo punto mdl construido en Simulink para que se despliegue
y que corresponde al diagrama de bloques que se observa en la Figura 10.27. Los
parmetros de la simulacin se introducen desde la ventana de Simulink


10.9.5 Sistemas con Tiempo Muerto Dominio Laplace

En la Figura 10.28 se muestra el diagrama de bloques que simula la dinmica de un
sistema con tiempo muerto en el dominio de Laplace e incluye los modelos de
primero y segundo orden desarrollados en las Prcticas No. 3 y 5.

Para esta simulacin, se construye un archivo tipo Script en Matlab con nombre
Sistemas.m y un diagrama de bloques en Simulink denominado
Primer_Segundo_Orden.mdl. En el primero se capturan o calculan todos los
parmetros requeridos y en el segundo se desarrolla la simulacin. De esta forma,
los bloques del diagrama en Simulink se especifican con los smbolos asignados en
el archivo Sistemas.m. Se observa, adems, que el tiempo de simulacin se
captura con el nombre Rango y se introduce dentro de la ventana de
especificaciones de los parmetros de simulacin que se despliega dentro de la
ventana de Simulink. La simulacin se inicia con la apertura del archivo
Sistemas.m, y desde aqu se ordena la corrida y posterior apertura del diagrama de
bloques en Simulink. La solucin grfica resultante se observa desplegando los
registradores respectivos. Algunos comandos de matlab utilizados en el primero de
los archivos se explican al final de esta leccin.


Mach
199





Figura 10.27 Diagrama de bloques del sistema de la Prctica 4


Mach
200




Figura 10.28 Simulacin de la dinmica de un sistema con Tiempo Muerto



Mach
201
En la Figura 10.28 se incluye el botn Transport Delay de la librera Continuous
para especificar el tiempo muerto y se simplifica el diagrama definiendo dos
subsistemas, el Subsystem1 incluye los elementos que seleccionan el sistema de
primer o de segundo orden que se quiere simular y el denominado Subsystem
incluye los elementos con los cuales se desarrolla la respuesta que se quiere
desarrollar o simular. Las Figuras 10.29 y 10.30 muestran los diagramas
correspondientes para cada uno de los subsistemas observados




Figura 10.29 Subsistema para seleccionar el orden del sistema




Figura 10.30 Subsistema para seleccionar la respuesta del sistema

Mach
202
El botn Subsystem se selecciona en la librera Ports&Subsystems y el
subsistema se puede construir dentro del bloque seleccionado pero tambin se
pueden escoger los elementos previamente y seleccionar la opcin Create
Subsystem del men Edit del espacio de trabajo de Simulink,

En la Figura 10.29 se emplea el botn Switch Case de la librera
Ports&Subsystems y que desarrolla la operacin switch-case sobre el valor de la
variable de entrada que en el programa codificado en Matlab corresponde a la
asignacin para seleccionar el sistema de primero o segundo orden. El caso 1
(Primer Orden) se conecta con un botn Switch Case Action Subsystem, de la
misma librera, denominado Primer Orden que requiere de la alimentacin de la
accin (1), para lo cual se instala la funcin de transferencia para un sistema de
primer orden (En el esquema se coloc afuera para ilustracin del lector) entre su
puerto de entrada y salida. La entrada a este bloque es el cambio en la variable de
entrada (Paso, Rampa o Seno). Para el caso 2 (Segundo Orden) se construye un
esquema similar. El interruptor multipuerto utiliza como indicador de salida el que
se asigna para el orden del sistema.

En la Figura 10.30, un botn Switch Case desarrolla la operacin switch-case
sobre el valor que se asigna para seleccionar el tipo de cambio en la variable de
entrada. Se incluyen un caso para la respuesta rampa y otro caso (2, 3), que
desarrolla los cambios paso y seno. Los botones Switch Case Action Subsystem se
alimentan de las acciones y entradas correspondientes a rampa y paso y seno,
respectivamente. El botn Merge de la librera Ports&Subsystems emerge las
seales de entrada en una sola seal de salida. En este caso, solo emerge la
informacin alimentada


10.9.6 Sistema de Tres Tanques de Flujo No Interactuantes

En la Figura 10.31 se muestra un diagrama de bloques para la simulacin del
sistema de tres tanques en serie no interactuantes planteado en la Prctica No. 7. Se
observa que los parmetros que se introducen a travs de un programa codificado
con Matlab son el dominio de solucin del modelo y el tipo de respuesta que se
quiere simular. De igual manera, se introducen los parmetros que especifican cada
uno de los cambios que se incluyen, dentro del diagrama de bloque, para la variable
de entrada. El archivo se incluye al final de este captulo y se denomina
ordenmayorsimulink.m

Las Figuras 10.32 muestra el diagrama interior al bloque denominado Tiempo-
Laplace; es la aplicacin de un lazo SwitchCase para desarrollar la solucin de
la respuesta seleccionada en el dominio del tiempo o de Laplace. Adems, incluye

Mach
203
un bloque donde se selecciona el tipo de respuesta a simular, es decir, paso, rampa o
seno.




Figura 10.31 Sistema de Orden Mayor Tanques No Interactuantes




Figura 10.32 Seleccin del dominio de Solucin


La Figura 10.33 muestra el diagrama de bloques que representa la solucin del
modelo en el dominio del tiempo. Al observar este diagrama, se deduce que los

Mach
204
parmetros dinmicos correspondientes a cada uno de los tanques se introducen al
correr el programa codificado en Matlab, es decir, las constantes de tiempo y las
ganancias estacionarias. La Figura 10.34 es el diagrama de bloques que representa la
solucin del modelo en el dominio de Laplace




Figura 10.33 Solucin del modelo en el dominio del tiempo




Figura 10.34 Solucin del modelo en el dominio de Laplace


La Figura 10.35 es el diagrama de bloques correspondiente al subsistema
denominado Salida incluido en la Figura 10.32. Se observa, que mediante un lazo

Mach
205
de control SwitchCase se selecciona la salida de acuerdo al dominio, tiempo o
Laplace, en que se hace la simulacin.




Figura 10.35 Seleccin del dominio de Salida


La Figura 10.36 es el diagrama de bloques en donde se selecciona si la respuesta a
simular es paso, rampa o seno para los respectivos grficos de salida




Figura 10.36 Selecciona del tipo de respuesta

Mach
206
10.9.7 Sistema de Dos Tanques de Flujo Interactuantes

En la Figura 10.37 se muestra un diagrama de bloques para la simulacin del
sistema de dos tanques de flujo interactuantes planteado en la Prctica No. 7. Se
observa que los parmetros que se introducen a travs de un programa codificado
con Matlab son el dominio de solucin del modelo y el tanque cuya respuesta se
quiere simular. De igual manera, se introducen los parmetros que especifican cada
uno de los cambios que se incluyen, dentro del diagrama de bloque, para la variable
de entrada. El cdigo se incluye en el archivo ordenmayorsimulink.m




Figura 10.37 Tanques en serie interactuantes


Las Figuras 10.38 a 10.42 muestran los diagramas de bloques de cada uno de los
sucesivos subsistemas introducidos en el diagrama de bloque de la Figura 10.37. La
estructura de los subsistemas es similar a la construida para el modelo de tres
tanques de flujo en serie no interactuantes.




Mach
207




Figura 10.38 Subsistema Tiempo Laplace





Figura 10.39 Subsistema Dominio del Tiempo


Mach
208




Figura 10.40 Subsistema Dominio Laplace





Figura 10.41 Subsistema Salida





Mach
209


Figura 10.42 Subsistema Salida1


10.9.8 Espacio de los Estados con Simulink

En la Figura 10.43 se muestra el diagrama de bloques para la simulacin del modelo
de los tres tanques de flujo en serie no interactuantes planteado en la Practica No. 7;




Figura 10.43 Tanques no interactuantes Espacio de los Estados



Figura 10.44 Tanques Interactuantes Espacio de los Estados

Mach
210
Y la Figura 10.44 muestra el diagrama de bloques para el sistema de dos tanques de
flujo interactuantes simulado en la misma prctica. Las matrices son introducidas en
el archivo ordenmayorsimulink


10.9.9 Sistemas No Lineales Reacciones de Van de Vusse

En la Prctica No. 8 se plantea la simulacin del sistema de reacciones de Van de
Vusse cuyo modelo matemtico es no lineal y sus caractersticas permiten un
anlisis en estado estacionario o dinmico


Anlisis en Estado Estacionario

En la Figura 10.45 se muestra el botn con el cual se determina el perfil de cambio
de las concentraciones de A y B en estado estacionario del sistema de reacciones de
Van de Vusse mediante las ecuaciones (8.8) y (8.9). Como se trata de un
procedimiento para calcular dichas concentraciones para diferentes valores de la
velocidad espacio se utiliza el bloque For Iterator Subsystem que se encuentra en
la librera Ports&Subsystems. La entrada a dicho subsistema es el nmero de
iteraciones y la salida ha sido anulada para mostrar los resultados en el interior del
blorque For Iterator Subsystem.




Figura 10.45 Bloque For Iterator Subsystem


Al hacer doble clic sobre el bloque se despliega el subsistema que muestra el bloque
For Iterator, y un puerto de entrada unido a un puerto de salida como se observa
en la Figura 10.46

El bloque For Iterator se especific para que la entrada del nmero de clculos se
alimente externamente seleccionando la opcin External en el cuadro Source of
number of iterations


Mach
211


Figura 10.46


El diagrama de bloques para el clculo de las concentraciones de A y B en estado
estacionario se muestra en la Figura 10.48. Para la asignacin de los sucesivos
valores de la velocidad espacio se emplea el bloque Memory de la librera
Discrete cuya funcin y especificaciones se observan en la Figura 10.47. Se asigna
como valor inicial el valor de -0.1 para que los clculos se inicien para un valor de
cero ya que esta salida se ha de sumar con el valor constante de 0.1 alimentado. La
salida de este botn es el valor de entrada anterior. Con este lazo, el valor de la
velocidad espacio cambia de 0.1 en 0.1 desde cero y un nmero de veces dado por el
nmero de iteraciones especificado. Se requiere la verificacin del cuadro de
nombre Inherit sample time.




Figura 10.47 Especificaciones del botn Memory


Tratndose de una solucin en estado estacionario se fijan tanto el tiempo inicial
como el final con un valor de cero. Al fijar un tiempo final diferente, los clculos se
repiten tantas veces como el tiempo permita repetir el nmero de clculos.



Mach
212


Figura 10.48 Subsistema para calcular el perfil de las concentraciones de A y B


El nmero de iteraciones se multiplica por el valor de 0.1 para fijar la escala en el
eje de las abscisa de 0 a 10 en las representaciones grficas. Para la observacin de
los perfiles se sugiere el intervalo de 0 a 10 en el eje de las abscisas y los intervalos
de 0 a 9 para la concentracin de A y de 0 a 1.5 para la concentracin de B.


10.10 MATLAB: COMANDOS UTILIZADOS

En los archivos codificados con Matlab para ejecutar algunas simulaciones en esta
leccin se utilizan algunos comandos como el msgbox, errordlg y sim. A
continuacin se explican en cuanto a la sintaxis empleada en algunos de ellos:


Comando msgbox

Al ejecutar este comando se despliega un cuadro de mensaje escrito por el usuario.
La sintaxis es:


Mach
213
msgbox(Mensaje, Ttulo,Icono)


Los argumentos Mensaje y Titulo se escriben entre comillas simples y son el
mensaje y el nombre o titulo, que aparecen en el cuadro. El argumento Icono es el
dibujo que aparece en el lado izquierdo y que puede ser none, error, help o
warn. El icono por defecto es el primero y los otros representan dibujos de error,
ayuda o intejeccion, respectivamente. Estos cuadros incluyen un botn OK para
aceptar el mensaje. La minimizacin o cancelacin se consigue presionado los
correspondientes en el extremo superior derecho de la barra de titulo. Algunas
alternativas para el despliegue de cuadros de mensajes son los comandos errordlg,
helpdlg y warndlg. Con ellos se tiene especificado, por defecto, el icono de
error, ayuda o interjeccin y solo requieren de la especificacin del mensaje y el
titulo. Es decir, que su sintaxis es por ejemplo para el comando errordlg:


errordlg(Mensaje, Ttulo)


El comando questdlg despliega un cuadro de mensaje con un icono de
interrogacin e incluye tres botones para presionar que, por defecto, aparecen con
los nombres de Yes, No y Cancel. La sintaxis para el comando questdlg es:


questdlg(Mensaje, Ttulo,Botn1,Boton2,Boton3,BotonPorDefecto)


A los botones pueden asignrseles nombres diferentes a los que muestran por
defecto. La presin de uno de ellos acepta como respuesta el nombre
correspondiente


Comando sim

Este comando ejecuta la simulacin de un modelo representado mediante un
diagrama de bloques en Simulink. Su sintaxis es una de las siguientes:


sim(Model)
[t,x,y] = sim(Model, Intervalo de Tiempo)



Mach
214
Model es el nombre del archivo que contiene el diagrama de bloques construido en
Simulink y debe escribirse entre comillas simples. La primera sintaxis despliega la
respuesta del sistema de acuerdo a los receptores instalados en el diagrama. Por
ejemplo, si se trata de observar la respuesta grfica es necesario abrir el diagrama de
bloques y desplegar los botones correspondientes. En el caso de respuestas
numricas receptadas en un botn To Workspace, estas se observan sobre el
espacio de trabajo en Matlab.

La segunda sintaxis despliega los valores de tiempo, variables de entrada y variables
de salida en el espacio de trabajo de Matlab. Los argumentos incluyen, adems del
nombre del modelo, el intervalo del tiempo de simulacin [to t tf]


Comando beep

Este comando, simplemente, produce un sonido al ejecutarse


10.11 MATLAB: PROGRAMAS CODIFICADOS

Archivo Sistemas.m

% Simulacion de Sistemas con Tiempo Muerto
clc
close all
msgbox('Pulse "OK" Para Entrar Al Ambiente De Simulacion En El Dominio De
Laplace Con y Sin Tiempo Muerto','Bienvenido');
beep
global R K tau X r A w num den z p Rango Inicio sigma atraso Frecuencia Fase
Sobrepaso Decaimiento fin
disp(' :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::')
disp(' ')
disp(' SIMULACION DE SISTEMAS LINEALES DE PRIMER Y SEGUNDO
ORDEN CON TIEMPO MUERTO');
disp(' ')
disp(' :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::')
disp(' ')
disp(' ')
disp(' ')
disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::')
disp(' ')
disp(' TIPO DE RESPUESTA DEL SISTEMA')
disp(' ')

Mach
215
disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::')
disp(' ')
disp(' ')
disp('1. PASO')
disp('2. RAMPA')
disp('3. SENO')
disp(' ')
R = input('Escriba La Respuesta a Simular: ');
if (R < 1)|(R > 3)
errordlg('Selecione 1, 2 o 3')
beep
R = input('Escriba La Respuesta a Simular: ');
end
clc
disp(' ')
disp(' ')

switch R

case 1
clc
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp(' CAMBIO PASO EN LA VARIABLE DE ENTRADA')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
X = input('Introduzca El Valor Del Cambio Paso En La Variable De Entrada
= ');
disp(' ')
r=0;
A=0;
w=0;
case 2

clc
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp(' CAMBIO RAMPA EN LA VARIABLE DE ENTRADA')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
r = input('Introduzca El Valor De La Pendiente De La Rampa De Entrada = ');

Mach
216
disp(' ')
X=0;
A=0;
w=0;
case 3
clc
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp(' CAMBIO SENO EN LA VARIABLE DE ENTRADA')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
A = input('Amplitud De La Entrada Seno = ');
w = input('Frecuencia De La Entrada Seno = ');
disp(' ')
X=0;
r=0;
end

disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::')
disp(' ')
disp(' PARAMETROS DE LA SIMULACION DINAMICA')
disp(' ')
disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::')
disp(' ')
helpdlg('Si Desea Ver La Respuesta Sin Tiempo Muerto Digite "Cero" De Lo
Contrario Otro Valor','Tiempo Muerto')
beep
To = input('* Escriba El Valor Del Tiempo Muerto, s = ');
Rango = input('* Tiempo de simulacin, s = ');
disp(' ')
clc
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp(' SISTEMAS')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp(' ')
disp('1. SISTEMA LINEAL DE PRIMER ORDEN: TANQUE CALENTADOR')
disp('2. SISTEMA LINEAL DE SEGUNDO ORDEN: VALVULA DE
CONTROL')
disp(' ')

Mach
217
S = input(' Que Sistema Desea Simular ?: ');
if (S < 1)|(S > 2)
errordlg('Selecione 1 o 2')
beep
S = input(' Que Sistema Desea Simular ?: ');
end
disp(' ')
disp(' ')

switch S

case 1
clc
disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::')
disp(' ')
disp('USTED ESCOGIO SIMULAR EL SISTEMA LINEAL DE PRIMER
ORDEN: TANQUE CALENTADOR!')
disp(' ')
disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::')
disp(' ')
disp(' ')

clc
disp(' ')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp(' PARAMETROS FISICOS DEL SISTEMA')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
F = input('* Flujo Volumetrico, m^3/s = ');
V = input('* Volumen Del Liquido En El Tanque, m^3 = ');
A = input('* Area De Transferencia De Calor, m^2 = ');
U = input('* Coeficiente Global De Transferencia De Calor, KW/m^2-C = ');
T = input('* Temperatura De Entrada Del Agua En Estado Estacionario, C =
');
C = input('* Calor Especfico, KJ/Kg-C = ');
RHO = input('* Densidad Del Agua, Kg/m^3 = ');
disp(' ')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')

Mach
218
disp(' PARAMETROS DINAMICOS DEL SISTEMA')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
tau = RHO*V*C/(F*RHO*C + U*A)
K = F*RHO*C/(F*RHO*C + U*A)
disp(' ')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp(' RESULTADOS')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')

switch R
case 2
disp('Atraso De La Respuesta Lineal')
tau

case 3
disp('Amplitud Del Perfil Sinusoidal De La Respuesta');
K*A/sqrt(1+(w*tau)^2)
disp('Fase de la respuesta con respecto a la entrada');
atan(-w*tau)
end
STOP=input('Presione ENTER para ver la simulacion en Simulink');
clc



case 2

clc
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp('!USTED ESCOGIO SIMULAR EL SISTEMA LINEAL DE SEGUNDO
ORDEN: VALVULA DE CONTROL!')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp(' ')


Mach
219
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp(' PARAMETROS FISICOS DEL SISTEMA')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
M = input('* Masa Del Bloque, lbm = ');
C = input('* Coeficiente De Amortiguamiento Viscoso, lbf/pie/s = ');
K = input('* Constante De Hooke Del Resorte, lbf/pie = ');
A = input('* Area Del Diafragma, pie^2 = ');
disp(' ')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp(' PARAMETROS DINAMICOS DEL SISTEMA')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
tau = sqrt(M/(32.2*K))
K = A/K
sigma = sqrt((32.2*C^2)/(4*M*K))
disp(' ')
disp(' ')
disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::')
disp(' ')
disp(' RAICES DE LA ECUACION CARACTERISTICA')
disp(' ')
disp(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::')
disp(' ')
p = [tau^2 2*sigma*tau 1];
z = roots(p)
disp(' ')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')
disp(' RESULTADOS')
disp(' ')
disp('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ')
disp(' ')

switch R
case 1
if sigma > 1

Mach
220
disp('Respuesta Sobreamortiguada Estable')
disp('Atrasos Dinmicos')
atraso = -1./z
elseif sigma == 1
disp('Respuesta Amortiguada Crtica')
disp('Atrasos Dinmicos')
atraso = -1./z
elseif (sigma < 1)&(sigma > 0)
disp('Respuesta Subamortiguada Estable')
Frecuencia = sqrt(1-sigma^2)/tau
Fase = atan(sqrt(1-sigma^2)/sigma)
Sobrepaso = 100*exp(-pi*sigma/sqrt(1-sigma^2))
Decaimiento = (Sobrepaso/100)^2
elseif sigma == 0
disp('Respuesta Oscilatoria Sostenida')
else
disp('Respuesta Inestable')
end

case 2
if sigma > 1
disp('Respuesta Sobreamortiguada')
disp('Atrasos dinmicos')
atraso = -1./z
elseif sigma == 1
disp('Respuesta Amortiguada Crtica')
disp('Atrasos dinmicos')
atraso = -1./z
elseif (sigma < 1)&(sigma > 0)
disp('Respuesta Subamortiguada')
Frecuencia = (sqrt(1-sigma^2))/tau
Fase = atan(2*sigma*(sqrt(1-sigma^2))/(2*sigma^2-1))
elseif sigma == 0
disp('Respuesta Oscilatoria Sostenida')
else
disp('Respuesta Inestable')
end

case 3
if sigma > 1
disp('Respuesta Sobreamortiguada')
disp('Atrasos dinmicos')
atraso = -1./z

Mach
221
Fase = atan(-w*atraso(1)) + atan(-w*atraso(2))
Amplitud = K*A/((sqrt(1+(w*atraso(1))^2))*(sqrt(1+(w*atraso(2))^2)))
elseif sigma == 1
disp('Respuesta Amortiguada Crtica')
disp('Atrasos dinmicos')
atraso = -1./z
elseif (sigma < 1)&(sigma > 0)
disp('Respuesta Subamortiguada')
elseif sigma == 0
disp('Respuesta Oscilatoria Sostenida')
else
disp('Respuesta Inestable')
end
end
STOP=input('Presione ENTER para ver la simulacion en Simulink');
clc

end

sim('Primer_Segundo_Orden')
Primer_Segundo_Orden


Archivo ordenmayorsimulink

clc
close all
global Ti Inicio K1 K2 K3 rho V Cv Cp w t0 tau1 tau2 tau3 h n m g11 g12 g13 g21
g22 g23 g31 g32 g33 G h11 h21 h31 H GH a11 a12 a13 a21 a22 a23 a31 a32 a33 A
b11 b21 b31 B C D f1 f2 T10 T20 K10 K20 V1 V2 r r2 P P2 Am wf Am2 wf2 NT
disp('
|******************************************************************|'
)
disp(' RESPUESTAS: PAS0, RAMPA Y SENO PARA SISTEMAS DE
ORDEN MAYOR')
disp('
|*******************************************************************
********|')
disp(' ')
disp(' |*********|')
disp(' SISTEMAS')
disp(' |*********|')
disp(' ')

Mach
222
disp('1. SISTEMA NO INTERACTUANTE')
disp('2. SISTEMA INTERACTUANTE')
disp(' ');

% CAPTURA DEL MODELO
S = [1 2];
S = input('Digite el numero del sistema que desee SIMULAR = ');
if S>2 | S<1
errordlg('El numero del sistema tiene que ser 1 o 2')
disp(' ')
S = input('Digite el numero del sistema que desee SIMULAR = ');
end
disp(' ');
disp(' |*************************************************|')
disp(' TIPO DE RESPUESTA DEL SISTEMA')
disp(' |*************************************************|')
disp(' ')
disp(' ')
disp('1. PASO')
disp('2. RAMPA')
disp('3. SENO')
disp(' ')

% CAPTURA DE LA RESPUESTA
R = [1 2 3];
R = input('Digite el numero de la respuesta a simular = ');
if R>3 | R<1
errordlg('El numero de la respuesta tiene que ser 1,2 o 3')
disp(' ')
R = input('Digite el numero de la respuesta que desee simular = ');
end
disp(' ')
disp(' |**********|')
disp(' DOMINIOS')
disp(' |**********|')
disp(' ')
disp('1. TIEMPO')
disp('2. LAPLACE')
disp('3. TIEMPO - ESPACIO DE LOS ESTADOS')
disp(' ')

% CAPTURA DEL DOMINIO
D = [1 2 3];

Mach
223
D = input('Digite el numero del dominio con que se va a hacer la simulacion = ');
if D>3 | D<1
errordlg('El numero del Dominio tiene que ser 1, 2 o 3')
disp(' ')
D = input('Digite el numero del dominio con que se va a hacer la simulacion = ');
end
disp(' ')
switch S
case 1
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' PARMETROS FSICOS DEL SISTEMA NO
INTERACTUANTE')
disp('
|*******************************************************************
**************|')
disp(' ')
% ENTRADAS
rho = input('Valor de la densidad, lb/pie3 = ');
V = input('Volumen de los tanques, pie3 = ');
Cv = input('Calor especifico a volumen constante, Btu/lb-F = ');
Cp = Cv;
w = input('Flujo masico, lb/min = ');
Ti = input('Valor de Ti, F = ');
t0 = input('Tiempo de simulacin, min = ');
Inicio = input('Condiciones iniciales = ');

% PROCESO
tau1 = rho*V*Cv/(w*Cp);
tau2 = tau1;
tau3 = tau2;
K1 = w*Cp/(w*Cv);
K2 = K1;
K3 = K2;

switch R
case 1
disp(' ')
disp('
|*******************************************************************
**************|')

Mach
224
disp(' CAMBIO PASO DE UN SISTEMA NO INTERACTUANTE')
disp('
|*******************************************************************
**************|')
disp(' ')
% ENTRADAS
P = input('Cambio paso = ');
r=0;Am=0;wf=0;

switch D
case 1
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' RESPUESTA PASO DE UN SISTEMA NO INTERACTUANTE EN
EL DOMINIO DEL TIEMPO')
disp('
|*******************************************************************
**************|')
disp(' ')

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')
sim('nointerordenmayor')
nointerordenmayor


case 2
disp(' ')

Mach
225
disp('
|*******************************************************************
**************|')
disp(' RESPUESTA PASO DE UN SISTEMA NO INTERACTUANTE EN
EL DOMINIO DE LAPLACE ')
disp('
|*******************************************************************
**************|')
disp(' ')

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')
sim('nointerordenmayor')
nointerordenmayor


case 3
disp(' ')
disp('
|*******************************************************************
*****************************|')
disp(' RESPUESTA PASO DE UN SISTEMA NO INTERACTUANTE EN EL
DOMINIO DEL TIEMPO - ESPACIO DE LOS ESTADOS')
disp('
|*******************************************************************
*****************************|')
disp(' ')

% PROCESO
a11 = -1/tau1;
a12 = 0;
a13 = 0;

Mach
226
a21 = K1/tau2;
a22 = -1/tau2;
a23 = 0;
a31 = 0;
a32 = K2/tau3;
a33 = -1/tau3;
A = [a11 a12 a13; a21 a22 a23; a31 a32 a33]
b11 = K1/tau1;
b21 = 0;
b31 = 0;
B = [b11; b21; b31]
C = [1 0 0; 0 1 0; 0 0 1]
D = [0;0;0];

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')
sim('nointerss')
nointerss
end

case 2
disp('
|*******************************************************************
**************|')
disp(' CAMBIO RAMPA DE UN SISTEMA NO
INTERACTUANTE')
disp('
|*******************************************************************
**************|')
disp(' ')
% ENTRADAS
r = input('Pendiente = ');

Mach
227
P=0;Am=0;wf=0;

switch D
case 1
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' RESPUESTA RAMPA DE UN SISTEMA NO INTERACTUANTE EN
EL DOMINIO DEL TIEMPO')
disp('
|*******************************************************************
**************|')
disp(' ')

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')

case 2
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' RESPUESTA RAMPA DE UN SISTEMA NO INTERACTUANTE EN
EL DOMINIO DE LAPLACE ')
disp('
|*******************************************************************
**************|')
disp(' ')

% RESULTADOS
disp(' ')

Mach
228
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')

case 3
msgbox('En el espacio de los estados solo se puede simular la respuesta paso')
disp(' ')
input(' Pulse ENTER para terminar y realizar una nueva Simulacion')
clc
close all
ordenmayorsimulink
end
sim('nointerordenmayor')
nointerordenmayor

case 3
disp('
|*******************************************************************
**************|')
disp(' CAMBIO SENO DE UN SISTEMA NO INTERACTUANTE')
disp('
|*******************************************************************
**************|')
disp(' ')
% ENTRADAS
Am = input('Amplitud = ');
wf = input('Frecuencia (rad/seg) = ');
P=0;r=0;

switch D
case 1
disp(' ')
disp('
|*******************************************************************
**************|')

Mach
229
disp(' RESPUESTA SENO DE UN SISTEMA NO INTERACTUANTE EN
EL DOMINIO DEL TIEMPO')
disp('
|*******************************************************************
**************|')
disp(' ')

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')

case 2
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' RESPUESTA SENO DE UN SISTEMA NO INTERACTUANTE EN
EL DOMINIO DE LAPLACE ')
disp('
|*******************************************************************
**************|')
disp(' ')

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')

Mach
230
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')

case 3
msgbox('En el espacio de los estados solo se puede simular la respuesta paso')
disp(' ')
input(' Pulse ENTER para terminar y realizar una nueva Simulacion')
clc
close all
ordenmayorsimulink
end
sim('nointerordenmayor')
nointerordenmayor
end

case 2
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' PARMETROS FSICOS DEL SISTEMA
INTERACTUANTE')
disp('
|*******************************************************************
**************|')
disp(' ')

% ENTRADAS
rho = input('Valor de la densidad, lb/pie3 = ');
V1 = input('Volumen del primer tanque, pie3 = ');
V2 = input('Volumen del segundo tanque, pie3 = ');
f1 = input('Flujo volumetrico de entrada al primer tanque, pie3/min= ');
f2 = input('Flujo volumetrico de entrada al segundo tanque, pie3/min= ');
Cv = input('Calor especifico a volumen constante, Btu/lb-F = ');
Cp = Cv;
T10 = input('Temperatura Inicial del Tanque 1, F = ');
T10 = T20;
t0 = input('Tiempo de simulacin, min = ');
Inicio = input('Condiciones iniciales = ');

% PROCESO
Cp = Cv;

Mach
231
tau1 = rho*V1*Cv/(rho*Cp*(f1 + 0.2*(f1 + f2)))
tau2 = rho*V2*Cv/(1.2*rho*Cp*(f1 + f2))
K10 = f1/(f1 + 0.2*(f1 + f2))
K20 = f2/(1.2*(f1 + f2))
K1 = 0.2*(f1 + f2)/(f1 + 0.2*(f1 + f2))
K2 = (f1 + 0.2*(f1 + f2))/(1.2*(f1 + f2))

switch R
case 1
disp('
|*******************************************************************
**************|')
disp(' CAMBIO PASO DE UN SISTEMA INTERACTUANTE')
disp('
|*******************************************************************
**************|')
disp(' ')
% ENTRADAS
NT = [1 2];
NT = input('Nmero del tanque a cambiar = ');
switch NT
case 1
P = input('Cambio paso en el Primer Tanque = ');
P2 =0;
case 2
P =0;
P2 = input('Cambio paso en el Segundo Tanque = ');
end
r=0;Am=0;wf=0;r2=0;Am2=0;wf2=0;

switch D
case 1
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' RESPUESTA PASO DE UN SISTEMA INTERACTUANTE EN EL
DOMINIO DEL TIEMPO')
disp('
|*******************************************************************
**************|')
disp(' ')


Mach
232
% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')
sim('interordenmayor')
interordenmayor

case 2
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' RESPUESTA PASO DE UN SISTEMA INTERACTUANTE EN EL
DOMINIO DE LAPLACE ')
disp('
|*******************************************************************
**************|')
disp(' ')

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')
sim('interordenmayor')
interordenmayor

Mach
233

case 3
disp(' ')
disp('
|*******************************************************************
*****************************|')
disp(' RESPUESTA PASO DE UN SISTEMA INTERACTUANTE EN EL
DOMINIO DEL TIEMPO - ESPACIO DE LOS ESTADOS')
disp('
|*******************************************************************
*****************************|')
disp(' ')

% PROCESO
a11 = -1/tau1;
a12 = K1/tau1;
a21 = K2/tau2;
a22 = -1/tau2;
A = [a11 a12; a21 a22]
b11 = K10/tau1;
b12 = 0;
b21 = 0;
b22 = K20/tau2;
B = [b11 b12; b21 b22]
C = [1 0; 0 1]
D = [0 0;0 0]

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')
sim('interss')
interss
end

Mach
234

case 2
disp('
|*******************************************************************
**************|')
disp(' CAMBIO RAMPA DE UN SISTEMA INTERACTUANTE')
disp('
|*******************************************************************
**************|')
disp(' ')
NT = [1 2];
NT = input('Nmero del tanque a cambiar = ');
switch NT
case 1
r = input('Pendiente en el Primer Tanque = ');
r2 =0;
case 2
r =0;
r2 = input('Pendiente en el Segundo Tanque = ');
end
P=0;Am=0;wf=0;P2=0;Am2=0;wf2=0;
switch D
case 1
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' RESPUESTA RAMPA DE UN SISTEMA INTERACTUANTE EN EL
DOMINIO DEL TIEMPO')
disp('
|*******************************************************************
**************|')
disp(' ')

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')

Mach
235
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')

case 2
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' RESPUESTA RAMPA DE UN SISTEMA INTERACTUANTE EN EL
DOMINIO DE LAPLACE ')
disp('
|*******************************************************************
**************|')
disp(' ')

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')

case 3
msgbox('En el espacio de los estados solo se puede simular la respuesta paso')
disp(' ')
input(' Pulse ENTER para terminar y realizar una nueva Simulacion')
clc
close all
ordenmayorsimulink
end
sim('interordenmayor')
interordenmayor
case 3

Mach
236
disp('
|*******************************************************************
**************|')
disp(' CAMBIO SENO DE UN SISTEMA INTERACTUANTE')
disp('
|*******************************************************************
**************|')
disp(' ')
NT = [1 2];
NT = input('Nmero del tanque a cambiar = ');
switch NT
case 1
Am = input('Amplitud, Am = ');
wf = input('Frecuencia, wf (rad/seg) = ');
Am2 = 0;
wf2 = 0;
case 2
Am = 0;
wf = 0;
Am2 = input('Amplitud, Am2 = ');
wf2 = input('Frecuencia, wf2 (rad/seg) = ');
end
P=0;r=0;P2=0;r2=0;
switch D
case 1
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' RESPUESTA SENO DE UN SISTEMA INTERACTUANTE EN EL
DOMINIO DEL TIEMPO')
disp('
|*******************************************************************
**************|')
disp(' ')

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')

Mach
237
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')

case 2
disp(' ')
disp('
|*******************************************************************
**************|')
disp(' RESPUESTA SENO DE UN SISTEMA INTERACTUANTE EN EL
DOMINIO DE LAPLACE ')
disp('
|*******************************************************************
**************|')
disp(' ')

% RESULTADOS
disp(' ')
disp(' |***********|')
disp(' RESULTADOS')
disp(' |***********|')
disp('LAS CONSTANTES DE TIEMPO SON :')
disp(' ')
disp('tau1 = tau2 = tau3 = '), disp(tau1)
disp(' ')
disp('LAS GANANCIAS SON :')
disp(' ')
disp('K1 = K2 = K3 ='), disp(K1)
disp(' ')

case 3
msgbox('En el espacio de los estados solo se puede simular la respuesta paso')
disp(' ')
input(' Pulse ENTER para terminar y realizar una nueva Simulacion')
clc
close all
ordenmayorsimulink
end
sim('interordenmayor')
interordenmayor

Mach
238
end
end

disp(' ')
disp('===============================================
========================================= ')
disp(' ')
disp('1. NUEVA SIMULACION')
disp('2. TERMINAR LA SIMULACION')
disp(' ')
Sim=input('Escoger la opcion a realizar = ');
if Sim == 1
clc
close all
ordenmayorsimulink
else
if Sim ==2
clc
close all
end
end






Departamento de Electrnica
Universidad de Alcal















Introduccin a MATLAB, Toolbox de
Control y Simulink





Ingeniera Tcnica de Telecomunicacin
Especialidad Sistemas Electrnicos



Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 2 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
1. QU ES MATLAB?.

Paquete software orientado al clculo numrico, matrices,
procesamiento y anlisis de la seal y grficas

Distintos campos de accin (aplicaciones):

Teora de control
Tratamiento de seales
Inteligencia artificial
Diseo de sistemas de potencia
Control de procesos mecnicos, de aviacin, automocin, etc.
Financiero
Mapeo y tratamiento de imgenes
Instrumentacin y adquisicin de datos
Identificacin de sistemas
...

Varios programas incluidos

MATLAB: Ncleo operativo de la herramienta matemtica
Toolboxes: Libreras de funciones MATLAB asociadas a las
diferentes aplicaciones (Stateflow y Sisotool, interfaz grfico,
control neuronal y borroso)
Simulink: Interfaz grfico para el modelado y simulacin de
sistemas
Blocksets: Bloques Simulink para aplicaciones especficas
Real Time Workshop, xPC Tarjet y desarrollo sobre DSPs y
FPGAs

Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 3 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Diferentes tipos de archivos:

*.M Ficheros por lotes (*.bat) sobre S.O. MATLAB
*.MAT Fichero de datos de MATLAB
*.DLL Ficheros ejecutables sobre Windows diseados con
MATLAB
*.MDL Modelos de Simulink
Otros *.fis, *.tbl, etc. para toolboxes de control borroso, stateflow
y otros paquetes


ENTORNO DE TRABAJO

Varias ventanas de trabajo dentro de MATLAB

Ventana de comandos:
Directamente sobre S.O. MATLAB
Entorno de trabajo (Workspace):
Visualiza las variables definidas en
cada instante
Editor de ficheros *.m: Editor
inteligente (colores e indentado)
con depurador paso a paso y
visualizacin de variables internas
Editor de ficheros *.mdl: Editor
grfico para disear modelos de
Simulink
Eleccin del directorio de
trabajo: Explorador de Windows
Figuras: Potente editor de figuras
con posibilidad de incluir textos,
cambiar el formato, etc.

Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 4 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos












Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 5 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
2. EL USO DE MATLAB

MANIPULACIN Y FORMATO DE DATOS

Se trabaja con matrices de nmeros reales o/y complejos.

Los nmeros complejos se definen gracias a los operadores i y j de
MATLAB. As se puede escribir en MATLAB x=3+2j, que se definir
como una matriz de tamao 1x1

Un escalar es una matriz de tamao 1x1

Una variable fila o columna es un vector, o un array

Existen distintos formatos de datos con los que puede trabajar
MATLAB:

Short: 5 dgitos, punto fijo
Short e: 5 dgitos, punto flotante
Long: 15 dgitos, punto fijo
Long e: 15 dgitos, punto flotante
Hex: Hexadecimal

Para indicar que se va a trabajar con uno u otro formato de datos
se utiliza la funcin de MATLAB format


GENERACIN DE MATRICES

Cmo generar una fila?

A=[a b c d e] A=[a, b, c, d, e]




Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 6 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Cmo generar una columna?
B=[a; b; c; d; e]

=
e
d
c
b
a
B

Cmo generar una matriz?

A= [a, b, c; d, e, f; g, h, i]

Cmo generar un serie de datos?

A(punto inicial: incremento: punto final)


Ejemplo:

B=[1:1:8]

Con lo que se define un array B con el siguiente contenido:

B=[1 2 3 4 5 6 7 8 ]


SUBMATRICES Y ELEMENTOS DE UNA MATRIZ

Para identificar un elemento de una matriz se usa la notacin A(i,j)
dnde i es la i-sima fila y j es la j-sima columna.

=
i h g
f e d
c b a
A
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 7 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Ejemplo:

Sea A la siguiente matriz:

Para identificar al n 4 dentro de la matriz A se puede indicar como
A(2,1)

Se puede identificar una parte de una matriz (submatriz) con la
siguiente notacin:

A(fila_inicial:fila_final, col_inicial:col_final)


Ejemplo:

A partir de la matriz A definida en el ejemplo anterior, se define la
matriz B de la siguiente forma:

B=A(1:3,1:2)

Entonces B ser una nueva matriz de valor:


Truco: El operador : puede utilizarse para identificar a todos los
elementos en una serie de datos. As en el ejemplo anterior
B=A(1:3,1:2) es lo mismo que B=A(:,1:2)


=
9 8 7
6 5 4
3 2 1
A

=
8 7
5 4
2 1
B
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 8 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
VARIABLES

A la hora de definir una variable (matriz, submatriz, array o escalar)
se distingue entre maysculas y minsculas.

Cuando se llama a una funcin de MATLAB sin especificar variable
de salida, se vuelca el resultado en la variable por defecto ans. La
notacin ; omite la presentacin del resultado en pantalla al final de
un comando


COMANDOS Y FUNCIONES DE MATLAB

MATLAB posee gran nmero de funciones provenientes de:

MATLAB: Juego de funciones y operadores bsico
Toolbox: Dependiendo del tipo aadir funciones especiales
Generadas por el usuario: funciones o scripts

Operadores de uso general (help general)

help Comando de ayuda
who (s) Lista de variables (con s indica info sobre variable)
what (o dir) Lista de ficheros .M y .MAT
clear Borrar variables
load Carga de variables desde un fichero
save Guardar variables a un fichero *.mat
cd Cambiar de directorio de trabajo
! Ejecutar funciones DOS
... Contina en la lnea siguiente
% Comentario en una funcin
demo Llamada a los ejemplos de uso de MATLAB
mex Compilar ficheros de MATLAB


Truco: Es muy recomendable el uso de la help de MATLAB
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 9 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Operadores para matrices y arrays y variables especiales (help
ops)

ans Most recent answer.
eps Floating point relative accuracy.
realmax Largest positive floating point number.
realmin Smallest positive floating point number.
pi 3.1415926535897....
i, j Imaginary unit.
inf Infinity.
NaN Not a number
isnan True for Not a number
isinf True for infinite elements.
isfinite True for finite elements.
why Succinct answer.




Nota: Es importantsimo tener en cuenta la propiedad conmutativa en
algunas operaciones aritmticas de matrices.

A/B B/A
ya que A/B= A*B
-1
y B/A= B*A
-1

Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 10 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Otras funciones especiales, que se organizan en diferentes
categoras. Las que no pertenecen a ninguna toolbox ni blockset
especfico se muestran en la siguiente tabla:

MATLAB\lang Programming language constructs.
MATLAB\elmat Elementary matrices & matrix manipulation.
MATLAB\elfun Elementary math functions.
MATLAB\specfun Specialized math functions.
MATLAB\matfun Matrix functions
MATLAB\datafun Data analysis and Fourier transforms.
MATLAB\audio Audio support.
MATLAB\polyfun Interpolation and polynomials.
MATLAB\funfun Function functions and ODE solvers.
MATLAB\sparfun Sparse matrices.
MATLAB\graph2d Two dimensional graphs.
MATLAB\graph3d Three dimensional graphs.
MATLAB\specgraph Specialized graphs.
MATLAB\graphics Handle Graphics.
MATLAB\uitools Graphical user interface tools.
MATLAB\strfun Character strings.
MATLAB\iofun File input/output.
MATLAB\timefun Time and dates.
MATLAB\datatypes Data types and structures.
MATLAB\verctrl Version control.
MATLAB\demos Examples and demonstrations.

De entre ellas se pueden remarcar algunas ms interesantes:


Polinomios (help polyfun)

roots Find polynomial roots.
poly Convert roots to polynomial.
polyval Evaluate polynomial.
polyvalm Evaluate polynomial with matrix argument.
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 11 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
residue Partial fraction expansion (residues).
polyfit Fit polynomial to data.
polyder Differentiate polynomial.
polyint Integrate polynomial analytically.
conv Multiply polynomials.
deconv Divide polynomials.

Adems de stas, en esta categora, hay funciones especficas para
anlisis geomtrico y de interpolacin.


Estructuras del lenguaje MATLAB (help lang) (solo las ms
representativas)

if Conditionally execute statements.
else IF statement condition.
elseif IF statement condition.
end Terminate scope of FOR, WHILE, SWITCH, TRY and IF
for Repeat statements a specific number of times.
while Repeat statements an indefinite number of times.
break Terminate execution of WHILE or FOR loop.
continue Pass control to the next iteration of FOR or WHILE loop.
switch Switch among several cases based on expression.
case SWITCH statement case.
otherwise Default SWITCH statement case.
try Begin TRY block.
catch Begin CATCH block.
return Return to invoking function.
error Display error message and abort function.
warning Display warning message.
lasterr Last error message.
lastwarn Last warning message.
disp Display an array.
display Overloaded function to display an array.
fprintf Display formatted message.
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 12 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
sprintf Write formatted data to a string.
input Prompt for user input.
keyboard Invoke keyboard from M file
pause Wait for user response.
uimenu Create user interface menu.
uicontrol Create user interface control.


Generacin de matrices (help elmat)

zeros Zeros array.
ones Ones array.
eye Identity matrix.
repmat Replicate and tile array.
rand Uniformly distributed random numbers.
randn Normally distributed random numbers.
linspace Linearly spaced vector.
logspace Logarithmically spaced vector.
freqspace Frequency spacing for frequency response.
meshgrid X and Y arrays for 3 D plots.


Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 13 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Funciones Elementales.

sin Sine.
sinh Hyperbolic sine.
asin Inverse sine.
asinh Inverse hyperbolic sine.
cos Cosine.
cosh Hyperbolic cosine.
acos Inverse cosine.
acosh Inverse hyperbolic cosine.
tan Tangent.
tanh Hyperbolic tangent.
atan Inverse tangent.
atan2 Four quadrant inverse tangent.
atanh Inverse hyperbolic tangent.
sec Secant.
sech Hyperbolic secant.
asec Inverse secant.
asech Inverse hyperbolic secant.
csc Cosecant.
csch Hyperbolic cosecant.
acsc Inverse cosecant.
acsch Inverse hyperbolic cosecant.
cot Cotangent.
coth Hyperbolic cotangent.
acot Inverse cotangent.
acoth Inverse hyperbolic cotangent.
exp Exponential.
log Natural logarithm.
log10 Common (base 10) logarithm.
log2 Base 2 logarithm and dissect floating point number.
pow2 Base 2 power and scale floating point number.
sqrt Square root.
nextpow2 Next higher power of 2.
abs Absolute value.
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 14 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
angle Phase angle.
complex Construct complex data from real & imaginary parts.
conj Complex conjugate.
imag Complex imaginary part.
real Complex real part.
unwrap Unwrap phase angle.
isreal True for real array.
cplxpair Sort numbers into complex conjugate pairs.
fix Round towards zero.
floor Round towards minus infinity.
ceil Round towards plus infinity.
round Round towards nearest integer.
mod Modulus (signed remainder after division).
rem Remainder after division.
sign Signum.


Anlisis de datos

max Largest component.
min Smallest component.
mean Average or mean value.
median Median value.
std Standard deviation.
var Variance.
sort Sort in ascending order.
sum Sum of elements.
prod Product of elements.
hist Histogram.
histc Histogram count.
trapz Trapezoidal numerical integration.
diff Difference and approximate derivative.
gradient Approximate gradient.
cov Covariance matrix.
filter One dimensional digital filter.
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 15 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
filter2 Two dimensional digital filter
conv Convolution and polynomial multiplication.
convn N dimensional convolution
deconv Deconvolution and polynomial division.
fft Discrete Fourier transform.
fftn N dimensional discrete Fourier Transform.
ifft Inverse discrete Fourier transform.
ifftn N dimensional inverse discrete Fourier Transform.


Manipulacin de matrices

norm Matrix or vector norm.
normest Estimate the matrix 2 norm
rank Matrix rank.
det Determinant.
trace Sum of diagonal elements.
null Null space.
orth Orthogonalization.
inv Matrix inverse.
pinv Pseudoinverse.
lscov Least squares with known covariance.
eig Eigenvalues and eigenvectors.
svd Singular value decomposition.
gsvd Generalized singular value decomposition.
eigs A few eigenvalues.
svds A few singular values.
polyeig Polynomial eigenvalue problem.
expm Matrix exponential.
logm Matrix logarithm.
sqrtm Matrix square root.




Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 16 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
FUNCIONES DE REPRESENTACIN GRFICA

La funcin ms importante es plot, que abre una ventana de figura
y representa en ella (en general) los datos que le son pasados
como parmetros. Para representar x=f(t) se har la llamada
plot (t,x)

Se puede incluir informacin sobre el formato del grfico (color, tipo
de lnea, etc). Las opciones posibles son las que se muestran a
continuacin (help plot):





















Permite realizar representaciones de varias seales en una misma
figura. Para ello simplemente se incluyen todas las variables en una
misma llamada a plot.


* star
+ plus
-- dashed
x x-mark
-. dashdot
o circle
: dotted
. point
- solid
^ triangle (up)
< triangle (left)
> triangle (right)
v triangle (down)
d diamond
s square
p pentagram
h hexagram
y yellow
m magenta
c cyan
r red
g green
b blue
w white
k black
Color
Tipo de lnea
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 17 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Funciones asociadas a plot:

loglog Log log scale plot.
semilogx Semi log scale plot.
semilogy Semi log scale plot.
polar Polar coordinate plot.
zoom Zoom in and out on a 2 D plot.
grid Grid lines.
subplot Create axes in tiled positions.
plotedit Tools for editing and annotating plots.
legend Graph legend.
title Graph title.
xlabel X axis label.
ylabel Y axis label.
text Text annotation.
gtext Place text with mouse.

Merece la pena especial atencin a la funcin subplot que divide la
pantalla grfica (ventana de figura) en N filas y M columnas. El formato
funcin es subplot (N, M, J), donde J es la sub-figura sobre la que se
quiere dibujar.


Funciones asociadas a las figuras en general

figure Create figure window.
clf Clear current figure.
close Close figure.
subplot Create axes in tiled positions.
cla Clear current axes.
axis Control axis scaling and appearance.
hold Hold current graph.
ishold Return hold state.
line Create line.
text Create text.
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 18 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
surface Create surface.
image Create image.
set Set object properties.
get Get object properties.
drawnow Flush pending graphics events.


Ejemplo:

Representar una seal senoidal y otra cosenoidal en la misma figura
entre 0 y 6 (3 periodos de la seal senoidal). Se hara de la siguiente
forma:

t=(0:0.1:6*pi) % el incremento de punto a punto de la
grfica ser de 0.1
x=sin(t) % se crea el vector x, ser la salida senoidal
y=cos(t) % se crea el vector y, ser salida cosenoidal
plot(t,x,b,t,y,c+) % se dibujan en la misma grfica y con
distintos formatos de ploteado (color y
punteado)

Adems, con las siguientes lneas de MATLAB se han incorporado los
textos a la figura:

grid
title(Ejemplo funcion seno y coseno)
xlabel(tiempo)
ylabel(seno/coseno)
gtext(valor nulo) % y se coloca el texto en el punto deseado
gtext(valor mximo) % y se coloca el texto en el punto deseado
gtext(valor mnimo) % y se coloca el texto en el punto deseado

El resultado es una ventana figura como la que se muestra a
continuacin:


Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 19 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos


Ejemplo:

Se desea representar ahora las seales senoidal y cosenoidal en la
misma ventana de figuras pero por separado, por lo que se usa
subplot, de este modo:

subplot(2,1,1) % se elige la subfigura primera o superior: fila
1, columna 1
plot(t,x,'b')
grid
title(Ejemplo funcion seno)
xlabel(tiempo)
ylabel(seno)
subplot(2,1,2) % se elige la subfigura segunda o inferior: fila
2, columna 1
plot(t,y,'c+')
grid
title(Ejemplo funcion coseno)
xlabel(tiempo)
ylabel(coseno)
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 20 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Tal y como se observa todas las funciones de dibujo se refieren a la
sub-figura elegida con la funcin subplot. El resultado es el que se
muestra a continuacin:

0 2 4 6 8 10 12 14 16 18 20
-1
-0.5
0
0.5
1
Ejemplo funcion seno
tiempo
s
e
n
o
0 2 4 6 8 10 12 14 16 18 20
-1
-0.5
0
0.5
1
c
o
s
e
n
o
tiempo
Ejemplo funcion coseno



FICHEROS *.M: SCRIPTS Y FUNCIONES.

Son archivos tipo ASCII (se realizan en cualquier editor ASCII,
aunque conviene usar el que tiene MATLAB para ello, pues incluye
un depurador) que contienen una serie de rdenes incluso
llamadas a otros ficheros *. M

Ambas se pueden llamar desde la lnea de comandos de MATLAB
o desde otra estructura similar


Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 21 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Los ficheros tipo scripts:

Estn compuestos por llamadas a otras funciones de MATLAB
(parecido a las llamadas realizadas por DOS en los ficheros
*.BAT)
Puede utilizar las variables del entorno de trabajo (Workspace) y
devuelve los resultados a este mismo entorno. Se trata por tanto
de trabajo con variables globales
Se suelen utilizar para tareas de inicializacin o de definicin de
un gran nmero de variables en el entorno de trabajo

Por su parte, las funciones:

Comienzan con la palabra clave function en la primera lnea del
fichero
Es una aplicacin (funcin) definida por el usuario a la que se le
pasan parmetros y que permite devolver parmetros, de forma
similar a funciones en C. La sintaxis para el paso de
parmetros es la siguiente:

function [salida1, salida2,...] = nom_funcin(param1, param2,...)

Las variables que utiliza son, por tanto, locales a la funcin
(principal diferencia con los scripts)
La funcin definida por el usuario se podr invocar desde la
lnea de comandos o desde cualquier script
Deben de coincidir el nombre del fichero y el nombre de la
funcin a implementar
Tras la primera lnea (function... ) se inctroducen lneas de
comentario (comienzan por %), que sern la ayuda de la funcin
que se presente en la ventana de comandos de MATLAB
cuando se invoque a la ayuda de dicha funcin. Por ejemplo si
se define la funcin prueba de este modo:

function prueba()
%esta funcin no tiene parmetros de entrada ni de salida
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 22 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Cuando se invoque a la ayuda de la funcin en la ventana de
rdenes de MATLAB aparecer lo siguiente:

>> help prueba
>> esta funcin no tiene parmetros de entrada ni de salida

Suele ser habitual utilizar sentencias de control (ver help lang) en la
escritura de las funciones y los scrips

Algunas de las funciones ms habituales en las funciones y los
scrips

Input: Asigna un valor introducido por teclado a una variable.
Muestra una cadena de caracteres.
Keyboard: Introduce un punto de ruptura en la secuencia de
ejecucin de la funcin. En ese momento se le permite acceder
al usuario a las variables locales y globales del sistema. Se sale
de este modo tecleando RETURN
Pause: Introduce una pausa en la ejecucin de la funcin. Se
continua con la ejecucin pulsando cualquier tecla


Ejemplo:

Crear una funcin llamada MEDIA que calcule el valor medio de un
array.

function y=media(x)

[m,n]=size(x);
if m==1 %es por tanto un vector
y=sum(x)/n;
else
error ('Debes de introducir un vector');
end


Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 23 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Ejemplo:

Realizar una funcin en MATLAB que permita resolver un sistema
lineal de n ecuaciones con n incgnitas (siendo n un valor
cualquiera). El formato de llamada a la funcin debe ser el siguiente:

[sol,n_sol]=sistema(S)

donde:
sol= vector que contiene las soluciones al sistema
N_sol= nmero de soluciones del sistema
S=matriz que contiene los coeficientes y trminos independientes de
las n ecuaciones en el siguiente formato:


function [sol,n_sol]=prac2_1(S)

%FUNCION QUE RESUELVE UN SISTEMA DE ECUACIONES

[filas,columnas]=size(S);

if (filas>columnas)
error('Sistema de ecuaciones no correcto')

else
%vector formado por la ultima col
Aux_1=S(:,columnas);

%Se convierten los trminos independientes a valor
% positivo ya que el usuario los introduce como valor negativo
Aux_1=Aux_1*(-1);
columnas=columnas-1;

%matriz cuadrada formada por los coeficientes de las variables
Aux=S(:,1:columnas);
Aux_inv=inv(Aux); %Aux_inv=Aux
-1

sol=Aux_inv*Aux_1; %matriz solucion
0 5 2 5
0 1 3 2 5
0 2 3
= +
= + +
= +
c b a
c b a
c b a


=
5 - 2 - 5 1 -
1 - 3 2 5
2 - 1 1 3
S
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 24 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
[n_sol, a]=size(sol); %retorno del resultado
end


Ejemplo:

Crear una funcin llamada MAXIMO que devuelva el mayor de los
elementos de un vector.

N=maximo(A)

N= nmero mayor de A;
A= vector enviado;

function x=maximo(A)

% Se introduce un vector y se obtiene el valor maximo de l

[m,n]=size(A); %Se saca el numero de columnas y filas
if m==1 %Se trata de un vector
long=length(A);
i=2;
sol=A(1);
while (i<=long)
if A(i)>=sol %Se compara si el valor actual es
%mayor que el anterior. Si lo es
sol=A(i); %se acumula
end %fin del if
i=i+1;
end %fin del while
x=sol;

else
error ('Introduce un vector y no una matriz');
end %fin del if principal



Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 25 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
3. EL USO DE SIMULINK

Herramienta grfica incorporada a Matlab, que permite de forma
ms fcil definir el modelo de sistemas de muy diferentes tipos (no
solo LTI) y aplicaciones

Los elementos de trabajo de un modelo de Simulink son objetos o
iconos, agrupados en libreras que proporciona el paquete
integrado de Matlab para las distintas aplicaciones

El fichero asociado a cada modelo es un *.MDL, que puede ser
abierto como un fichero *.M cualquiera (tiene una estructura
especial pero el funcionamiento es el mismo)

Se puede llamar a la librera de bloques de Simulink (ventana
Simulink) desde la ventana de comandos tecleando Simulink, o
abrir directamente un fichero *.MDL

Pasos a seguir para trabajar con Simulink:

1. Definicin grfica del modelo a simular con las libreras de
Matlab para Simulink
2. Simulacin del modelo y anlisis de resultados, que se pueden
mostrar directamente en Simulink o a travs de Matlab enviando
los resultados al entorno de trabajo

Libreras de Simulink Posee libreras distribuidas en funcin de la
aplicacin. Tiene una librera bsica, llamada Simulink, con el
siguiente contenido:

Sources (fuentes de seal)
Sinks (sumideros o almacn de resultados)
Continuous
Discrete
No linear
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 26 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Signals&Systems (buses, multiplexores y demultiplexores,
puertos para enviar seales de un modelo a otro, etc.)
Math (trigonomtricas, aritmticas, etc.)
Funciones y tablas (llamadas a funciones de Matlab o de usuario
y tablas de look-up)
...

Hay libreras especficas para cada aplicacin (Blocksets y
Toolboxes):

Control (controladores ya diseados)
Control Borroso
Control Neuronal
Identificacin
Power
DSP
Fixed Point
Comunicaciones
RTW y xPC Tarjet
Stateflow
User Interface
...

El usuario puede definir nuevas libreras a partir de algn modelo
realizado, mediante los bloques S-function


Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 27 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
OBJETOS BSICOS DE SIMULINK

Fuentes: Emisores de informacin (Generadores de seales, seal
rampa, impulso, ...)


Procesos: Bloques de E/S de todos los tipos antes mencionados


Destinos: Receptores de informacin




Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 28 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Conexiones: Son unidireccionales. Hipotticos cables.




CREACIN DE UN MODELO SIMULINK

Para generar un diagrama de bloques, una vez abierto un fichero
*.MDL nuevo y con ventana de Simulink, se sigue el siguiente
proceso:

1. Se abre la librera donde se encuentra el elemento necesario.
2. Para copiar un objeto de la sesin de trabajo, basta con
seleccionar el objeto y arrastrarlo
3. Para hacer una conexin entre una salida y una entrada, se
posiciona el cursor sobre la salida de la fuente o la entrada, se
pulsa el botn izquierdo del ratn y sin soltarlo se desplaza el
cursor hasta el otro punto que se desea unir
4. Haciendo doble click sobre los elementos copiados se modifican
los parmetros de ste. (Admiten parmetros que sean variables
de Workspace)


Ejemplo

Realizar el diagrama de bloques de la figura:


1. Se entra en Simulink y se abre una ventana nueva.
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 29 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
2. Se abre la librera continuous y se copian los bloques sumador y
F.T.
3. Se abre la librera sources y se copia el bloque escaln (step
input)
4. Se abre la librera sinks y se copia el bloque scope
5. Se unen mediante el ratn los bloques.
6. Se editan los bloques para que aparezcan como en la figura (en
el bloque Trasnfer Fcn Numerator y Denominator han de
contener los coeficientes del polinomio correspondiente en
potencias decrecientes de s). En el ejemplo:

Numerator [1 2]
Denominator [1 2 5]

7. Se salva el fichero (*.MDL).


Truco: Probar a definir los parmetros de configuracin de los bloques
mediante variables definidas previamente en el entorno de trabajo de
MATLAB. De este modo se facilita el diseo de sistemas en base a un
modo de funcionamiento prueba-error


CONFIGURACIN DE LA SIMULACIN

Es importante configurar la simulacin antes de realizarla. Para
ello, en el men principal de la ventana del modelo (*.MDL) creado
con Simulink ir a Simulation Parameters

Permite configurar diferentes caractersticas sobre la simulacin, a
saber:

La forma de resolver el sistema de ecuaciones diferenciales que
componen el modelo diseado en Simulink y al tiempo de
simulacin

Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 30 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos


Las variables de salida que ha de generar la simulacin en el
entorno de trabajo de MATLAB



Otros parmetros avanzados de simulacin, como la
configuracin de los avisos y errores que ha de generar la
simulacin por conexiones incorrectas, o la configuracin de la
compilacin del modelo con la herramienta RTW
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 31 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Con respecto al paso de SIMULACIN, es necesario tener en
cuenta ciertos aspectos bsicos

El paso de simulacin es el intervalo de integracin de los
algoritmos de resolucin del modelo
Se puede definir variable (lo fija Simulink en funcin del modelo
concreto a simular) en todos los casos excepto en la generacin
de cdigo RTW
Si el paso de simulacin es muy bajo el tiempo de ejecucin
elevado (puntos excesivos), y si es muy bajo la resolucin es
peor (se pierde definicin del sistema), pudiendo incluso llegar a
no representar correctamente le comportamiento del sistema al
no cumplir la teora de sistemas muestreados (al fin y al cabo la
simulacin de sistemas continuos con Simulink pretende
representar su comportamiento real en el tiempo)
Una regla prctica es hacer que el paso de simulacin sea al
menos de la dcima parte del tiempo de subida de la respuesta
del sistema

Con respecto a las variables de salida de Simulink, es necesario
comentar tambin un punto:

Se pueden pasar las respuestas de las simulacin al Workspace
de MATLAB a travs de los bloques to Workspace de Simulink
Convendr tambin tener en el entorno de trabajo el array de
tiempo con el que se ha generado la simulacin
ste se puede generar con un bloque Clock de Simulink y
pasarlo a MATLAB del mismo modo, pero tambin se puede
usar la variable tout que se genera automticamente si as se
indica en la configuracin de la simulacin
La variable yout que se genera del mismo modo contiene el
resultado de las seales conectadas a puertos de salida del
modelo de Simulink



Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 32 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Ejemplo:

Visualizar el resultado de la simulacin del modelo del ejemplo anterior



Nota: Prestar atencin a que la respuesta coincida exactamente con
la aqu mostrada y modificar la configuracin de los bloques de
Simulink correspondientes para que as sea


Ejemplo:

Variar el modelo anterior para implementar el siguiente sistema.
Visualizar desde MATLAB y desde Simulink los resultados (variable
Salida frente al tiempo)

Desde Simulink: con el bloque Scope:
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 33 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos

Desde MATLAB:













>>plot(tout, Salida);

o

>>plot(tiempo, Salida);
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 34 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Truco: Se puede arrancar la simulacin de un modelo preexistente
(fichero *.MDL) con la funcin sim de MATLAB, con la siguiente
sintaxis:

[T,X,Y] = sim('modelo', [TInicio TFin] ,OPTIONS,UT)

Donde los parmetros 2 al 4 de la llamada a sim son opcionales


Ejemplo:

Realizar el siguiente diagrama de bloques y representar desde
MATLAB la seal de salida

Para qu sirve el multiplexor?



Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 35 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos

4. LA TOOLBOX DE CONTROL DE MATLAB

Funciones de aplicacin especfica para ingeniera de control de
sistemas. Son ficheros *.M

Sirve tanto para control continuo como para control discreto,
clsico (en espacios transformados sobre sistemas LTI) y de otros
tipos (variables de estado, borroso, neuronal, robusto, no lineal,
etc.)

En los dos campos permite realizar tareas de: modelado,
conversin de modelos y anlisis de respuesta temporal,
frecuencial y en espacios transformados

Las herramientas para obtencin de los modelos de los sistemas
se encuentran en otra Toolbox: la de identificacin

Todas las funciones de control se encuentran en la demo de
control que se ejecuta con el comando MATLAB: ctrldemo


MODELADO DE SISTEMAS DE CONTROL CONTINUO

Las funciones de la toolbox en MATLAB permiten trabajar solo
sobre sistemas lineales e invariantes continuos y discretos en el
tiempo, y en espacio transformado

Permiten representar los sistemas LTI mediante 4 modelos
diferentes en los espacios transformados (s para sistemas
continuos y z para sistemas discretos):

Funcin de transferencia
Funcin Polo-Cero
Descomposicin en fracciones simples
Variables de Estado
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 36 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
FUNCIN DE TRANSFERENCIA

El formato Funcin de Transferencia (FT) corresponde con
representaciones del siguiente tipo:

t - j
t
2 - j
2
1 j
1
n - m
n
2 - m
2
1 - m
1
s * b ... s * b s * b
s a ... s * a s * a
den(s)
num(s)
H(s)
+ + +
+ + +
= =



Cmo se introduce en MATLAB una FT?: creando dos vectores
que contengan el valor de los coeficientes del numerador y
denominador del sistema en el espacio transformado
correspondiente


Ejemplo:

Obtenga el modelo MATLAB del siguiente sistema en formato FT:
5) 1)(s 4s (s
1 2s 3s
H(s)
2
2
+ + +
+ +
=

A travs de un fichero script, o de comandos de MATLAB:

num=[3 2 1]; %numerador
den1=[1 4 1]; %primer polinomio del denominador
den2=[1 5]; %segundo polinomio del denominador
den=conv(den1,den2); %multiplicacin de dos polinomios


FORMATO POLOCERO

El formato polocero corresponde con representaciones del
siguiente tipo:
) p - )...(s p - )(s p - )(s p - (s
) z - )...(s z - )(s z - )(s z - (s
k H(s)
n 3 2 1
n 3 2 1
=

Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 37 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Cmo se introduce en MATLAB un sistema en este formato?: en
este caso se crean dos vectores que contengan el valor de los
polos y los ceros (races del denominador y del numerador
respectivamente) de la funcin de transferencia del sistema a
representar


Ejemplo:

Obtenga el modelo MATLAB del siguiente sistema en formato cero-
polo:

5) 4)(s 3)(s (s
2) 1)(s (s
4 H(s)
+ + +
+ +
=
Mediante un fichero script:

K=4; %constante del sistema
Z=[-1 2]; %ceros del sistema
P=[-3 4 5]; %polos del sistema


CONVERSIN ENTRE FORMATOS

Las siguientes funciones permiten realizar conversiones entre los
distintos formatos de representacin de sistemas

residue Expansin en fracciones parciales
roots Obtiene las races de un polinomio
poly Obtiene un polinomio desde sus races
conv Permite multiplicar polinomios
tf2zp De FT a formato polocero
zp2tf De formato polocero a FT
c2dm, d2c Conversin entre el mundo discreto y el continuo
printsys Imprime la funcin de transferencia de un sistema

Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 38 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Ejemplo:

Transformar de formato funcin de transferencia a formato polo cero la
siguiente funcin:

) 10 2 )( 100 10 ( ) 2 (
) 1 )( 10 ( 20
) (
) (
) (
3 4 2 2
3
+ + + +
+ +
= =
s s s s s s
s s
s D
s N
s G

En MATLAB:

num1=10;
num2=[1 10]; %(s+10)
num3=[1 0 0 1]; % (s^3+1)
NUM=conv(num1,(conv(num2,num3)));

den1=[1 0]; % (s)
den2=[1 2]; % (s+2)
den2=conv(den2,den2); %Generando (s+2)^2
den3=[1 10 100]; %(s^2+10s+100)
den4=[1 2 0 0 -10]; %(s^4+2s^3-10)
DEN=conv(den1,conv(den2,conv(den3,den4)));

[Z,P,K]=tf2zp(NUM,DEN); %CONVERSIN A CERO POLO


Ejemplo:

Transformar de formato polo-cero a formato funcin de transferencia la
siguiente funcin:

) 2 ( ) 3 )( 4 (
) 1 (
) (
2 3 4 2
3
+ + + + +
+
=
s s s s s
s
s H

Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 39 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
En MATLAB:

Z=[-1; -1; -1 ]; %(s+1)^3
D1=roots([1 5 2]); %Obtencin de las races de (s^2+5s+2)
B=[1 3];
D2=roots(conv(B,B)); %(s+3)^2
P=[4; D2; D1];
k=1;
[NUM,DEN]=zp2tf(Z,P,k);


Si una vez hecho esto, se hace desde la ventana de comandos una
llamada a printsys(NUM,DEN), el resultado es el siguiente:

s^3 + 3 s^2 + 3 s + 1
----------------------------------------------------
s^5 + 7 s^4 - 3 s^3 - 107 s^2 - 210 s - 72


GENERACIN DE DIAGRAMA DE BLOQUES, CONEXIN DE
SISTEMAS

La toolbox de MATLAB para control incluye tambin funciones
para resolver las funciones de transferencia expresadas
mediante diagrama de bloques

Las siguientes funciones permiten realizar conexiones entre los
distintos bloques que conforman un sistema de control

cloop Cierra el lazo realimentacin unitaria
feedback Conexin mediante realimentacin
series Conexin en serie de modelos
parallel Conexin en paralelo de sistemas


Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 40 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Ejemplo:

Obtener la funcin de transferencia total del sistema que se muestra a
continuacin, suponiendo que se parte del conocimiento del
numerador y el denominador de cada bloque del diagrama


en MATLAB, de la siguiente forma:

[NUM,DEN]=feedback(NUMZP, DENZP, NUMTF,DENTF,-1);
[NUM,DEN]=cloop(NUM, DEN,-1);


Step Input
+
-
Sum
+
-
Sum1
25
s+10
Transfer Fcn
(s-1)(s-2)(s-3)
(s+1)(s+3)(s-4)
Zero-Pol e
Auto-Scal e
Graph
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 41 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
5. FUNCIONES DE ANLISIS DE SISTEMAS CONTINUOS DE LA
TOOLBOX DE CONTROL (I)

Conjunto de instrucciones que facilitan el anlisis de la respuesta
temporal, frecuencial y lugar de las races de un sistema de control.

En este punto solo se van a presentar las funciones relacionadas
con el anlisis temporal


RESPUESTA TEMPORAL

Se usa para obtener caractersticas temporales del rgimen
transitorio y del permanente o estacionario, de la respuesta de un
sistema a entradas diversas

Las funciones de la toolbox de MATLAB utilizadas para generar
respuestas temporales ante entradas variadas, son las siguientes

step Respuesta a un escaln
impulse Respuesta a un impulso
lsim Entrada aleatoria
ginput Averiguar valores de un determinado punto de la grfica
damp
Permite obtener
n
y
dcgain Permite obtener la ganancia esttica de una FT


Nota: Las funciones step e impulse generan automticamente una
grfica de la respuesta temporal, en caso de no pedir ningn valor de
salida


Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 42 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Ejemplo:

Dado el siguiente sistema determinar su respuesta al impulso y al
escaln:
1
1
) (
+
=
s
s H

La respuesta al impulso se obtendr mediante el siguiente comando:

>>impulse([1],[1 1]);

Impulse Response
Time (sec)
A
m
p
l
i
t
u
d
e
0 1 2 3 4 5 6
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1


Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 43 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Posteriormente se llama a la funcin step, obtenindose el resultado
grfico que se muestra a continuacin:

>>step([1],[1 1]);

Step Response
Time (sec)
A
m
p
l
i
t
u
d
e
0 1 2 3 4 5 6
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1

Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 44 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
6. FUNCIONES DE ANLISIS DE SISTEMAS CONTINUOS DE LA
TOOLBOX DE CONTROL (II)

La toolbox de control de MATLAB posee un conjunto de funciones
que permiten realizar fcilmente trazados del Lugar de las Races
de un sistema realimentado, as como sacar informacin a partir de
ste

Las funciones relacionadas con el trazado del Lugar de las Races
se muestran en la siguiente tabla



Nota: la funcin rlocus abre directamente una ventana de figura nueva
y dibuja en ella el Lugar de las Races del sistema cuya F(s) (o F(z))se
pasa como parmetro. Sin embargo, la funcin rlocfind necesita de la
ejecucin previa de la anterior para operar


Ejemplo:

Se desea conocer el trazado del Lugar de las Races del sistema
siguiente:
1
s +1.5s+8
2
Transfer Fcn1
s+13
s+10
Transfer Fcn
K
Gai n

rlocus Trazado del Lugar de las Races (para ss. continuos y
discretos)
rlocfind Identificacin concreta de un punto del lugar
pzmap Representacin del diagrama de polos y ceros
sgrid
Red de obtener
n
y en el plano s
Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 45 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Para resolverlo se ejecuta desde MATLAB el siguiente conjunto de
comandos:

NUMG=[1 13] %Numerador de G(s)
DENG=[1 10] %Denominador de G(s)
NUMH=[1] %Numerador de H(s)
DENH=[1 1.5 8] %Denominador de H(s)
N=conv(NUMG,NUMH) %Numerador de G(s)H(s)
D=conv(DENG,DENH) %Denominador de G(s)H(s)
rlocus(N,D)
sgrid
Root Locus
Real Axi s
I
m
a
g

A
x
i
s
-12 -10 -8 -6 -4 -2 0
-40
-30
-20
-10
0
10
20
30
40
40
35
30
25
20
15
10
5
40
35
30
25
20
15
10
5
0.7
0.4
0.28 0.19 0.135 0.095 0.06 0.03
0.7
0.4
0.28 0.19 0.135 0.095 0.06 0.03


Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 46 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Ejemplo:

Obtenga para el sistema del ejemplo anterior cul es el valor de K que
hace al sistema inestable

Dicho valor ser aqul que haga que las races del lugar representado
anteriormente tengan parte real positiva. Para poder obtener dicho
valor se utiliza la funcin rlocfind, de esta forma:

>> rlocfind(N,D)

Obtenindose el siguiente resultado en la ventana de comandos de
MATLAB:

>>Select a point in the graphics window
>>selected_point =
0.0482 +12.6479i
>>ans =
136.2106

Truco: Si se desea conocer adems el valor que tienen todas las
races del sistema en lazo cerrado para esa K se deber recoger como
parmetro de salida de rlocfind un vector que contendr el dichos
valores de este modo:

>>[K,raices]= rlocfind(N,D)


Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 47 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Ejemplo:

Si se desea que el sistema tenga una respuesta con coeficiente de
amortiguacin de valor 0.1, indique cul sera el valor de K necesario y
compruebe el resultado con la funcin step

Para conocer el valor de K con =0.1 se redibuja el Lugar de las
Races son rejilla y se invoca a la funcin sgrid de este modo

>> sgrid(0.1,2)

Donde el valor de
n
se ha fijado sin ningn criterio concreto

Despus se llama vuelve a llamar a la funcin rlocfind, y se obtiene el
valor de K que ser el fijado en el diagrama de bloques de Simulink
que permite obtener la espuesta al escaln del sistema en lazo
cerrado. El resultado se muestra en la figura siguiente:

0 2 4 6 8 10 12 14 16 18 20
-5
0
5
10
15
20


Introduccin a MATLAB, Toolbox de Control y Simulink
Pg 48 Laboratorio de Sistemas Electrnicos de Control Continuo
I.T.T Sistemas Electrnicos
Para comprobar si la respuesta coincide con la de un sistema de
segundo orden tpico, se obtiene el valor de Mp correspondiente al
coeficiente de amortiguacin comentado. Calculando dicho valor el
resultado es de 72.9%

Como se observa, el Mp es mayor. Esto se debe a que el sistema en
lazo cerrado tiene adems un cero y otro polo que no es del todo
dominante




Universidad Pontificia Comillas
E.T.S.I I.C.A.I
Departamento de Electrnica y Automtica



Manual de referencia de
MATLAB & SIMULINK














Febrero 2000

Adolfo Anta Martnez
Juan Luis Zamora Macho
Ramn Rodrguez Pecharromn


UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
2

Tabla de Contenidos

1. INTRODUCCIN................................................................................................................... 3
2. FUNCIONES MATEMTICAS COMUNES.......................................................................... 4
3. CARACTERSTICAS DE LA VENTANA DE COMANDOS................................................. 6
3.1. CMO UTILIZAR EL WORKSPACE....................................................................................... 6
3.2. FORMATOS DE NMEROS ................................................................................................. 6
3.3. GESTIN DE DIRECTORIOS ............................................................................................... 6
4. M-FILES ................................................................................................................................ 7
5. OPERACIONES CON VECTORES...................................................................................... 9
6. REPRESENTACIONES GRFICAS.................................................................................. 11
6.1 LA FUNCIN PLOT .............................................................................................................. 11
6.2 ESTILOS DE LNEA, MARCAS Y COLORES.............................................................................. 12
6.3 FIJAR REJILLAS, EJES, Y ETIQUETAS.................................................................................... 13
7. TOOLBOX DE CONTROL ................................................................................................. 16
7.1 REPRESENTACIN DE UN SISTEMA...................................................................................... 16
7.2 FUNCIONES ESPECFICAS ................................................................................................... 17
7.3 LTIVIEW.......................................................................................................................... 20
8. AYUDA................................................................................................................................ 22
8.1. EL COMANDO HELP ........................................................................................................ 22
8.2. LA VENTANA DE AYUDA................................................................................................... 22
9. SIMULINK........................................................................................................................... 23
9.1 INTRODUCCIN.................................................................................................................. 23
9.2 CONSTRUCCIN DEL MODELO............................................................................................. 24
9.3 SIMULACIN...................................................................................................................... 27
9.4 MODELADO DE UN SISTEMA FSICO...................................................................................... 28





UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
3
1. Introduccin
MATLAB es una aplicacin destinada a clculos matemticos, si bien dispone de
ciertas funciones destinadas a temas ms especficos, como por ejemplo la ToolBox
de control, que facilita el estudio de sistemas dinmicos y su regulacin.
Adems, existe un complemento de MATLAB llamado SIMULINK, que nos permite un
enfoque ms grfico de los sistemas de control.
Al ejecutar MATLAB, aparecer una ventana en blanco, llamada ventana de
comandos. La forma de trabajar con MATLAB es como con cualquier calculadora:
4*2 [ pulsamos enter]
ans =
8
A su vez, podemos usar variables para realizar nuestros clculos:
precio = 17;
iva =0.16;
precio_total =17 * (1+iva)
precio_total =
19.7200
Acabamos de crear tres variables, cuyo valor se guardar en memoria. En las dos
primeras sentencias se incluye un punto y coma al final, con lo que el resultado no
aparecer por pantalla. El nombre que elijamos para nuestras variables tiene algunas
restricciones: no pueden tener un espacio intermedio, se distinguen maysculas de
minsculas, y deben empezar por una letra.
Si queremos ver las variables que tenemos definidas, teclearemos el comando who:
who
Your variables are:
iva precio precio_total
Por supuesto, se puede sobreescribir el nombre de una variable:
iva =0.13;
(el programa no nos avisar de que esa variable ya existe) .
Para borrar todas las variables, existe el comando clear: tecleando clear iva borrara
esta variable , pero si escribimos slo clear, borrar todo lo que hay en memoria; por
desgracia, una vez eliminadas, las variables no se pueden recuperar.
Podemos recuperar cualquier instruccin escrita previamente pulsando la tecla del
cursor . Para detener la ejecucin de cualquier instruccin, hay que pulsar la
combinacin de teclas Ctrl+C.
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
4
2. Funciones matemticas comunes
MATLAB incluye ciertas funciones que nos permiten realizar clculos ms
complejos que sumar y restar. Para usar estas funciones, se procede de igual manera
que en una calculadora programable; por ejemplo, para realizar una operacin que
incluya una raz cuadrada escribimos:
x = 3 - sqrt (5/6) * 2
x =
1.1743
Una lista breve de las funciones de MATLAB sera:

FUNCIONES HABITUALES
abs(x) Valor absoluto de x. Si x es un nmero complejo, abs(x) nos da
su mdulo
acos(x)
1
arco coseno de x
asin (x) arco seno de x
atan (x) arco tangente de x. Devuelve un ngulo entre -90 y 90
atan2(x,y) arco tangente de x entre y. Devuelve un ngulo entre 0 y 360
cos (x) coseno de x
sin (x) seno de x
tan (x) tangente de x
exp (x) exponencial e
x
log(x) logaritmo neperiano de x
log10 (x) logaritmo en base 10 de x
rem(x,y) resto de la divisin x / y
unwrap(x) sita el ngulo x entre pi y -pi
roots(x) halla las races del polinomio x
fzero('f(x)',n)
(ej.- f(x)= 'x^2+x+3' )
encuentra la solucin de la ecuacin f(x)=0; n es el valor por
donde empieza a iterar para hallar la solucin.
sqrt(x) raz cuadrada de x
angle (x) ngulo de x
real(x) parte real de x
imag(x) parte imaginaria de x


1
MATLAB trabaja nicamente en radianes.
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
5
Es recomendable trabajar con atan2 en vez de atan, pues si la parte real del nmero
complejo es negativa, el ngulo quedar en el segundo o tercer cuadrante. Por
ejemplo:
180/pi*atan(-2/3)
ans =
-33.6901
180/pi*atan(2/-3)
ans =
-33.6901
180/pi*atan2(-2,3)
ans =
-33.6901
180/pi*atan2(2,-3)
ans =
146.3099
Para la funcin atan los nmeros complejos -2+3j y 2-3j tienen la misma fase; atan2,
sin embargo, nos da el ngulo correcto. Se ha multiplicado por 180/pi para obtener el
resultado en grados
2
.
Para definir un nmero complejo, se puede usar i o j como unidad imaginaria
indistintamente:
c1=-1+2j
c1 =
-1.0000 + 2.0000i
c1=-1+2i
c1 =
-1.0000 + 2.0000i








2
La constante pi viene definida por defecto en MATLAB
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
6
3. Caractersticas de la ventana de comandos
3.1. Cmo utilizar el Workspace
Todas las variables que hemos definido se guardan en el Workspace, que no es
ms que el espacio de memoria que utiliza MATLAB.
Aparte de crear y borrar variables, resulta til guardar sesiones de trabajo, es decir,
todas las instrucciones que hemos tecleado en la ventana de instrucciones. Para ello,
al inicio de la sesin tecleamos diary <nombre del fichero>. Podemos elegir el tipo de
archivo, si bien es recomendable que ste sea de texto (por ejemplo, diary
c:\regulacin\resumen.txt). Para que deje de grabar la sesin teclearamos diary off.
Tambin podemos guardar nicamente el valor de algunas variables:
save c:\regulacin\datos x y
Aqu no es necesario aadir la extensin, y MATLAB crear el fichero con extensin
.mat. Las variables x e y han de estar previamente definidas.
Para recuperar las variables guardadas teclearemos:
load datos
3.2. Formatos de nmeros
Se habr observado que por defecto todos los nmeros nos aparecen con cuatro
decimales. Se puede cambiar el formato de salida seleccionando el men
File\Preferences. Cabe destacar que, con el formato que aparece por defecto, algunos
nmeros pueden aparecer por pantalla como 0.0000, aunque realmente no son 0 (sino
3.510
-7
, por ejemplo).
3.3. Gestin de directorios
Por defecto, al arrancar MATLAB empezamos en el directorio matlab\bin,
mientras que nuestros ficheros (M-files o modelos de SIMULINK) suelen estar en otras
carpetas.
Para "movernos" en MATLAB, usaremos los comandos tpicos de MS-DOS: cd
para acceder a un directorio, dir para ver el contenido de un directorio, cd.. para salir
de una directorio.



UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
7
4. M-files
Cuando realizamos clculos simples, es habitual escribir las instrucciones en la
ventana de comandos. Sin embargo, cuando se van a realizar una serie de
operaciones ms complicadas y de forma repetitiva, se utilizan los llamados M-Files;
son ficheros de texto donde tecleamos las instrucciones de MATLAB. Para crear un
nuevo archivo M, hacemos clic en File\New\M-File; nos aparecer una ventana en
blanco para editar el archivo. Por ejemplo:
% Mi primer programa en MATLAB
3

comp1=-2+3i;
comp2=-10+5i;
comp=comp1+comp2;
modulo=abs(comp)
fase=unwrap(180/pi*phase(comp))
Una vez guardado el archivo (con el nombre trabajo.m, por ejemplo), nos bastar
teclear su nombre en MATLAB, y se ejecutar directamente:
trabajo
modulo =
14.4222
fase =
140.0267
Supongamos que queremos que este programa sirva no slo para los complejos
comp1 y comp2. Para ello, bastar con borrar las dos primeras lneas del programa
anterior. Ahora tendremos que definir antes el valor de comp1 y comp2 (si no,
MATLAB nos dar un error diciendo que las variables comp1 y comp2 no estn
definidas):
comp1=-3+2i;
comp2=-10+j;
trabajo
modulo =
13.3417
fase =
160.7222


3
El smbolo % indica que esa lnea es comentario.
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
8
Tambin podamos hacer que el programa pidiese los nmeros complejos al usuario
(pues ste no tiene por qu saber qu es comp1 y comp2):
comp1=input('Introduzca el primer nmero complejo -> ');
comp2=input('Introduzca el segundo nmero complejo -> ');
comp=comp1+comp2;
modulo=abs(comp)
fase=unwrap(180/pi*phase(comp))
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
9
5. Operaciones con vectores
Hasta ahora, todas las variables utilizadas eran escalares. Por supuesto, tambin se
pueden definir vectores. Por ejemplo, queremos hallar el valor de seno (x) para
0 < x < p. Como es imposible hallar todos los valores (hay infinitos puntos), debemos
definir una serie de valores de x. Si tomamos 11 puntos, definiremos x de la forma:
x=[0 0.1*pi 0.2*pi 0.3*pi 0.4*pi 0.5*pi 0.6*pi 0.7*pi 0.8*pi 0.9*pi pi]
x =
Columns 1 through 7
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850
Columns 8 through 11
2.1991 2.5133 2.8274 3.1416
Tal como hemos visto, para crear un vector fila es necesario escribir entre corchetes
los elementos, separados por un espacio o una coma
Si ahora escribimos sin (x), hallaremos el seno de todos los valores de x:
y=sin(x)
y =
Columns 1 through 7
0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511
Columns 8 through 11
0.8090 0.5878 0.3090 0.0000
Para manejar un nico elemento del vector, por ejemplo seno(0.5*pi), nos referiremos
a l como el elemento 6 del vector y:
y(6)
ans =
1
Si queremos utilizar los 5 primeros elementos, escribiremos y(1:5), y para tomar del
elemento 7 al ltimo teclearemos y(7:end)
En caso de querer representar la funcin seno(x), necesitaramos bastantes ms de 11
elementos para obtener una grfica aceptable. Escribir 1000 elementos resultara
bastante tedioso. Como era de suponer, existe una forma automtica de crear un
vector. La instruccin es: x= (valor_inicial:incremento:valor_final). Por ejemplo:
X=(0:0.01:pi); %Esta instruccin nos crea un vector x con valor inicial x, valor
%final pi, y la diferencia entre elementos consecutivos es 0.01*pi
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
10
Es muy recomendable escribir el "; " al final de la sentencia, pues si no aparecern
cada uno de los elementos del vector por pantalla: 0, 0.01pi, 0.02pi , y as hasta pi.
Las diferentes formas de crear un vector aparecen resumidas en la siguiente tabla:
Construcciones bsicas de vectores
X = [2 2*pi sqrt(2) 2-3j] Crea un vector con los elementos espeficados
X = primero : ultimo Crea un vector empezando en primero,
incrementando una unidad en cada elemento,
acabando en el elemento ultimo
X=primero:incremento:ultimo En este caso, el incremento no es 1 sino que es
fijado por nosotros
X=linspace(primero, ultimo,n) Crea un vector empezando en primero, acabando
en ultimo, con n elementos
X=logspace(primero, ultimo,n) Crea un vector logartmico

De igual manera, se pueden crear matrices, escribiendo un "; " para indicar que es una
fila distinta:
x= [ 2 3 ; 2 5 ]
x =
2 3
2 5

















UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
11
6. Representaciones grficas
6.1 La funcin plot
Para representar grficos en dos dimensiones, es habitual utilizar el comando
plot(eje x, eje y). Por ejemplo, si quisisemos representar la funcin seno:
x = (0:0.01:2*pi);
y = sin(x);
plot (x,y)
Debera aparecernos una ventana del tipo Figure:

Fig 1. Representacion grfica de funciones con el comando plot

Esta grfica se puede ampliar, reducir , cambiar su color y copiar para utilizarla en otro
documento.
Si ya tenamos abierta una ventana Figure, al usar plot, desaparecer la grfica
anterior sin previo aviso. Para evitarlo, aadiremos una nueva ventana tecleando
figure en MATLAB. Es posible dibujar ms de una grfica en una ventana, escribiendo
plot(eje x1, eje y1, eje x2, eje y2,...); por ejemplo:

UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
12
z = cos(x);
plot(x,y,x,z)
Tambin podemos dividir la ventana en varias partes con el comando subplot (m,n,i).
La ventana Figure se dividir en una matriz de m por n pequeas ventanas, y se
seleccionar la ventana i-sima. Por ejemplo:
subplot(2,1,1); %La ventana Figure se dividir en dos; selecionamos la primera
plot(x,y) %Representamos y=sin(x)
subplot(2,1,2); %Ahora selecionamos la segunda
plot(x,z) %Representamos z=cos(x)

0 1 2 3 4 5 6 7
-1
-0.5
0
0.5
1
0 1 2 3 4 5 6 7
-1
-0.5
0
0.5
1

Fig 2. Representacin de varias grficas con subplot









UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
13
6.2 Estilos de lnea, marcas y colores
Es posible modificar el color y estilo de las grficas. Para ello, existen ciertos
parmetros que admite la funcin plot, y han de introducirse como un tercer
argumento, despus de cada par de variables.
Smbolo Color Smbolo Marca Smbolo Estilo de lnea
b Azul . Puntos - lnea continua
g Verde O Crculos : lnea punteada
r Rojo x cruces -. puntos y rayas
c Cyan + ms -- discontinua
m Magenta * estrellas
y Amarillo s cuadrados
k Negro d diamantes
w Blanco p pentagramas

Por ejemplo:
plot( x, y, 'rx', x, z, 'o--')
Fig 3. Estilos de lnea y colores con la funcin plot
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
14
6.3 Fijar rejillas, ejes, y etiquetas
Para fijar una cuadrcula en la ventana Figure, basta con teclear grid on. Para
quitarla, escribimos grid off.
Podemos escribir los nombres de los ejes y de la grfica:
title('Representacin de las funciones seno y coseno'), xlabel ('variable
independiente'), ylabel ('variables dependientes')
Podemos escribir en el grfico con la funcin gtext:
gtext('cos(x)')
Al pulsar enter nos aparecer la ventana Figure; con el ratn podemos decidir
dnde situar el texto
Existe tambin el comando legend, cuya funcin es similar a la de gtext:
legend (variable Y, variable Z)
El cuadro de la leyenda se puede situar donde queramos, arrastrandolo con el
ratn.
Tambin se puede cambiar los ejes, con el comando axis:
La estructura a escribir es: axis ([xmin xmax ymin ymax])
axis([0 2*pi -1.5 1.5])
Para volver al autoescalado, teclearemos axis auto. Otra forma de ampliar o
reducir las grficas es usando la funcin zoom. Los comandos zoom y legend no
pueden estar activos a la vez, pues los dos responden al clic del ratn.
Se puede tomar valores de una grfica con la instruccin ginput. Una vez
tecleado ginput, nos aparecer la ventana Figure, y con el ratn haremos clic en
el punto que queramos conocer. Despus pulsaremos enter y el valor de las
coordenadas del punto aparecern en la ventana de comandos de MATLAB.

Despus de todas estas operaciones, la grfica resultante es:


UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
15
0 1 2 3 4 5 6
-1.5
-1
-0.5
0
0.5
1
1.5
Representacin de las funciones seno y coseno
variable independiente
v
a
r
i
a
b
l
e
s
d
e
p
e
n
d
i
e
n
t
e
s
sen(x)
cos(x)
variable Z
variable Y

Fig 4. Edicin de figuras en MATLAB
















UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
16
7. Toolbox de control
4

7.1 Representacin de un sistema
El primer problema que se nos plantea es la definicin de un sistema. Los
sistemas se suelen expresar en forma de funcin de transferencia. sta se puede
expresar como cociente de polinomios, con la instruccin tf : escribiremos entre
corchetes los coeficientes de numerador y denominador (en sentido descendente de
las potencias de la variable s).
planta = tf ( [ 1 1] , [3 2 5] );
nos definira
5 2 3
1
) (
2
+ +
+
=
S S
S
s F
De esta representacin, podemos quedarnos nicamente con el numerador y/o
denominador:
[num,den] = tfdata (planta , ' v ' )
5

num = 0 1 1
den =
3 2 5
u obtener los polos y ceros del sistema:
[z,p,k] = tf2zp (num,den);
z =
-1
p =
-0.3333 + 1.2472i
-0.3333 - 1.2472i
k =
0.3333
, donde k no es la ganancia esttica, sino la que se obtiene al expresar la funcin de
transferencia en forma de polos y ceros.
Tambin podemos obtener la descomposicin en fracciones simples:
[r, p, k] = residue (num,den)
r =
0.1667 - 0.0891i
0.1667 + 0.0891i

4
Teclear ctrldemo para ver una demostracin de las posibilidades que ofrece esta Toolbox
5
El argumento 'v' se incluye para obtener numerador y denominador en forma de vectores
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
17
p =
-0.3333 + 1.2472i
-0.3333 - 1.2472i
k =
[]
El coeficiente k representa el trmino independiente, que valdr 0 siempre que el
orden del numerador sea inferior al del denominador.
Es decir, F(s) tambin se puede expresar como:


1.2472 j 0.3333 S
0.0891 j 0.1667
1.2472 j - 0.3333 S
0.0891 j - 0.1667
) (
+ +
+
+
+
= s F

7.2 Funciones especficas
Existen diversos comandos en MATLAB para dibujar grficos de respuesta en
frecuencia:
bode (planta) % Diagrama de Bode
pause
nichols (planta) % Diagrama de Black
pause
nyquist (planta) % Diagrama de Nyquist desde w = - hasta w = +

Si no incluyesemos la instruccin pause, nos aparecer nicamente la ltima grfica
(el diagrama de nyquist en nuestro ejemplo); de esta manera, nos mostrar el primer
diagrama, y no pasar al siguiente hasta pulsar cualquier tecla.
Si queremos dibujar un diagrama para unas pulsaciones determinadas, es necesario
definirse previamente el vector de pulsaciones w:
w = logspace (-2, 3, 1001); % Creamos vector w, con valor inicial en 10
-2
, valor
% final = 10
3
, con 1001 puntos
bode (planta,w)
Podemos hallar tambin los mrgenes de ganancia y/o fase y pulsaciones asociadas:
[ganancia, fase] =bode (planta);
[Mg,Mf,wu,wo]=margin (ganancia,fase,w)
Mg =
7.3343
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
18
Mf =
Inf
wu =
1.8258
wo =
NaN
En este caso, no tenemos margen de fase, y por tanto no existe la pulsacin de cruce
(el trmino NaN significa Not-A-Number).
Existen tambin funciones para dibujar el lugar de las races:
rlocus(planta)
-4 -3 -2 -1 0 1
-1.5
-1
-0.5
0
0.5
1
1.5
Real Axis
I
m
a
g
A
x
i
s

Fig 5. Lugar de las races de la funcin de transferencia "planta"

Con este grfico, es posible disear para obtener unos polos determinados. Para
obtener mayor precisin, es conveniente dibujar una rejilla radial:
zeta=0:0.1:1; % Definimos x y wn
wn=1:10;
sgrid(zeta,wn) % Nos muestra rectas de pendiente zeta y
% circunferencias de radio wn

zoom

UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
19
Y ahora hallamos la ganancia necesaria para obtener los polos
[gan,polos]=rlocfind(planta) % Aparece un cursor en la ventana del
% lugar de las races
Select a point in the graphics window
selected_point =
-1.0554 + 1.4078i
gan =
4.3339
polos =
-1.0557 + 1.4131i
-1.0557 - 1.4131i

Otras funciones tiles de esta Toolbox son:
dcgain(sistema) Halla la ganancia esttica del sistema
[num,den]=pade(T, n) Devuelve el numerador y denominador de una
aproximacin de Pade de e
-TS
, de orden n
minreal(sistema) Simplifica la funcin de transferencia de sistema

Para empezar a simular con nuestra funcin de transferencia, existen numerosas
funciones en MATLAB(step, impulse), si bien lo ms sencillo es utilizar SIMULINK o
LTIVIEW.













UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
20
7.3 LTIVIEW
Todo lo que hemos visto hasta ahora se puede hacer con un nico comando de
forma ms intuitiva. Para ello, tecleamos ltiview. Nos aparecer la siguiente pantalla:


En el recuadro Workspace nos aparecen todas las funciones de transferencia
que hemos definido. Para seleccionar una de ellas, hacemos doble clic. En Plot Type,
podemos elegir el tipo de grfica: ante un escaln, diagrama de Bode, Nyquist, lugar
de las races, etc; adems, al seleccionar uno de ellos, nos aparecer en Plot Options
varias posibilidades; por ejemplo, para un escaln, nos muestra el tiempo de
establecimiento, pico ,etc.; y para cualquier diagrama de respuesta en frecuencia,
podemos ver el margen de fase y ganancia de nuestra planta.

Funciones de
transferencia
Fig 6. Pantalla del LTIVIEW
Tipo de grfica
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
21
Al seleccionar una de estas opciones, nos aparecer un punto en la grfica; para ver
cul es el valor en concreto, es necesario mantener pulsado el ratn en ese punto.


Fig 7. Anlisis de sistemas con LTIVIEW

UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
22
8. Ayuda
Existen demasiados comandos en MATLAB para poder recordarlos. Para
facilitarnos la labor, se ha creado un archivo de ayuda al cual podemos recurrir en todo
momento.
8.1. El comando help
Para recurrir a la ayuda, basta con teclear help nombre_de_funcin. Si escribimos help
a secas, nos aparecer una lista de categoras de las funciones disponibles. Por
ejemplo:
help sqrt
SQRT Square root.
SQRT(X) is the square root of the elements of X. Complex
results are produced if X is not positive.
See also SQRTM
El comando help nos muestra una pequea descripcin de la funcin, y tambin una
serie de comandos relacionados (en este caso sqrtm, que nos permite hacer races
cuadradas de matrices).
Aunque en la ayuda aparezca la funcin en maysculas, al usarla hemos de escribirla
en minscula (pues SQRT dara error).
Si no conocemos en concreto el nombre de la funcin, podemos usar el comando
lookfor:
lookfor complex
nos mostrar todas las funciones relacionadas con nmeros complejos.
Tambin es til el comando demo , que nos mostrar una pantalla con demostraciones
de todas las posibilidades que ofrece MATLAB.
8.2. La ventana de ayuda
Existe una ventana especfica para la ayuda de MATLAB. Para que aparezca,
escribimos helpwin o hacemos clic en el icono , en la barra de herramientas.
La ventana contiene un listado de todas las categoras de MATLAB. Haciendo clic en
cualquiera de ellas, pasaremos a una pantalla donde aparecen todas las funciones de
esa categora. El botn Tips nos describe brevemente cmo usar la ayuda.



UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
23
9. Simulink
9.1 Introduccin
Simulink es una extensin de MATLAB para la simulacin de sistemas dinmicos.
Al ser un entorno grfico, resulta bastante sencillo de emplear. Para ejecutar Simulink,
podemos teclear simulink desde MATLAB, o bien hacer clic en el icono , en la barra
de herramientas de MATLAB.
Nos aparecern dos ventanas: una con las libreras de Simulink, y otra en blanco
donde construiremos nuestro nuevo modelo.









Fig 8. Libreras de Simulink

En cada uno de los grupos que aparecen en la fig. 3, estarn los bloques necesarios
para simular nuestro sistema de control. Por ejemplo, haciendo doble clic en Linear
aparecer la siguiente ventana:













UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
24



Fig 9. Contenido de la librera Linear
9.2. Construccin del modelo

Supongamos que se tiene el siguiente sistema de control:

Fig 10. Diagrama de bloques del sistema de control




Salida ref
_
10
5 3
1
+ +
+
S S
S
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
25

Para construirlo en Simulink, seguiremos los siguientes pasos:
En el grupo Linear, elegimos el bloque Sum, y lo arrastramos hasta nuestra ventana
vaca.
Del mismo grupo, elegimos Transfer Fcn y Gain.
Para introducir los valores que tendrn los bloques, hacemos doble clic en cada uno
de ellos. Nos aparecer el cuadro de dilogo correspondiente:

Fig 11. Introduccin de valores para cada bloque

Se har de igual manera para la constante (Gain) y el punto de suma (Sum), en el que
pondremos +-
Cada bloque tiene en sus extremos una o varias flechas. Al situarnos con el ratn en
esas flechas, el puntero pasa a ser una cruz. Para conectar los bloques, arrastramos
hasta la flecha del siguiente bloque.
Ahora necesitamos poner la referencia. Para ello, hacemos doble clic en el grupo
Sources, y elegimos Step. Lo arrastramos hasta la ventana donde tenemos el modelo.
Para cambiar los valores del escaln, y el tiempo en que ste se produce, hacemos
doble clic en el bloque. Por defecto, el escaln es unitario y se da en t=1.
Por ltimo, para ver la salida (o cualquier otra seal) hay varias posibilidades. Las dos
ms utilizadas son los bloques Scope y To Workspace (en el grupo Sinks).
El bloque Scope nos permite ver el comportamiento de una seal mientras se simula.
Por el contrario, To Workspace guarda la seal en memoria, para poder dibujarla
despus de la simulacin (con el comando plot) o guardarla en un fichero de datos
.mat.

UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
26
El modelo en Simulink quedar como en la figura siguiente:

Fig 12. Modelo de Simulink del sistema de control

La orientacin por defecto de los bloques es "a derechas" (la entrada est en la
izquierda, la salida en la derecha). Esto se puede cambiar seleccionando el bloque y
pulsando Ctrl+R o en el men Format/Rotate Block.

Despus de construir el modelo, resulta conveniente guardarlo antes de empezar a
simular (Men File/Save as..). Los modelos de Simulink se guardan con extensin .mdl














UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
27
9.3. Simulacin
Para simular el sistema ya construido, elegimos Start del men Simulation. En
este men tambin hay otras opciones; la nica que usaremos es Parameters:

Fig 13. Introduccin de los parmetros de la simulacin

En este recuadro elegimos las caractersticas de la simulacin. Las ms importantes
es Start time (que suele ser 0.0) y Stop time. sta ltima se tendr que ajustar a
nuestro sistema, pues por ejemplo un sistema mecnico es mucho ms rpido que
uno trmico, y necesitar menos tiempo para llegar al rgimen permanente.
Una vez empezada la simulacin, sta se puede parar o hacer una pausa (en el
mismo men Simulation/Stop y Simulation/Pause)

Si queremos ver la salida, hacemos doble clic en el bloque Scope. Nos aparecer la
siguiente pantalla:
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
28
Fig 14. Visualizacin de la respuesta mediante el bloque Scope

En la barra de herramientas existen varios iconos: los tres primeros fijan el tipo de
zoom (ampliar eje x y eje y, slo eje x o solo eje y ). El cuarto icono (con el smbolo de
los prismticos) har que aparezca en pantalla la grfica completa. El quinto nos
guarda la configuracin de los ejes para posteriores simulaciones, y el ltimo nos
permite fijar los ejes, y la cantidad de datos que queremos guardar.
9.4 Modelado de un sistema fsico
No siempre disponemos de una funcin de transferencia, sino que tenemos un
conjunto de ecuaciones que nos describe el comportamiento de un sistema real.
Esta funcin de transferencia se podra obtener resolviendo el sistema de ecuaciones,
pero resulta ms sencillo utilizar Simulink. Para ello, nos construimos cada una de las
ecuaciones con bloques. Despus hemos de definir una entrada y una salida,
mediante los bloques In y Out, que aparecen en el gupo Connections, pues la funcin
de transferencia se representa como
entrada
salida
s U
s Y
s F = =
) (
) (
) ( .
Guardamos el modelo, y despus, desde MATLAB, escribimos las siguientes
instrucciones:
>> [A,B,C,D]=linmod ('mi_planta'); %Donde 'mi_planta' es el nombre del archivo
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
29
>> [num,den]=ss2tf (A,B,C,D);

Ejemplo:Intentaremos modelar el siguiente sistema trmico:

Datos:
Potencia inyectada en bloque 3
Temperatura controlada en bloque 3
C
1
= 2 min kW / C C
2
= 2.5 min kW / C C
3
= 3.5 min kW / C
R
13
= 7.5 C / kW R
23
= 10 C / kW R
30
= 15 C / kW
Las ecuaciones que nos describen este sistema son:
6


s s T C s T s T
R
s s T C s T s T
R
s T s T
R
s T s T
R
s T s T
R
s s T C s Pg
) ( )) ( ) ( (
1
) ( )) ( ) ( (
1
)) ( ) ( (
1
)) ( ) ( (
1
)) ( ) ( (
1
) ( ) (
2 2 2 3
32
1 1 1 3
31
0 3
30
1 3
31
2 3
32
3 3
= -
= -
- + - + - + =


Representando estas ecuaciones en un modelo de Simulink, nos queda:


6
No se ha considerado el efecto de una posible perturbacin, pues hemos de definir una nica entrada y salida
1
2

3
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
30
Fig 15. Modelo de Simulink que representa el sistema trmico

Para construir el modelo de una forma ms clara, se han utilizado Tags o etiquetas
(que se encuentran en Connections)
El trmino 1/60 corresponde al cambio de unidades de minutos a segundos

Ahora escribimos en MATLAB:

>> [A,B,C,D]=linmod ('mi_planta');
>> [num,den]=ss2tf (A,B,C,D);
>> planta =tf(num,den)

La funcin de transferencia entre la potencia aportada al sistema y la temperatura a
controlar queda:

10 6 2 3
9 6 2
3
10 352 . 2 257310 . 2 0032 . 0
10 527 . 3 10 466 . 8 004762 . 0
) (
) (
- -
- -
+ + +
+ +
=
S S S
S S
s Pg
s T
(en segundos)
1
Out
s
1
s
1
s
1
[T3]
[T2]
[T1] 1/60
1/60
1/60 1/3.
1/15
1/10
1/7.5
1/25
1/15
[T2]
[T3]
[T1]
[T2]
[T3]
[T3]
[T3]
[T1]
[T3]
1
In
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
31

Una vez modelado el sistema, resulta conveniente crear un bloque que agrupe
nuestro sistema real. Para ello, seleccionamos todos los bloques, pulsando en una
esquina y arrastrando hasta englobar a todos los elementos (no con la opcin
Edit/Select all). Despus hacemos clic en Edit/Create subsystem, que debera
aparecer habilitada. Debera quedarnos una ventana as:


En este diagrama de bloques s se ha incluido la perturbacin.






Introducci on a Matlab y Simulink
Regulaci on Automatica
Ingeniero en Electr onica. Curso 2006/2007.
Javier Aracil y Fabio G omezEstern
1. Introducci on
Matlab es un programa de gran aceptaci on en ingeniera destinado realizar c alculos
tecnicos cientcos y de prop osito general. En el se integran operaciones de c alculo,
visualizaci on y programaci on, donde la interacci on con el usuario emplea una notaci on
matem atica cl asica.
Los usos y aplicaciones tpicos de Matlab son:
Matem aticas y c alculo.
Desarrollo de algoritmos.
Adquisici on de datos.
Modelado, simulaci on y prototipado.
An alisis y procesado de datos.
Gr acos cientcos y de ingeniera.
Desarrollo de aplicaciones.
El tipo b asico de variable con el que trabaja Matlab es una matriz que no requiere
ser dimensionada previamente en la declaraci on. Una de las caractersticas m as intere-
santes consiste en que el algebra vectorial y matricial se expresa con la misma sintaxis
que las operaciones aritmeticas escalares. Por ejemplo, en lenguaje C, para realizar la
suma de dos variables enteras o reales b y c, escribiremos:
a=b+c;
Mientras que en Matlab, emplearemos la misma sentencia tanto si b y c son enteros,
reales, vectores o matrices.
1
2. Componentes de Matlab
Matlab consta de cinco partes fundamentales:
1. Entorno de desarrollo. Se trata de un conjunto de utilidades que permiten el
uso de funciones Matlab y cheros en general. Muchas de estas utilidades son
interfaces gr acas de usuario. Incluye el espacio de trabajo Matlab y la ventana
de comandos.
2. La librera de funciones matematicas Matlab. Se trata de un amplio con-
junto de algoritmos de c alculo, comprendiendo las funciones m as elementales
como la suma, senos y cosenos o la aritmetica compleja, hasta funciones m as
sosticadas como la inversi on de matrices, el c alculo de autovalores, funciones de
Bessel y transformadas r apidas de Fourier.
3. Gracos. Matlab dispone de un conjunto de utilidades destinadas a visualizar
vectores y matrices en forma de gr acos. Existe una gran cantidad de posibili-
dades para ajustar el aspecto de los gr acos, destacando la visualizaci on tridi-
mensional con opciones de iluminaci on y sombreado, y la posibilidad de crear
animaciones.
4. El interfaz de aplicaci on de Matlab (API). Consiste en una librera que
permite escribir programas ejecutables independientes en C y otros lenguajes,
accediendo, mediante DLLs, a las utilidades de c alculo matricial de Matlab.
De estos cuatro puntos, en este captulo trataremos, de forma somera, los dos
primeros.
Los ejemplos que se presentan en este texto, se han desarrollado para la versi on de
Matlab 7.0. ellos no impide que puedan funcionar con otras versiones del programa.
Concretamente, para la versi on 6.5 y posteriores est a pr acticamente garantizado el
funcionamiento.
Sin embargo, hay que se nalar que algunos complementos de Matlab no aparecen
incluidos en la instalaci on b asica del mismo, por tanto un programa que funciona en
un ordenador con la versi on 7.0 instalada, puede fallar en otro ordenador con la misma
versi on.
La gesti on de complementos de Matlab se realiza mediante lo que se denominan
toolboxes (paquetes de herramientas). Un Toolbox de Matlab es un conjunto de fun-
ciones y algoritmos de c alculo especializados en un area de conocimiento: nanzas,
tratamiento de se nales, teora de sistemas, etc. Para el desarrollo del curso es necesario
2
tener instalado, aparte del sistema b asico de Matlab, el denominado Control System
Toolbox.
3. Simulink
Simulink es una aplicaci on que permite construir y simular modelos de sistemas
fsicos y sistemas de control mediante diagramas de bloques. El comportamiento de
dichos sistemas se dene mediante funciones de transferencia, operaciones matem aticas,
elementos de Matlab y se nales predenidas de todo tipo.
Simulink dispone de una serie de utilidades que facilitan la visualizaci on, an ali-
sis y guardado de los resultados de simulaci on. Simulink se emplea profusamente en
ingeniera de control.
En el presente curso trabajaremos con la versi on 6.0, que viene incluida en el paquete
de Matlab 7.0. Su instalaci on es opcional, por tanto debemos seleccionar la opci on
correspondiente al instalar el programa
4. El entorno de trabajo de Matlab
4.1. Ayuda en lnea
Si se ha seleccionado la la opci on correspondiente en la instalaci on de Matlab, po-
dremos acceder a la ayuda en lnea en todo momento pulsando la tecla F1. Dicha
documentaci on est a organizada con un ndice en forma de arbol y mediante herramien-
tas de navegaci on como hipervnculos. Es sumamente recomendable su uso, tanto a
modo de introducci on como de referencia para temas especcos. Si se desea conocer
la documentaci on especca asociada a un comando de Matlab, entonces se teclear a
>> doc nombre_comando
en la lnea de comandos de Matlab.
3
4.2. Organizaci on de ventanas
La gura 1 muestra la organizaci on por defecto de ventanas que nos encontramos
cuando arrancamos Matlab por primera vez. Las ventanas que en ella aparecen, de
arriba a abajo son: en la parte izquierda, la estructura del directorio donde nos encon-
tramos, y debajo de ella la historia de los comandos que se han tecleado en el pasado; en
la mitad derecha nos encontramos, arriba, la ventana de edici on de programas Matlab
(que se escriben en un lenguaje propio de Matlab y se almacenan en cheros .m), y
debajo la lnea de comandos, donde se sit ua el cursor para teclear comandos de Matlab.
Figura 1: Entorno de trabajo Matlab.
Inicialmente trabajaremos con la lnea de comandos de Matlab.
4.3. Operaciones basicas en lnea de comandos
Como se ha dicho previamente, en Matlab todos los objetos son matrices. Un escalar
no es m as que una matriz 1 1. En la lnea de comandos, podemos asignar un nombre
simb olico para identicar una matriz.
>> a=[10; 20; -15]; % Asignacion
Esto es una asignaci on de un vector de columna que llevar a el nombre a. A su
derecha aparece un comentario, que tiene su utilidad cuando redactemos programas en
4
Matlab.
Los objetos pueden crearse en cualquier momento. Para ello basta con asignarles
un valor mediante una asignaci on, como en el ejemplo previo. Los identicadores em-
pleados para designar matrices son de libre elecci on, con la salvedad de que no pueden
comenzar por un n umero, ni contener espacios en blanco.
Una vez creado un objeto de Matlab, este pasa a formar parte del espacio de
trabajo ocupando una porci on la memoria. Por tanto, a veces, tras horas de trabajo
con Matlab, necesitaremos eliminar los objetos que ya no se utilicen. Para ello se emplea
el comando clear.
>> clear a; % Borra a de la memoria
>> clear; % Borra todos los objetos del espacio de trabajo
En las sentencias previas, aparece el signo ; al nal de cada comando. Este smbo-
lo sirve para separar unos comandos de otros. Por ejemplo, cuando escribimos var-
ios comandos en una sola lnea, estos deben aparecer separados por punto y coma.
Adem as, si escribimos un comando aislado (sin ;) y pulsamos ENTER, Matlab pro-
porcionar a siempre una salida en respuesta al comando:
>> a=[10;20;-15]
a =
10
20
-15
Sin embargo, si escribimos el comando seguido de ;, no se mostrar a en pantalla la
respuesta. Cuando los comandos forman parte de un programa es conveniente emplear
; para evitar desbordar la pantalla con informaci on innecesaria.
4.4. Sintaxis de vectores y matrices
Las matrices (y vectores como caso particular de las mismas) se expresan en Matlab
empleando corchetes ([ ]); separando las las por espacios o comas (,) y las columnas
por ;. De este modo, se puede crear un objeto matriz del siguiente modo:
>> mat=[1 2 3; 4 5 6; 7 8 9]
5
mat =
1 2 3
4 5 6
7 8 9
Cuando se trata de un escalar, podemos prescindir de los corchetes
>> rad=3.1415;
Los elementos de las matrices pueden ser reales o complejos. En este ultimo caso se
emplea la letra i para representar el valor

1. Como ejemplo crearemos el vector la


v = [2 + 3i, 5i, 3].
>> v=[2+3i, -5i, 3]
v =
2.0000 + 3.0000i 0 - 5.0000i 3.0000
El acceso a elementos de una matriz previamente denida puede realizarse especif-
icando la la y columna del elemento que nos interesa entre parentesis
>> mat(2,3)
ans =
6
Adem as, dentro de estos parentesis podemos indicar variables u operaciones m as com-
plejas, lo que da una gran potencia al desarrollo de algoritmos.
Una vez denidos los objetos con sus identicadores, podemos realizar operaciones
aritmeticas entre ello con total simplicidad. Para las operaciones vectoriales y matri-
ciales, Matlab vericar a la coherencia de las dimensiones de los operandos y si no hay
producir a error producir a un resultado con las dimensiones adecuadas.
>> v1=[2+3i, -5i, 3];
>> v2=[0, 1, 7];
>> v3=v1+2*v2+[1, 1, 1]
v3=
3.0000 + 3.0000i 3.0000 - 5.0000i 18.0000
6
4.5. Operaciones basicas con Matlab
La siguiente tabla ilustra las b asicas aritmeticas y l ogicas que podemos realizar con
Matlab.
Expresi on en Matlab Operaci on
+ Suma aritm etica
- Resta aritm etica o cambio de signo
* Multiplicaci on aritm etica
/ Divisi on
^ Elevar un n umero a una potencia
< Relaci on "menor que"
> Relaci on "mayor que"
<= Relaci on "menor o igual que"
>= Relaci on "mayor o igual que"
== Relaci on "igual que"
~= Relaci on "distinto que"
& producto l ogico (operaci on y)
| suma l ogica (operaci on .
o
")
~ negaci on (operaci on "no")
Cuadro 1: Operaciones aritmeticas y l ogicas de en Matlab.
Todas estas operaciones se aplican indistintamente a escalares, vectores y matrices,
y se pueden emplear de dos modos diferentes: en primer lugar, Matlab funciona directa-
mente como una calculadora, para lo cual tecleamos expresiones en lnea de comandos
para obtener inmediatamente el resultado de las mismas:
>> 12*24.8
ans =
297.6000
As mismo se pueden emplear las operaciones dentro de otras expresiones m as amplias,
logrando as escribir expresiones matem aticas de cualquier complejidad.
>> x1=-b+sqrt(b^2-4*a*c)/(2*a);
4.6. Funciones en Matlab
Buena parte de las operaciones que se realizan con Matlab, son llamadas a funciones.
Las funciones procesan informaci on, por lo que poseen datos de entrada y de salida,
7
que pueden ser matriciales. Los datos de entrada se especican entre parentesis, y si son
varios separados por comas. Por ejemplo, la siguiente funci on calcula la raz cuadrada
de su unico valor de entrada, que es el vector la [4, 2].
>> sqrt([4 2])
ans =
2.0000 1.4142
Las funciones son programas escritos por el usuario o incorporados en el paquete b asico
de Matlab. Entre estas ultimas destacan las siguientes funciones:
Nombre Funci on
sin Seno
sinh Seno hiperb olico
cos Coseno
cosh Coseno hiperb olico
tan Tangente
tanh Tangente hiperb olica
cot Cotangente
coth Cotangente hiperb olica
sec Secante
sech Secante hiperb olica
csc Cosecante
csch Cosecante hiperb olica
asin Arcoseno (inversa del seno)
asinh Inversa del seno hiperb olico
acos Arcocoseno (inversa del coseno)
acosh Inversa del coseno hiperb olico
atan Arcotangente (inversa de la tangente)
atan2 Arcotangente de cuatro cuadrantes
Cuadro 2: Funciones elementales de Matlab: Trigonometra.
Nombre Funci on
exp Exponencial
log Logaritmo natural (base e)
log2 Logaritmo en base 2
log10 Logaritmo en base 10
sqrt Raz cuadrada
Cuadro 3: Funciones elementales de Matlab: Exponenciales.
8
Nombre Funci on
fix Redondear hacia cero
floor Redondear hacia menos innito
ceil Redondear hacia m as innito
round Redondear hacia el entero m as cercano
mod M odulo de la divisi on entera
rem Resto de la divisi on entera
Cuadro 4: Funciones elementales de Matlab: Ajuste y redondeo.
Nombre Funci on
inv Matriz inversa
det Determinante
eig Autovalores
Matriz traspuesta
eye Crear una matriz identidad dado el n umero de las/columnas
zeros Crear una matriz de ceros dado el n umero de las/columnas
ones Crear una matriz de unos dado el n umero de las/columnas
length Longitud de un vector
size Dimensiones de una matriz
Cuadro 5: Funciones elementales de Matlab: Operaciones matriciales.
4.7. Operaciones l ogicas
Algunas de las operaciones y funciones presentadas no devuelven un valor numerico
o matricial como resultado. En su lugar, eval uan si cierta condici on es verdadera o
falsa. En estos casos, el valor devuelto por la funci on equivaldr a a 1 si la condici on se
cumple, y 0 si no.
A modo de ejemplo comprobaremos si una variable x se encuentra en un intervalo
determinado
>> x=5
>> (x>=0)&(x<=10) % Intervalo [0,10]
ans =
1
>> (x>7)&(x<10) % Intervalo (7,10)
ans =
0
Las operaciones l ogicas se emplear an sobre todo para implementar bifuraciones y bucles
en los programas Matlab.
9
Nombre Funci on
clear Elimina todas las variables del espacio de trabajo
clear x Elimina la variable x del espacio de trabajo
who Lista las variables del espacio de trabajo
Cuadro 6: Funciones elementales de Matlab: Espacio de trabajo.
4.8. Operaciones de rango
En Matlab existe un operador de gran utilidad que no tiene parang on en otros
lenguajes de programaci on: el operador de rango (:). Para ilustrar su utilidad, baste
indicar que si se desea crear un vector con todos los n umeros enteros entre 1 y 10,
podemos emplear la expresi on 1:10.
>> a=1:10
a =
1 2 3 4 5 6 7 8 9 10
En general, para secuencias no enteras o no crecientes la sintaxis del operador de rango
es
valor_minimo : incremento : valor_maximo
Por ejemplo, para generar todos los n umeros entre 1 y 2 en incrementos de 0.2 es-
cribiremos
>> a=1:0.2:2
a =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
Una segunda aplicaci on del operador de rango es el acceso a submatrices o subvec-
tores. Supongamos que hemos denido la matriz mat anteriormente mencionada:
>> mat=[1 2 3; 4 5 6; 7 8 9];
Para acceder a la submatriz comprendida entre los elementos (2, 1) y (3, 2) bastar a con
escribir
10
>> mat(2:3,1:2)
ans =
4 5
7 8
Adem as, se puede prescindir de alguno de los extremos de este operador cuando se
emplea en el acceso a vectores y matrices. Por ejemplo, si se desea mostrar todos los
elementos menos los 3 primeros de un vector:
>> a(4:)
>> a(4:end)
Por otro lado, si lo que deseamos es obtener los 3 ultimos elementos del vector a,
escribiremos
>> a((length(a)-2):end)
4.9. Almacenamiento en archivos
Matlab permite almacenar en el disco las variables del espacio de trabajo. De este
modo es posible parar una sesi on de trabajo y continuar en otro momento sin volver a
repetir c alculos. La orden m as com un para almacenar datos es save, que puede usarse
de varias maneras. En la tabla siguiente se presenta un resumen.
Orden Operaci on realizada.
save Crea el archivo de nombre matlab.mat en la
carpeta actual. Dicho archivo contiene todas
las variables que existen en ese momento en
entorno Matlab.
save nombrearchivo Crea el archivo de nombre en nombrearchi-
vo.mat en la carpeta actual. Dicho archivo
contiene todas las variables que existen en
ese momento en el entorno Matlab.
save nombrearchivo x y z Crea el archivo de nombre nombrearchi-
vo.mat en la carpeta actual. Dicho archivo
contiene unicamente las variables x, y y z.
Para recuperar las variables almacenadas en un chero previamente creado em-
plearemos principalmente la funci on load. La siguiente tabla ilustra tres operaciones
tpicas de recuperaci on de datos.
11
Orden Operaci on realizada.
load Lee toda las variables del archivo de nombre
matlab.mat de la carpeta actual. Si alguna
de las variables del disco tiene nombre co-
incidente con otra que previamente existe en
Matlab se producir a la destrucci on de la vari-
able existente para dejar su sitio a la variable
del disco.
load nombrearchivo Igual que en el caso anterior, pero leyendo
del archivo nombrearchivo.mat de la carpeta
actual.
load nombrearchivo x y z Igual que el anterior pero leyendo unicamente
las variables x, y y z.
4.10. Gracas en Matlab
Las posibilidades de Matlab a la hora de crear gr acos de todo tipo son vastsimas.
Para tener una visi on general de ellas se recomienda al lector un recorrido por la ayuda
en lnea partir del comando
>> doc plot
En este punto veremos los pasos b asicos para crear una gr aca a partir de una tabla
de valores (x, y). Concretamente, trazaremos la par abola de ecuaci on
y = 2x
2
+ 3x 1
en el intervalo [3, 3].
Toda gr aca de Matlab ha de ser creada a partir de una nube de puntos, que en el
caso bidimensional consiste en una serie de valores de las coordenadas x y otra serie
del mismo tama no de valores de y. Cada pareja (x,y) formada a partir de ambas series
ser a un punto de la gr aca. Para ello crearemos dos vectores de igual tama no n. El
primer vector ser a x, para las coordenadas de los puntos, a partir de una divisi on
sucientemente na del eje de abcisas:
>> x=-3:0.1:3;
y a continuaci on creamos el vector y, sabiendo que en el gr aco el elemento i-esimo del
dicho vector formar a un punto (x, y) con el elemento i-esimo del vector x. Por tanto,
12
se ha de crear un vector y de n componentes, seg un la f ormula
y
i
= 2x
2
i
+ 3x
i
1 i = 1 . . . n
Esto se obtiene en Matlab con un s olo comando, sin necesidad de bucles:
>> y=2x.^2+3x-1;
Observese el . antes de la exponenciaci on. Esto evita que el termino x^2, al ser x un
vector, se calcule como el producto escalar de x por s mismo. Finalmente, creados los
vectores, creamos la gr aca y la etiquetamos con los siguientes comandos:
>> plot(x,y); % El orden de los parametros es importante
>> grid; % Visualizar una malla
>> xlabel(Eje x); % Etiqueta eje x
>> ylabel(Eje y); % Etiqueta eje y
Obteniendo el gr aco de la gura:
3 2 1 0 1 2 3
5
0
5
10
15
20
25
30
Eje x
E
j
e

y
Figura 2: Gr aco resultante.
Es muy recomendable consultar la ayuda para conocer las opciones en cuanto a
tipos y colores de lnea, tratamiento de ejes (comando axis), etiquetado (comandos
xlabel, legend, text), etc.
13
5. Control System Toolbox
El Control System Toolbox es un componente opcional en la instalaci on de Matlab
que consta de una serie de funciones, objetos, bloques Simulink y herramientas destina-
dos a la asistencia en el an alisis y dise no de sistemas de control. El objeto fundamental
con el que trabajaremos es la funci on de transferencia. Para ilustrar sus propiedades
y el algebra asociada, estudiaremos un ejemplo sencillo de control.
Considerese el sistema realimentado de la gura 3. Dicho sistema est a formado por
tres bloques independientes: G
1
(s), que representa el controlador, G
2
(s), que corre-
sponde a la planta a controlar, y G
3
(s), la funci on de transferencia del sensor con el
que se mide la salida del sistema. Los valores de las tres funciones son:
G
1
(s) =
1
s + 0,5
G
2
(s) =
3
s
2
+ 2s + 1
G
3
(s) =
40
s
2
+ 5s + 40
Supongamos que deseamos calcular la funci on de transferencia en bucle cerrado de
dicho sistema, y a continuaci on trazar su diagrama de Bode. Lo primero que debemos
conocer es c omo denir una funci on de transferencia en el entorno Matlab.
Un polinomio en s se representa en Matlab como un vector cuyos elementos son los
coecientes del polinomio por orden de exponente descendente: por ejemplo, s
2
2s+1
se dene en Matlab como el vector [1 2 1]. Por tanto, para denir una funci on de
transferencia en Matlab necesitamos dos vectores. A partir de ellos, con la funci on tf
construiremos las funci on de transferencia del ejemplo:
>> G1=tf([1],[1 0.5]);
>> G2=tf([3],[1 2 1]);
>> G3=tf([40],[1 5 40]);
Lo m as interesante de esos objetos es la posibilidad de realizar operaciones matem aticas
entre ellos. Para ilustrar esto, calcularemos la funci on de transferencia del sistema
realimentado en bucle cerrado, desde la referencia hasta la salida. Sabiendo que dicha
funci on tiene la forma
G
bc
(s) =
Y (s)
R(s)
=
G
1
(s)G
2
(s)
1 + G
1
(s)G
2
(s)G
3
(s)
,
teclearemos en Matlab simplemente
14
>> Gbc=G1*G2/(1+G1*G2*G3)
Transfer function:
3s^5+22.5s^4+163.5s^3+331.5s^2+247.5s+60
----------------------------------------------------------------
s^8+10s^7+75.25s^6+262.3s^5+471.5s^4+594.5s^3+570.3s^2+321.3s+70
lo que nos muestra la estructura de la funci on de transferencia en bucle cerrado G
bc
(s),
que podr a ser utilizada a partir de ahora en llamadas a funciones, como las que trazan
los diagramas de Bode (funci on bode) y Nyquist (funci on nyquist).
G
1
(s) G
2
(s)
G
3
(s)

d
d
d
d

E E E E
T
'
r(t) + e u y(t)
m
Figura 3: Sistema de Control realimentado
5.1. Operaciones con polinomios
El Control System Toolbox permite, adem as de lo explicado, realizar ciertas op-
eraciones con polinomios almacenados en forma de vector, que son muy interesantes
dentro de la teora del control autom atico. Por ejemplo, podemos calcular el producto
de dos polinomios en s mediante la funci on conv y a partir de ellos calcular el producto
(cascada) de dos funciones de transferencia:
>> num1=[1]; den1=[1 0 0.5];
>> num2=[3]; den2=[1 2 1];
>> num_producto=conv(num1,num2);
>> den_producto=conv(den1,den2);
>> G12=tf(num_producto,den_producto)
en este caso el resultado del c alculo sera igual al producto de las funciones G
1
(s) y
G
2
(s), que como sabemos, tambien se obtendra, a partir de las deniciones anteriores,
15
escribiendo
>> G12=G1*G2
Por otra parte, para obtener las races de un polinomio denido en Matlab como un
vector, se emplea la funci on roots:
>> roots([1 2 -1 ])
ans =
-2.4142
0.4142
5.2. Herramientas numericas y gracas
Dada una funci on de transferencia, ya sea de bucle abierto o cerrado, existen en el
Control System Toolbox operaciones numericas y gr acas de gran utilidad a la hora de
analizar la estabilidad y otras propiedades. Algunas de ellas aparecen en la siguiente
tabla
Comando Operaci on realizada.
evalfr Eval ua la magnitud y fase de una funci on de transferencia en la
frecuencia especicada.
bode Traza el diagrama logartmico de Bode de una funci on de transfer-
encia dada. Adem as presenta interesantes opciones de visualizaci on
como son los m argenes de ganancia y fase.
nyquist Traza el diagrama de Nyquist de una funci on de transferencia dada.
rlocus Traza el lugar de las races al realimentar negativamente con una
ganancia K (variable) la funci on de transferencia dada.
margin Calcula, sobre el diagram de Bode, los m argenes de fase y ganancia
de una funci on de transferencia y las frecuencias de corte.
pzmap Muestra en una gr aca del plano complejo la ubicaci on de los polos
y los ceros de una funci on de transferencia dada.
Como ejemplo, se obtendr a el diagrama de Bode de la funci on de transferencia
(estable)
G(s) =
1
s
2
+ 0,1s + 0,5
y se calcular an los m argenes de fase y ganancia. Para ello tecleamos
16
>> G1=tf([1],[1 0.1 0.5])
>> bode(G1);
>> margin(G1);
y el resultado aparece representado en la gura 4.
40
30
20
10
0
10
20
30
40
M
a
g
n
i
t
u
d
e

(
d
B
)
Bode Diagram
Gm = Inf dB (at Inf rad/sec) , Pm = 7.02 deg (at 1.22 rad/sec)
Frequency (rad/sec)
10
1
10
0
10
1
180
135
90
45
0
P
h
a
s
e

(
d
e
g
)
Figura 4: Diagrama logartmico de Bode.
Por ultimo, volveremos a la funci on G
b
c(s) calculada para analizar su estabilidad.
Para ello extraemos su denominador tecleando
>> pol=Gbc.den{1}
pol =
1.0000 10.0000 75.2500 262.2500 471.5000 594.5000 570.2500 321.2500 70.0000
y a partir de ah evaluamos sus races mediante
>> roots(pol)
ans =
-2.5301 + 5.8437i
-2.5301 - 5.8437i
-2.3763
17
-0.0317 + 1.2049i
-0.0317 - 1.2049i
-1.0000 + 0.0000i
-1.0000 - 0.0000i
-0.5000
Al estar todas las races en el semiplano izquierdo, deducimos que el sistema en bucle
cerrado es estable. Otro modo de vericar esto es trazando el diagrama polocero de
G
bc
, mediante la instrucci on pzmap(Gbc). El resultado se muestra en la gura 5.
3 2.5 2 1.5 1 0.5 0
6
4
2
0
2
4
6
0.04 0.09 0.14 0.2 0.28 0.4
0.56
0.8
0.04 0.09 0.14 0.2 0.28 0.4
0.56
0.8
1
2
3
4
5
6
1
2
3
4
5
6
PoleZero Map
Real Axis
I
m
a
g
i
n
a
r
y

A
x
i
s
Figura 5: Diagrama polocero de la funci on de transferencia en bucle cerrado G
bc
(s).
6. El entorno de trabajo de Simulink
Simulink es una herramienta de gran utilidad para la simulaci on de sistemas din ami-
cos. Principalmente, se trata de un entorno de trabajo gr aco, en el que se especican
las partes de un sistema y su interconexi on en forma de diagrama de bloques. De nuevo,
se trata de una herramienta amplsima que adem as se complementa con numerosos el-
ementos opcionales. Por tanto, nos limitaremos a dar unas pinceladas de los elementos
m as utiles en Regulaci on Autom atica.
Adem as de las capacidades de simulaci on de las que est a dotado Simulink, con-
viene destacar que contiene c omodas utilidades de visualizaci on y almacenamiento de
resultados de simulaci on.
18
6.1. Uso de Simulink
En primer lugar, lanzaremos la aplicaci on escribiendo simulink en la lnea de co-
mandos de Matlab, o abriendo desde el Explorador de Windows cualquier chero con
extensi on .mdl. En el primero de los casos se abrir a la ventana de la gura 6. Esta
Figura 6: Ventana navegaci on de bloques de Simulink (Simulink Library Browser).
ventana inicial no est a destinada a crear modelos de simulaci on; su funci on principal
consiste en navegar por la enorme librera de bloques disponibles para el modelado.
En ella distinguimos dos partes: la izquierda contiene una visi on en forma de arbol
de todos los Toolboxes instalados que contienen bloques Simulink. La amplitud de
este arbol depender a de las opciones que hayamos activado al seleccionar Matlab.
De todos los nodos del arbol nos interesan, de momento, los denominados Simulink y
Control System Toolbox. Cabe mencionar adem as, por su interes, los bloques Real Time
Workshop destinados a generar autom aticamente c odigo de control para determinadas
plataformas Hardware comerciales.
La parte derecha de la ventana de la gura 6 muestra los bloques Simulink con-
tenidos en el Toolbox o nodo de la parte izquierda de la ventana. Estos bloques se
deben arrastrar sobre el espacio de trabajo de Simulink para la creaci on de modelo a
simular.
Por ultimo, cabe indicar que en la parte superior de la ventana de inicio de Simulink
hay varias herramientas como la b usqueda de un bloque determinado a partir de su
nombre, que nos pueden resultar bastante utiles.
19
6.2. El espacio de trabajo de Simulink
Si pulsamos en el icono superior izquierdo de la ventana de la gura 6 (p agina en
blanco), se abre una ventana blanca sobre la que iniciaremos la creaci on de un modelo
de simulaci on. Dicha ventana se muestra en la gura 7.
Figura 7: Espacio de trabajo de Simulink.
En el espacio de trabajo de Simulink crearemos un modelo insertando los bloques
correspondientes. Concretamente realizaremos la simulaci on del sistema de control rep-
resentado en la gura 3. En lugar de emplear las deniciones en Matlab de las funciones
de transferencia presentadas en el apartado anterior (empleando la funci on tf), creare-
mos las funciones de transferencia directamente sobre el diagrama de bloques.
En primer lugar, hemos de insertar tres bloques de tipo Funci on de Transferencia
en el modelo. Para ello tecleamos la palabra transfer en el campo de b usquedas en la
parte superior de la ventana de navegaci on y el buscador localizar a el bloque llamado
Transfer Fcn, que cuelga del nodo Simulink, como se muestra en la gura 8.
Una vez localizado el bloque Transfer Fcn arrastraremos dicho bloque hacia el
espacio de trabajo de Simulink. El arrastre de bloques se realiza seleccionando el icono
del bloque con el bot on izquierdo del rat on, y manteniendo este pulsado se desplazar a el
cursor hasta la ventana del modelo.
Repetiremos la operaci on tres veces, para reproducir la estructura de la gura 3,
dando lugar a la ventana mostrada en la gura 9.
Una vez insertados los bloques de las funciones de transferencia, les asignamos
nombres especcos (G1,G2 y G3) editando el texto al pie de cada icono, y les damos
valores a dichas funciones, para que coincidan con los par ametros de las funciones
G
1
(s), G
2
(s) y G
3
(s) denidas anteriormente.
Con este n, haremos doble click sobre cada bloque de funci on de transferencia, y
20
Figura 8: Ubicaci on del bloque Transfer Fcn.
en la ventana que se abre en cada caso, introduciremos los vectores de coecientes de
los polinomios numerador y denominador de cada funci on de transferencia. La gura 10
muestra la ventana donde se introducen los par ametros de G
1
(s).
Una vez conguradas las tres funciones de transferencia las conectaremos entre
s con arreglo a la estructura de interconexi on de bloques de la gura 3. Para ello
empleamos las siguientes operaciones:
21
Figura 9: Bloques de funci on de transferencia en Simulink.
Figura 10: Introducci on de los par ametros de G
1
(s) = 1/(s + 0,5).
Operaci on Procedimiento.
Conectar bloques (I) Para conectar las salidas de un bloque a la entrada de
otro, hacer click con el bot on izqdo. del rat on en el
bloque origen. Pulsar y mantener la tecla CTRL y hacer
de nuevo click sobre el bloque destino.
Conectar bloques (II) Tambien se puede extraer un cable de se nal haciendo
click en el saliente derecho del bloque origen y prolon-
gar la se nal (pulsando y manteniendo el bot on izquierdo
del rat on) hasta llegar a la parte izquierda del bloque
destino.
Bifurcar cables Un cable de se nal (que lleva la salida de un bloque
hacia otro bloque), puede bifurcarse para distribuir la
se nal a varios bloques pulsando con el bot on derecho en
cualquier punto del cable.
Sumar o restar se nales Las se nales procedentes de salidas de los bloques se
pueden sumar o restar entre s mediante el bloque
sumador, que se ubica f acilmente tecleando Sum en la
ventana de navegaci on de Simuink.
22
Tras una serie de operaciones de los tipos indicados en la tabla anterior, logramos
construir la estructura de realimentaci on de la gura 11. En esta gura hemos a nadido
dos bloques nuevos: Step y Scope. Ambos pertenecen, respectivamente, a los nodos
Simulink/Sources y Simulink/Sinks que ser an comentados en el siguiente apartado.
Figura 11: Modelo completo.
6.3. Fuentes y sumideros de se nal
Los bloques de suma y resta de se nales y los de funciones de transferencia, funcionan
como procesadores de se nal. Sin embargo, en las simulaciones han de existir fuentes de
se nal externas, pues lo que se pretende en general es ver c omo responden determinados
sistemas a estmulos exteriores.
En nuestro ejemplo necesitamos una se nal externa para generar una referencia a
seguir por el sistema controlado. Esta referencia debe ser, l ogicamente, cambiante con
el tiempo. En nuestro caso emplearemos una se nal de tipo escal on, que se implementa,
con sus par ametros especcos, mediante el bloque Step. Bloques como este, que s olo
tienen salidas y ninguna entrada, se localizan en el arbol de navegaci on de Simulink en
el nodo Simulink/Sources.
Por otro lado, existen bloques con entradas y sin ninguna salida: nodos sumidero.
Uno de ellos es el empleado en nuestro modelo para visualizar la salida del sistema:
Scope. Los bloques de este tipo se ubican en el arbol de navegaci on de Simulink en el
nodo Simulink/Sinks.
A modo de referencia, la tabla 7 muestra algunas fuentes de se nal de uso com un (no-
do Simulink/Sources), mientras que la tabla 8 muestra algunos de los bloques sumidero
(Simulink/Sinks) m as comunes.
23
Elemento Funci on
Clock Marcas de tiempo de la simulaci on.

Util para trazar gr acas
con los resultados.
Sin Se nal senoidal parametrizable.
Step Se nal en escal on
Constant Se nal de valor constante.
Signal generator Permite elegir entre un conjunto de se nales predenidas.
Random Number Generaci on de ruido blanco congurable.
From Workspace Se nal generada a partir de una variable del espacio de trabajo
de Matlab.
Cuadro 7: Fuentes de se nal en Simulink.
Elemento Funci on
Scope Gr aca 2D para visualizar las se nales frente al tiempo durante
la simulaci on.
XY Graph Gr aca 2D para visualizar un gr aco X-Y creado a partir de
dos se nales de entrada.
To Workspace Almacena las muestras de la se nal de entrada en una variable
(vector) del espacio de trabajo de Matlab.
Cuadro 8: Sumideros de se nal en Simulink.
24









Manual de Introduccin
a
SIMULINK










Autor: J os ngel Acosta Rodrguez

2004

Captulo 1
Ejemplo
1.1. Modelado de un sistema dinamico
En este ejemplo se realizara el modelado de un sistema dinamico muy
sencillo. Se modelara el movimiento de una masa sobre una supercie rugosa,
sobre la que se le aplica una fuerza. El sistema a modelar posee una entrada u,
que se corresponde con la fuerza aplicada, y una salida x que sera la posicion
de la masa. El modelo del sistema dinamico se puede expresar mediante las
ecuaciones de Newton:
m x + c x = F (1.1)
m : Masa del cuerpo (Kg)
c : Coeciente de friccion del cuerpo sobre la supercie
F : Fuerza aplicada (N)
Queremos hacer un modelo en con la herramienta Simulinkpara el sis-
tema propuesto. Primero ejecutamos la herramienta Simulinkdesde la ven-
tana de comandos de Matlab haciendo click en el icono correspondiente
1
2 CAP

ITULO 1. EJEMPLO
Saldra por pantalla una ventana graca, como la de la Fig. 1.1, que con-
tiene todas las libreras que el entorno de Simulinkbajo Matlab soporta.
Figura 1.1: Libreras del entorno Simulink
1.1. MODELADO DE UN SISTEMA DIN

AMICO 3
Para este sencillo ejemplo solo necesitaremos la librera basica de Simulink,
por tanto expandimos el menu simulink en la ventana anterior, quedando co-
mo aparece en la Fig. 1.2
Figura 1.2: Librera base de Simulink
Esta ventana esta dividida en dos partes. La de la derecha es la corres-
pondiente a las libreras y la de la derecha es el contenido de la librera
seleccionada.
4 CAP

ITULO 1. EJEMPLO
Elegimos un nuevo chero donde guardaremos el modelo: seleccionamos
en el menu File New Model. Tendremos la situacion de la Fig. 1.3
Figura 1.3: Apertura de un nuevo chero modelo
1.1. MODELADO DE UN SISTEMA DIN

AMICO 5
Se abrira una ventana en blanco donde crearemos el modelo. La situacion
debe ser ahora la de la Fig. 1.4
Figura 1.4: Apertura de un nuevo chero modelo
En esta nueva ventana que a un no hemos dado nombre (untitled) desar-
rollaremos el ejemplo. Lo primero que hacemos es darle un nombre adecuado.
Para ello, en el menu File de la nueva ventana elegimos File Save. Nos
situamos en el directorio adecuado a traves del menu desplegable, ponemos
un nombre al archivo, por ejemplo masa
2
guardamos el modelo. Ya tenemos
un archivo donde crear el modelo. La extension por defecto de los archivos
de modelo es *.mdl.
Empezamos a crear el modelo dado por la ecuacion (1.2). Para ello es
necesario hacer alguna modicacion en la ecuacion (1.2). Despejando de la
ecuacion (1.2) la aceleracion del cuerpo se obtiene:
x =
c
m
x +
F
m
(1.2)
Como puede verse necesitaremos varios tipos de bloques. Elegimos estos
bloques de la ventana de la derecha de la librera (Fig. 1.2). El primero que
seleccionamos el que denira la fuerza aplicada a la masa, lo haremos me-
diante una constante. Seleccionamos Sources y en la derecha seleccionamos
6 CAP

ITULO 1. EJEMPLO
el bloque de Constant. Ahora lo arrastramos hacia la ventana de nuestro
modelo con el boton izquierdo del raton pulsado. Hacemos click en el la eti-
queta del nombre del bloque de constante y le damos su nombre, por ejemplo
F. La situacion debe ser la de la Fig. 1.5
Figura 1.5: Construyendo el modelo
Observando la ecuacion (1.2), puede verse que se necesita hacer las op-
eraciones de sumar y dividir. Para ello seleccionamos Math Operations en
la ventana de la librera y escogemos del mismo modo que antes los bloques
de Sum y Gain. Para describir la ecuacion diferencial se necesitara ademas
el bloque integrador Integrator en la librera Continuous. Ya se esta en
disposicion de describir la ecuacion (1.2) utilizando bloques. Debemos unir
los bloques de forma adecuada para describir dicha ecuacion (1.2). Haremos
el esquema como describe la Fig. 1.6. Para unir los bloques debemos pinchar
con el boton izquierdo del raton en el bloque de origen y soltar en el bloque
de destino.
Como puede verse en la Fig. 1.6, se han editado los nombres de los blo-
ques poniendoles nombres distintos a los originales. Tambien se ha editado el
valor de algunos de los bloques. Daremos valores concretos a las constantes.
Supongamos que la masa es de un kg m = 1, que la constante de friccion
vale c = 0,8 y que la fuerza aplicada es 0.1 N (F = 0,1). As por ejemplo el
bloque Gain denominado c/m posee en su interior el valor correspondiente
a
c
m
= 0,8, y el denominado 1/m tendra valor 1. Estos valores se introducen
haciendo doble click en los bloques y editando el campo correspondiente.
Por otro lado se ha escrito texto para hacer mas facil la lectura del modelo.
Estas cajas de texto se crean simplemente haciendo doble click en el lugar
que se desee y editando el recuadro que aparece.
1.1. MODELADO DE UN SISTEMA DIN

AMICO 7
x
..
x
.
F/m
c*x
.
/m
x
0.8
c/m
1
s
Integrador
1
s
Integrador
1
F
1
1/m
Figura 1.6: Modelo
Para poder ver los resultados ponemos un bloque que nos muestre la
posicion de la masa frente al tiempo. Seleccionamos dentro de la librera
Sinks el bloque Scope. Lo a nadimos al modelo de la forma habitual. Ya
tenemos el modelo completo. Los bloques deben estar como se muestra en la
Fig. 1.7.
x
..
x
.
F/m
c*x
.
/m
x
0.8
c/m
Scope
1
s
Integrador
1
s
Integrador
1
F
1
1/m
Figura 1.7: Modelo con Scope
En la Fig. 1.7 debe notarse que las variables de estado estan perfecta-
mente denidas y accesibles en el diagrama de bloques. Ahora se esta en
disposicion de hacer una simulaci on del proceso. Para ello debemos denir
algunos parametros esenciales. Los mas importantes son las condiciones ini-
ciales de las variables de estado y el tiempo de simulaci on. Las condiciones
iniciales deben ponerse en los bloques integradores. Se hace doble click en el-
los y se denen las mismas en la zona de edicion correspondiente. Por ejemplo
ponemos el valor inicial de la velocidad a -1. En la Fig. 1.8 puede verse donde
se dene el parametro despues de haber hecho doble click en el integrador
que nos da la velocidad.
8 CAP

ITULO 1. EJEMPLO
Figura 1.8: Condicion inicial en velocidad
Para denir el tiempo de simulacion accedemos al menu de la ventana del
modelo Simulation Simulation parameters. Se abre una ventana donde es
posible denir entre otros parametros el tiempo de simulacion, el metodo de
resolucion y el paso jo o variable. Dejamos los dos ultimos como estan y
ponemos el tiempo de simulaci on a 10 segundos. La situacion sera como la
mostrada en la Fig. 1.9
Por ultimo denimos la fuerza aplicada que deseamos. Hacemos doble
click en el bloque donde esta denida la fuerza y ponemos el valor deseado
que era 0.1.
Para ver el resultado en el Scope debemos hacer doble click sobre el
mismo y se abrira la ventana graca que nos dara la posicion del cuerpo.
Ahora pulsamos el boton de inicio de simulacion . Una vez acabada la
simulacion tendremos el resultado que puede verse en la Fig. 1.10.
Si deseamos ver tambien la velocidad tenemos acceso a la variable en el
diagrama. Podemos poner otro Scope para la velocidad. El resultado puede
verse en la Fig. 1.11
Se podran ver las dos variables de estado en una sola ventana graca
Scope. Se necesita para ello el bloque Mux dentro de la librera Signal
routing. Este bloque hace las veces de un multiplexor y anida vectores. Se
1.1. MODELADO DE UN SISTEMA DIN

AMICO 9
Figura 1.9: Parametros de simulacion
Figura 1.10: Simulacion
10 CAP

ITULO 1. EJEMPLO
Figura 1.11: Simulaci on. Utilizacion del bloque Scope
1.1. MODELADO DE UN SISTEMA DIN

AMICO 11
modica el diagrama como se ve en la Fig. 1.12 y ya se tienen las dos variables
en una sola ventana graca.
Figura 1.12: Simulaci on. Utilizacion del bloque Mux
Supongamos que no solo queremos ver el resultado sino que tambien quer-
emos guardar las variables en memoria para poder acceder a ellas. Buscamos
dentro de la librera Sinks el bloque To Workspace. Lo a nadimos al dia-
grama anterior y le damos un nombre a la matriz donde queremos guardar
el valor de las variables, por ejemplo X. El resultado es el de la Fig. 1.13
x
..
x
.
F/m
c*x
.
/m
x
0.8
c/m X
To Workspace
Posicin
y
velocidad
1
s
Integrador
1
s
Integrador
0.1
F
1
1/m
Figura 1.13: Simulacion. Utilizacion del bloque To Workspace
Si ahora queremos ver el valor de las variable desde la linea de comandos
de Matlab, hacemos plot(tout, X). En la matriz X se encuentran la posicion
12 CAP

ITULO 1. EJEMPLO
y la velocidad por columnas en el orden que se han puesto en el diagrama de
bloques Fig. 1.13. El tiempo de simulaci on se guarda por defecto en la variable
tout dada en el menu Simulation Simulation parameters Workspace
I/O. El resultado se muestra en la Fig. 1.14.
0 1 2 3 4 5 6 7 8 9 10
1
0.8
0.6
0.4
0.2
0
0.2
0.4
Figura 1.14: Resultado de ejecutar el comando plot(tout,X)
Todo este modelo se ha creado a traves de las variables temporales y sus
derivadas. Simulink permite hacer los modelos untilizando la transformada
de Laplace. Para ello necesitamos transformar la ecuacion del modelo (1.2)
en el dominio de Laplace. Suponemos las condiciones iniciales iguales a cero.
Por tanto, la ecuacion (1.2) quedara en el dominio de Laplace
ms
2
X(s) + csX(s) = F (1.3)
Podemos transformarla en una funcion de transferencia si tomamos como
salida la posicion (X(s)) y como entrada la fuerza aplicada (F(s)) del modo
siguiente
X(s)
F(s)
=
1
c
s(
m
c
s + 1)
=
K
s(s + 1)
, (1.4)
donde K =
1
c
y =
m
c
. Para el ejemplo anterior K = = 1,25.
1.1. MODELADO DE UN SISTEMA DIN

AMICO 13
Ahora ya podemos construir el modelo utilizando Laplace. De la librera
Continuous elegimos los bloques Integrator y Transfer Fcn. Editamos este
ultimo bloque con los valores de K y anteriores haciendo doble click. El
modelo quedara como se muestra en la Fig. 1.15
F x
.
x
1.25
1.25s+1
Transfer Fcn
X
To Workspace
Posicin
y
velocidad
1
s
Integrador
0.1
F
Figura 1.15: Modelo en el dominio de Laplace
Debe notarse que en este ultimo esquema Fig. 1.15, la condicion inicial
de la velocidad no esta accesible. Si se desea tener en cuenta hay que hacerlo
a la hora de pasar las ecuaciones al dominio de Laplace.
Ya sabemos hacer un modelo de un sistema dinamico, tanto en el do-
minio del tiempo como en el de la frecuencia (Laplace). Ahora se describe
como hacer subsistemas. La idea de estos subsistemas es agrupar bloques con
alg un criterio predenido. Como ejemplo agruparemos los bloques del primer
ejemplo como un solo bloque que sea el modelo del sistema. Tendra como
entrada la fuerza aplicada y como salidas la posicion y la velocidad del sis-
tema. Para conseguir esto debemos seleccionar todo aquello que queremos
que pertenezca al subsistema. La seleccion se hace con el boton izquierdo del
raton, como en Windows, haciendo un recuadro con todo aquello que quer-
emos seleccionar. Todo esto con el boton pulsado. Despues se suelta y nos
vamos al menu Edit Create subsystem, como en la Fig. 1.16
Una vez hecho esto tendremos la situacion de la Fig. 1.17, donde todo lo
seleccionado anteriormente se ha metido dentro de un bloque.
Haciendo doble click en el bloque se puede ver su contenido en otra
ventana como se muestra en la Fig. 1.17.
14 CAP

ITULO 1. EJEMPLO
Figura 1.16: Creando subsistemas
Figura 1.17: Creando subsistemas
Universidad de Chile
Facultad de Ciencias Fsicas y Matematicas
Departamento de Ingeniera Electrica
Introducci

on a Matlab y Simulink
Preparado por Diego Sep ulveda J.
Version 1.0, 6 de agosto de 2002

Introducci on
Matlab es un poderoso sistema el cual permite el tratamiento numerico
de una gran cantidad de aplicaciones en ingeniera, tales como: procesamiento
de se nales, an alisis estadsticos, interpolaci on de curvas, series de tiempo, si-
mulaci on y control de sistemas, l ogica difusa, redes neuronales, identicaci on
de par ametros, etc.
El nombre Matlab se debe a que en realidad consiste en un laboratorio
de matrices (Matrix laboratory), raz on por la cual es excelente para el
c alculo numerico de vectores y valores propios, descomposiciones de matrices
y cualquier aplicaci on que involucre matrices.
Adem as de lo mencionado anteriormente, Matlab tambien incluye un
subprograma llamado Simulink, el cual permite la simulaci on de todo sis-
tema din amico lineal y casi cualquier sistema no lineal.
A pesar de la gran cantidad de aplicaciones mencionadas anteriormente,
este apunte est a enfocado hacia las aplicaciones orientadas hacia el control
de sistemas.
Si el lector desea ahondar m as sobre los aspectos generales de Matlab en-
tonces deber a referirse a [1]
i
II

Indice general
1. Lo basico 1
1.1. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1. Denici on y asignaci on de variables . . . . . . . . . . . 1
1.1.2. Operando con matrices . . . . . . . . . . . . . . . . . . 2
1.1.3. Matrices especiales . . . . . . . . . . . . . . . . . . . . 3
1.1.4. Manipulaci on de matrices . . . . . . . . . . . . . . . . 5
1.1.5. Arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. Variables y Funciones . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.3. Algunas Variables y Funciones de utilidad . . . . . . . 9
1.3. Gr acos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.1. Figuras . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.2. Gr acos en 2D . . . . . . . . . . . . . . . . . . . . . . 12
2. Simulink 17
2.1. Diagramas de Bloques . . . . . . . . . . . . . . . . . . . . . . 17
2.2. Usando Simulink . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1. Librera Continuos . . . . . . . . . . . . . . . . . . . 19
2.2.2. Librera Discrete . . . . . . . . . . . . . . . . . . . . 19
2.2.3. Libreras Sources y Sinks . . . . . . . . . . . . . . 20
2.2.4. Otras Libreras . . . . . . . . . . . . . . . . . . . . . . 21
A. Funciones Comunes 25
iii
IV

INDICE GENERAL
Captulo 1
Lo basico
Dado que todas las aplicaciones de Matlab se basan en el uso de matrices,
lo primordial en este captulo es mostrar c omo utilizarlas, posteriormente se veran
los distintos tipos de variables y funciones que existen, para nalmente aprender
el manejo de gracos.
1.1. Matrices
1.1.1. Denici on y asignaci on de variables
Para introducir una matriz en Matlab s olo se debe introducir los n ume-
ros de la matriz entre parentesis cuadrados ([ ]), las columnas se separan por
espacios y las las por punto y coma (;)
1
. Por ejemplo:
>> A=[3 4 5 ; 3 2 7]
A =
3 4 5
3 2 7
Como se puede ver en el ejemplo anterior las variables se asignan mediante
un signo igual (=) de la misma manera que en lenguajes como JAVA o C.
1
; tambien se utiliza para suprimir la visualizacion del resultado
1
2 Matrices
1.1.2. Operando con matrices
Para transponer
2
matrices s olo hay que poner despues de la matriz o de
la variable un ap ostrofe (), siguiendo con el ejemplo anterior quedara:
>> A
ans =
3 3
4 2
5 7
En la variable ans mostrada en el ejemplo anterior, Matlab guarda el re-
sultado de la ultima operaci on ejecutada.
Las operaciones aritmeticas son igual que ne la mayora de los lenguajes,
as para sumar (o restar) s olo hay utilizar el signo + (o -), para multiplicar
se utiliza el asterisco (*) y para dividir por la derecha (izquierda) se utiliza
(/ (\)).
3
Por ejemplo:
>> B=[1 2 3; 4 5 6];
>> C=A+B
C =
4 6 8
7 7 13
>> D=C*A
D =
76 80
114 126
Para potenciar una matriz se utiliza el smbolo (), seguido del exponente
que se desea. Si se desea invertir una matriz se puede hacer de dos maneras:
elevando la matriz a -1 o utilizando la funci on inv:
2
En el caso de que se utilicen n umeros complejos se obtiene la conjugada transpuesta
3
Obviamente para poder realizar estas operaciones es necesario que las dimensiones de
las matrices sean consistentes.
1.1.3 Matrices especiales 3
>> A=[2 2 ; 0 1]
A =
2 2
0 1
>> inv(A)
ans =
0.5000 -1.0000
0 1.0000
En el cuadro 1.1 se muestra un resumen de los operadores matriciales.
Operacion Smbolo
Multiplicaci on *
Divisi on por la derecha /
Divisi on por la izquierda \
Potenciaci on
Transposici on conjugada
Cuadro 1.1: Operadores para algebra matricial
1.1.3. Matrices especiales
Dado que existen matrices que son muy utilizadas en la pr actica Mat-
lab incluye funciones especcas para crearlas:
ones crea una matriz de unos
zeros crea una matriz de ceros
eye crea la matriz identidad
La utilizaci on de las tres es muy similar, se introduce primero el n umero
de las y posteriormente el n umero de columnas; como muestra el siguiente
ejemplo:
4 Matrices
>> A=ones(3,2)
A =
1 1
1 1
1 1
>> B=zeros(3,5)
B =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
>> C=eye(3)
C =
1 0 0
0 1 0
0 0 1
>> C=eye(3,4)
C =
1 0 0 0
0 1 0 0
0 0 1 0
N otese que si se desea la matriz identidad de orden n s olo hay que introducir
n, pero si se desea una rectangular se utiliza igual que las funciones anteriores.
Otro tipo de matrices com unmente utilizadas son los vectores, los cuales se
pueden denir como cualquier matriz. La importancia radica en que muchas
veces se utilizan para indexar alguna serie de elementos, para denirlos de
esta manera se utiliza (:), de la siguiente manera:
1.1.4 Manipulaci on de matrices 5
n umero inicial:paso:cota superior
Por ejemplo:
>> 1:4:19
ans =
1 5 9 13 17
1.1.4. Manipulaci on de matrices
Una aplicaci on de uso frecuente consiste en seleccionar algunas columnas,
las o simplemente elementos de alguna matriz; esto se logra con la utilizaci on
de parentesis despues del nombre del nombre de la variable y de dos puntos
(:). A continuaci on se muestran algunos ejemplos para la matriz denida
anteriormente:
>> A(1,1)
ans =
2
>> A(:,1)
ans =
2
0
>> A(2,:)
ans =
0 1
>> A(4)
6 Matrices
ans =
1
En el primer ejemplo se obtiene el elemento a
11
de la matriz, en el segundo
ejemplo la primera columna, el tercer ejemplo se obtiene la segunda la,
y para el ultimo ejemplo se obtiene el cuarto elemento de la matriz. La
numeraci on del ultimo ejemplo es por columnas (as a
11
es 1

, a
21
es 2

, a
12
es 3

, a
22
es 4

).
Adem as de seleccionar elementos, muchas veces es util eliminar alg un(os)
elemento(s) de la matriz
4
, para lograr lo anterior se utilizan un par de parente-
sis cuadrados. As, por ejemplo, si se desea borrar la segunda columna de una
matriz dada:
>> A=[1 2 6; 3 4 8; 5 7 9; 3 4 9];
>> A(:,2)=[ ]
A =
1 6
3 8
5 9
3 9
Es importante notar que tanto la selecci on como la eliminaci on de elementos
de una matriz se puede realizar utilizando un vector como conjunto ndices
a utilizar. Por ejemplo:
>> A=0:1:10
A =
0 1 2 3 4 5 6 7 8 9 10
>> indice=1:2:11
indice =
4
Sin embargo, solo se puede hacer si la estructura resultante sigue siendo una matriz
1.1.5 Arreglos 7
1 3 5 7 9 11
>> B=A(indice)
B =
0 2 4 6 8 10
obtiene los n umeros que est an en las posiciones impares del vector A.
Muchas veces es util concatenar matrices, lo cual se puede utilizar utili-
zando los parentesis cuadrados ([ ]). Por ejemplo para concatenar horizontal-
mente:
>> B=[1 2 3; 4 5 6];
>> C=[1 ; 2];
>> [B C]
ans =
1 2 3 1
4 5 6 2
y para concatenar verticalmente:
>> B=1:1:4;
>> C=4:-1:1;
>> [B ; C]
ans =
1 2 3 4
4 3 2 1
Obviamente las dimensiones de las matrices deben ser consistentes con la
concatenaci on.
1.1.5. Arreglos
Los arreglos son matrices, pero poseen una aritmetica distinta en cuan-
to a la multiplicaci on y divisi on. Estas operaciones se ejecutan elemento a
8 Variables y Funciones
elemento, y para que sean consistentes los arreglos deben ser de las mismas
dimensiones.
Para diferenciar las operaciones matriciales de las operaciones de arreglos
los operadores van precedidos por un punto (.), como se muestra en el cuadro
1.2.
Operacion Smbolo
Multiplicaci on .*
Divisi on por la derecha ./
Divisi on por la izquierda .\
Potenciaci on .
Transposici on no conjugada .
Cuadro 1.2: Operadores para algebra de arreglos
Por ejemplo:
>> A=[1 3 4; 4 2 6];
>> B=[3 4 8; 7 8 0];
>> A.\B
ans =
3.0000 1.3333 2.0000
1.7500 4.0000 0
corresponde a la divisi on de arreglos por la izquierda de A por B, i.e.
b
ij
a
ij
i, j.
1.2. Variables y Funciones
1.2.1. Variables
Existen varios tipos de variables en Matlab, las m as comunes son:
double corresponden a las matrices y arreglos numericos.
char son los arreglos de caracteres, se denen entre ap ostrofes ():
1.2.2 Funciones 9
>> Z=hola
Z =
hola
1.2.2. Funciones
Las funciones son, al igual que en la mayora de los lenguajes, subrutinas
que facilitan el trabajo, por ejemplo la funci on mean calcula el promedio o
media de un set de datos:
>> A=1:1:4;
>> mean(A)
ans =
2.5000
Lo importante con respecto a las funciones en Matlab es que vienen algu-
nas incluidas en el programa (built-in functions) y otras viene dentro de los
distintos toolboxes que trae Matlab (por ejemplo mean).
Generalmente las funciones vienen con alguna ayuda de su utilizaci on, la
cual se puede visualizar a traves de la funci on help.
1.2.3. Algunas Variables y Funciones de utilidad
Matlab trae muchas variables y funciones predenidas, algunas de estas
variables se muestran en el cuadro 1.3, mientras que algunas funciones m as
utilizadas aparecen en el cuadro 1.4.
Si se aplica alguna de las funciones matem aticas a alguna matriz se ob-
tiene una matriz en la que los elementos han sido evaluados por la funci on.
Por ejemplo:
>> X=0:0.1:1;
>> exp(-X)
ans =
10 Variables y Funciones
Nombre Descripcion
pi El n umero m as famoso del mundo
i Unidad imaginaria
j Lo mismo que i, pero para los electricos
Inf Innito
NaN No es un n umero
eps Precisi on relativa de punto otante, 2
52
Cuadro 1.3: Variables Predenidas
Nombre Descripcion
sin(X) Funci on seno de X
cos(X) Funci on coseno de X
tan(X) Funci on tangente de X
exp(X) Funci on exponencial de X
log(X) Funci on logaritmo natural de X
plot(X,Y) Gr aca Y versus X
clear(A) Borra la variable A
det(A) Calcula el determinante de la matriz A
eig(A) Calcula los valores y vectores propios de la matriz
A
poly(A) Calcula los coecientes del polinomio caracterstico
de la matriz A
roots(coef) Calcula los races del polinomio cuyos coecientes
vienen en coef
sum(X) Suma los elementos del vector X
length(X) Retorna el largo del vector X
size(A) Retorna las dimensiones de la matriz A
help funcion Entrega ayuda sobre la funci on funcion
lookfor palabra Retorna las funciones en las que aparece el string
palabra
Cuadro 1.4: Funciones B asicas m as comunes
Columns 1 through 7
1.0000 0.9048 0.8187 0.7408 0.6703 0.6065 0.5488
1.2.3 Algunas Variables y Funciones de utilidad 11
Columns 8 through 11
0.4966 0.4493 0.4066 0.3679
12 Gra cos
1.3. Gracos
Para gracar en Matlab fundamentalmente se utiliza la funci on plot
mencionada anteriormente, sin embargo tambien es posible gracar en forma
escalonada, utilizando s olo lneas verticales, utilzando n umeros complejos o
en 3D, entre muchas maneras de gracar. A continuaci on se detallan las m as
utilizadas y los comandos m as utiles relacionados.
1.3.1. Figuras
Una gura es una ventana en la cual se desplegan los gr acos obtenidos
mediante Matlab. Esto presenta varias ventajas las cuales se mostrar an m as
adelante.
Aunque, generalmente, las guras se generan por defecto al crear un gr a-
co, a veces es necesario pedir otra gura a Matlab, para esto se utiliza el
comando figure, el cual genera otra gura en la pantalla. El modo de utili-
zarlo es:
>> figure
Si se desea cerrar alguna gura se utiliza la funci on close, seguida del
n umero de la gura. Si se quiere cerrar todas las guras entonces se ejecuta:
>> close all
lo cual cierra todas las guras existentes
5
.
1.3.2. Gracos en 2D
Como se menciona anteriormente se utiliza la funci on plot, tal como se
muestra en el siguiente ejemplo:
>> t=0:0.1:5;
>> plot(t,exp(-t))
lo cual produce como resultado la g. 1.1.
Para que plot funcione ambos vectores deben tener el mismo largo. Si X
o Y es una matriz entonces el vector es gracado versus las las o columnas
de la matriz, dependiendo de con cual se alinee.
5
De manera analoga clear all borra todas las variables
1.3.2 Gra cos en 2D 13
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figura 1.1: Ejemplo de plot
Adem as plot tiene m as opciones las cuales se pueden ver en la ayuda de
la funci on.
Una forma de gracar com unmente usada es aquella en la cual se encuen-
tran dos gr acas en la misma gura . Lo anterior se puede lograr de varias
maneras, dos de ellas son:
>> plot(t,exp(-t),t,sin(t))
>> plot(t,[exp(-t); sin(t)])
las cuales producen el mismo resultado (g. 1.2). Sin embargo, hay otra
opci on la cual consiste en utilizar la funci on hold que retiene el gr aco actual
y agrega el gr aco deseado a la gura actual. Para el ejemplo anterior:
>> plot(t,exp(-t))
>> hold on
>> plot(t,sin(t))
>> hold off
cuyo resultado se muestra en la g. 1.3. La utilizaci on de hold off es para
soltar la gura.
14 Gra cos
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
Figura 1.2: Dos gr acas en la misma gura
Para crear una leyenda de las gr acas se utiliza la funci onlegend(string1,
string2, ...), donde los string i son los textos de cada gr aco para la
leyenda, as para el ejemplo anterior, la instrucci on:
>> legend(exponencial, seno)
produce la g. 1.4.
Tambien es posible gracar en escalonada utilizando la funci on stairs(X,Y)
de manera an aloga al uso de la funci on plot, con la diferencia que los ele-
mentos del vector X deben ser equiespaciados.
Si se quiere gracar se nales de tiempo discreto se puede utilizar la funci on
stem(X,Y), cuyo uso es an alogo a las funciones anteriores.
Muchas veces es muy util agrupar varios gr acos en una misma gura, lo
cual se consigue f acilmente con la funci on subplot(m,n,i), la cual divide la
gura en una matriz de m n y el gr aco se agrega en el elemento i-esimo.
Adem as, tiene la ventaja de agregar gr acas que ocupen distinto tama no en
la gura resultante. Por ejemplo, las siguientes instrucciones:
>> X=-pi:0.1:pi;
>> subplot(3,2,1)
1.3.2 Gra cos en 2D 15
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
Figura 1.3: Ejemplo de hold
>> plot(X,sin(X));
>> subplot(3,2,2)
>> plot(X,cos(X));
>> subplot(3,1,2)
>> plot(X,cos(X)+sin(X));
>> subplot(3,1,3)
>> plot(X,[cos(X);sin(X)]);
generan como resultado la g. 1.5.
Tambien hay funciones para poner ttulos, formatear los ejes, poner textos
en cualquier parte de la gura, nombrar el eje x y el eje y, utilizar grilla, etc.
La mayora de las funciones anteriores aparece en la ayuda de la funci on
plot.
No hay que olvidar que todas las instrucciones anteriores pueden combi-
narse, para producir las guras que uno desea.
16 Gra cos
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
exponencial
seno
Figura 1.4: Ejemplo de legend
4 2 0 2 4
1
0.5
0
0.5
1
4 2 0 2 4
1
0.5
0
0.5
1
4 3 2 1 0 1 2 3 4
2
1
0
1
2
4 3 2 1 0 1 2 3 4
1
0.5
0
0.5
1
Figura 1.5: Ejemplo de subplot
Captulo 2
Simulink
Simulink es un sistema interactivo para simular sistemas dinamicos no-
lineales. La gran ventaja de Simulink es su interfaz graca, mediante la cual se
pueden implementar complicados modelos y obtener simulaciones en un tiempo
extremadamente rapido a traves de los diagramas de bloques.
2.1. Diagramas de Bloques
En pocas palabras para utilizar Simulink s olo hay que saber c omo tra-
ducir una ecuaci on diferencial o de diferencias a un diagrama de bloques. Por
ejemplo si se desea simular la respuesta de la siguiente ecuaci on diferencial
y(t) + 3y(t) = 1
y(0) = 0
(2.1)
primero hay que generar el diagrama de bloques del modelo, el cual se observa
en la g. 2.1. La implementaci on en Simulink se muestra la g. 2.2, y a
Figura 2.1: Diagrama de Bloques
17
18 Usando Simulink
Figura 2.2: Implementaci on en Simulink
traves de esta se obtiene la respuesta del sistema descrito por (2.1), la cual
se aprecia en la g. 2.3.
0 1 2 3 4 5 6 7 8 9 10
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
Figura 2.3: Respuesta del sistema din amico
2.2. Usando Simulink
Para utilizar Simulink s olo es necesario construir el diagrama de bloques
mediante los bloques predenidos que vienen en la librera.
El uso de los bloques es bastante sencillo, s olo hay que arrastrar el icono
del bloque al modelo que se est a construyendo. Si se desean cambiar los
par ametros de los bloques s olo hay que hacer un doble click sobre su icono.
2.2.1 Librera Continuos 19
Para conectar los bloques hay que situar el puntero del mouse sobre el
puerto de salida del primer bloque, con lo que el puntero debera cambiar a
una cruz, y arrastrar el mouse hacia el puerto de entrada del siguiente bloque.
A continuaci on se detallan los bloques m as utilizados.
2.2.1. Librera Continuos
En esta librera se encuentran todos los bloques de tiempo continuo para
sistemas lineales, los cuales son:
Derivative: Derivada numerica de la se nal de entrada.
Integrator: Integra la se nal de entrada.
Memory: Retrasa la se nal en un tiempo de integraci on.
State-Space: Representaci on en variables de estado.
Transfer-Fcn: Representaci on en funci on de transferencia. Expresi on ma-
tricial para el numerador, expresi on vectorial para el denominador. El
ancho de la salida debe ser igual al n umero de las del numerador. Los
coecientes son potencias descendentes de s.
Transport Delay: Aplica el retraso especicado a la se nal de entrada.
Variable Transport Delay: Aplica un retraso a la primera se nal de entra-
da. La segunda entrada especica el retardo.
Zero-Pole: Representaci on en polos y ceros. Expresi on matricial para los
ceros. Expresi on vectorial para los polos y la ganancia. El ancho de la
salida debe igualar el n umero de columnas de la matriz de ceros, o uno
si los ceros son un vector.
2.2.2. Librera Discrete
Esencialmente es identica a la anterior, pero para sistemas lineales de
tiempo discreto, i.e. para ecuaciones de diferencias. Los bloques son:
Discrete Transfer-Fcn: Funci on de transferencia discreta, an alogo al caso
continuo.
20 Usando Simulink
Discrete Zero-Pole: Representaci on discreta en polos y ceros.

Idem al caso
continuo.
Discrete Filter: Filtro discreto. Expresi on vectorial para el numerador y el
denominador. Los coecientes son para potencias ascendentes de z
1
.
Discrete State-Space: Representaci on en variables de estado de tiempo
discreto.
Discrete-Time Integrator: Integraci on en tiempo discreto de la se nal de
entrada.
First-Order Hold: Retenedor de primer orden.
Unit Delay: Muestrea y retiene con un perodo de muestreo de retraso.
Zero-Order Hold: Retenedor de orden cero.
2.2.3. Libreras Sources y Sinks
Estas libreras son aquellas que proveen las fuentes y los sumideros de los
diagramas de bloques. Algunos de estos son:
Clock: Librera Sources. Genera el tiempo de simulaci on actual.
Constant: Librera Sources. Genera una constante especicada en el par ame-
tro Constant value . Si Constant value es un vector y Interpret vector
parameters as 1-D est a arriba (on), el valor constante es tratado como
un arreglo 1-D. Sino, la salida es una matriz con las mismas dimensiones
que el valor constante.
Signal Generator: Librera Sources. Genera varias formas de onda.
Sine Wave: Librera Sources. Genera una onda sinusoidal.
Step: Librera Sources. Genera un escal on.
Display: Librera Sinks. Representaci on numerica de los valores de en-
trada.
Scope: Librera Sinks. Representaci on gr aca de los valores de entrada
versus el tiempo de simulaci on.
2.2.4 Otras Libreras 21
Stop Simulation: Librera Sinks. Detiene la simulaci on cuando la en-
trada es distinta de cero.
To File: Librera Sinks. Escribe el tiempo y la entrada al archivo MAT
especicado en formato la. El tiempo est a en la primera la.
To Workspace: Librera Sinks. Escribe la salida al arreglo o estructura
especicado en el workspace principal de Matlab. Los datos no est an
disponibles hasta que la simulaci on se detiene.
XY Graph : Librera Sinks. XY scope usando la ventana gr aca de
Matlab. la primera entrada es usada como base temporal. Se ingresan
los rangos del gr aco.
2.2.4. Otras Libreras
Adem as de las libreras anteriormente detalladas, existen otras que pro-
veen los siguientes bloques que son extremadamente utiles:
Fcn: Librera Functions & Tables. Bloque para una expresi on general.
Usa u como el nombre de la variable de entrada. Ejemplo: sin(u[1]
* exp(2.3 * -u[2]))
MATLAB Fcn: Librera Functions & Tables. Pasa los valores de entra-
da a una funci on de Matlab para evaluarla. La funci on debe retornar
un s olo argumento vectorial del largo de Output width. Ejemplos:
sin, sin(u), foo(u(1), u(2))
Polynomial: Librera Functions & Tables. Evaluaci on polinomial. Cal-
cula P(u) dado por el arreglo de coecientes polinomiales P. P est a or-
denado del mayor al menor orden, la forma aceptada por la funci on
polyval de Matlab.
S-Function: Librera Functions & Tables. Bloque denible por el usua-
rio. Los bloques pueden estar escritos en M, C, Fortran o Ada y deben
cumplir los est andares de S-function. t,x,u y flag son autom aticamente
entregados a la S-function por Simulink. Par ametros Extra pueden
ser especicados en el campo S-function parameters.
Abs: Librera Math. Valor absoluto, i.e. y = |u|.
22 Usando Simulink
Dot Product: Librera Math. Producto interno (punto). y = sum(conj(
u1).*u2)
Gain: Librera Math. Ganancia elemento a elemento (y = K.*u) o ga-
nancia matricial (y = K*u o y = u*K).
Math Function: Librera Math. Funciones matem aticas incluyendo fun-
ciones logartmicas, exponencial, potenciaci on, y m odulo.
Matrix Gain: Librera Math. Ganancia elemento a elemento (y = K.*u)
o ganancia matricial (y = K*u o y = u*K).
MinMax: Librera Math. La salida es el mnimo o m aximo de la entrada.
Para una sola entrada, los operadores se aplican a traves del vector de
entrada. Para m ultiples entradas, los operadores se aplican a traves de
las entradas.
Product: Librera Math. Multiplica o divide las entradas. Especicar
una de las dos opciones siguientes:
1. * o / para cada puerto de entrada (ej., **/*)
2. Un escalar especicando el n umero de puertos de entrada a ser
multiplicados.
El valor escalar 1 para producto elemento a elemento causa que
todos los elementos de un solo vector de entrada sean multiplica-
dos.
Sum: Librera Math. Suma o substrae las entradas. Especicar una de
las dos opciones siguientes:
1. Un string conteniendo + o - para cada puerto de entrada, | para
espacio entre los puertos (ej. ++|-|++)
2. Un escalar 1. Un valor 1 suma todas las entradas; 1 suma los
elementos de una solo vector de entrada.
Trigonometric Function: Librera Math. Funciones trigonometricas e
hiperb olicas.
Demux: Librera Signals & Systems. Divide:
2.2.4 Otras Libreras 23
1. se nales vectoriales a escalares o vectores m as peque nos, o
2. se nales tipo bus producidas por el bloques Mux en sus valores
escalares, vectoriales o matriciales constituyentes. Chequear Bus
Selection Mode para dividir se nales tipo bus.
Mux: Librera Signals & Systems. Multiplexa se nales escalares, vectoria-
les, o matriciales a un bus.
Terminator: Librera Signals & Systems. Usado para terminarse nales
de salida. (Previene advertencias acerca puertos de salida no conecta-
dos.)
24 Usando Simulink
Apendice A
Funciones Comunes
A continuaci on se incluyen las funciones m as utilizadas de Matlab con
una peque na descripci on de lo que hacen.
acos: Funcion. Sintaxis acos(X). Funci on arcocoseno de X.
asin: Funcion. Sintaxis asin(X). Funci on arcoseno de X.
atan: Funcion. Sintaxis atan(X). Funci on arcotangente de X.
atan2: Funcion. Sintaxis atan(Y,X). Funci on arcotangente de Y/X. La salida
se encuentra entre y .
clear: Funcion. Sintaxis clear(A). Borra la variable A.
cos: Funcion. Sintaxis cos(X). Funci on coseno de X.
ctrb: Funcion. Sintaxis ctrb(A,B). Retorna la matriz de controlabilidad del
sistema formado por A y B.
det: Funcion. Sintaxis det(A). Calcula el determinante de la matriz A.
eig: Funcion. Sintaxis eig(A). Calcula los valores y vectores propios de la
matriz A.
eps: Variable. Precisi on relativa de punto otante, 2
52
.
exp: Funcion. Sintaxis exp(X). Funci on exponencial de X.
expm: Funcion. Sintaxis expm(A). Calcula la matriz exponencial de A.
25
26 AP

ENDICE A. FUNCIONES COMUNES


help: Funcion. Sintaxis help function. Entrega ayuda sobre la funci on
function.
i: Variable. Unidad imaginaria.
inv: Funcion. Sintaxis inv(A). Retorna la matriz inversa de A.
Inf: Variable. Innito.
j: Variable. Lo mismo que i, pero para los electricos.
length: Funcion. Sintaxis length(X). Retorna el largo del vector X.
log: Funcion. Sintaxis log(X). Funci on logaritmo natural de X.
logm: Funcion. Sintaxis logm(A). Logaritmo natural matricial de A. Es la
funci on inversa de expm(A).
log10: Funcion. Sintaxis log10(X). Funci on logaritmo ordinario (en base
10) de X.
log2: Funcion. Sintaxis log2(X). Funci on logaritmo en base 2 de X.
lookfor: Funcion. Sintaxis lookfor(string). Retorna las funciones en las
que aparece la palabra string en la ayuda de dicha funci on.
max: Funcion. Sintaxis [Y,I]=max(X). Retorna el elemento m as grande de
X en Y, y el ndice en que se encuentra en I.
mean: Funcion. Sintaxis mean(X). Retorna el valor medio o promedio de los
elementos de X.
min: Funcion. Sintaxis [Y,I]=max(X). Retorna el elemento m as peque no de
X en Y, y el ndice en que se encuentra en I.
NaN: Variable. No es un n umero, usualmente aparece cuando hay una di-
visi on del tipo 0/0.
obsv: Funcion. Sintaxis obsv(A,C). Retorna la matriz de observabilidad del
sistema formado por A y C.
pi: Variable. El n umero m as famoso del mundo.
27
plot: Funcion. Sintaxis plot(X,Y). Gr aca Y versus X.
poly: Funcion. Sintaxis poly(A). Calcula los coecientes del polinomio ca-
racterstico de la matriz A.
roots: Funcion. Sintaxis roots(coef). Calcula los races del polinomio cu-
yos coecientes vienen en coef.
sin: Funcion. Sintaxis sin(X). Funci on seno de X.
size: Funcion. Sintaxis size(A). Retorna las dimensiones de la matriz A.
sum: Funcion. Sintaxis sum(X). Suma los elementos del vector X.
subplot: Funcion. Sintaxis subplot(m,n,i). Genera una separaci on en una
gura, dada por un arreglo de m las y n columnas, y graca en la
posici on i-esima del arreglo.
ss: Funcion. Sintaxis ss(A,B,C,D). Genera un modelo formulado en varia-
bles de estado.
ss2tf: Funcion. Sintaxis [num,den]=tf2ss(A,B,C,D). Convierte una repre-
sentaci on en variables de estado a un modelo dado por la funci on de
transferencia.
ss2zp: Funcion. Sintaxis [Z,P,K]=zp2ss(A,B,C,D). Convierte una repre-
sentaci on en variables de estado a un modelo en formato zpk.
std: Funcion. Sintaxis std(X). Retorna la desviaci on est andar de los ele-
mentos de X.
tan: Funcion. Sintaxis tan(X). Funci on tangente de X.
tf: Funcion. Sintaxis tf(num,den). Crea una funci on de transferencia. num
son los coecientes del numerador, que van listados en potencias decre-
cientes de s o z, den es an alogo.
tf2ss: Funcion. Sintaxis [A,B,C,D]=tf2ss(num,den). Convierte una fun-
ci on de transferencia a una representaci on en variables de estado. num
son los coecientes del numerador, que van listados en potencias decre-
cientes de s o z, den es an alogo.
28 AP

ENDICE A. FUNCIONES COMUNES


tf2zp: Funcion. Sintaxis [Z,P,K]=tf2zp(num,den). Convierte una funci on
de transferencia a una representaci on zpk. num son los coecientes del
numerador, que van listados en potencias decrecientes de s o z, den es
an alogo.
var: Funcion. Sintaxis var(X). Retorna la varianza de los elementos de X.
zpk: Funcion. Sintaxis zpk(Z,P,K). Genera un modelo en el formato ceros-
polos-ganancia (zpk).
zp2ss: Funcion. Sintaxis [A,B,C,D]=zp2ss(Z,P,K). Convierte un modelo
en formato zpk a una representaci on en variables de estado.
zp2tf: Funcion. Sintaxis [num,den]=zp2tf(Z,P,K). Convierte una repre-
sentaci on zpk a una funci on de transferencia.
Bibliografa
[1] The Mathworks, Getting Started with Matlab
29
30 BIBLIOGRAF

IA

Indice alfabetico
\, 2
, 2
, 8
(), 5
*, 2
+, 2
-, 2
., 8
/, 2
:, 4, 5
;, 1
=, 1
[], 1, 7
, 2
acos, 25
ans, 2
arreglos, 8
asin, 25
atan, 25
atan2, 25
char, 8
clear, 10, 12, 25
close, 12
concatenar, 7
cos, 10, 25
ctrb, 25
obsv, 26
det, 10, 25
double, 8
eig, 10, 25
eliminar elementos, 6
eps, 10, 25
exp, 10, 25
expm, 25
eye, 3
figure, 12
funciones, 1
help, 9, 10, 26
hold, 13
i, 10, 26
Inf, 10, 26
inv, 2, 26
j, 10, 26
legend, 14
length, 10, 26
librera, 18
continuos, 19
Derivative, 19
Integrator, 19
Memory, 19
State-Space, 19
Transfer-Fcn, 19
Transport Delay, 19
31
32

INDICE ALFAB

ETICO
Variable Transport Delay,
19
Zero-Pole, 19
discrete, 19
Discrete Filter, 20
Discrete State-Space, 20
Discrete Transfer-Fcn, 19
Discrete Zero-Pole, 20
Discrete-Time Integrator,
20
First-Order Hold, 20
Unit Delay, 20
Zero-Order Hold, 20
functions & tables, 21
Fcn, 21
MATLAB Fcn, 21
Polynomial, 21
S-Function, 21
math, 21
Abs, 21
Dot Product, 22
Gain, 22
Math Function, 22
Matrix Gain, 22
MinMax, 22
Product, 22
Sum, 22
Trigonometric Function, 22
signals & systems, 22
Demux, 22
Mux, 23
Terminator, 23
sinks, 20
Display, 20
Scope, 20
Stop Simulation, 21
To File, 21
To Workspace, 21
XY Graph, 21
sources, 20
Clock, 20
Constant, 20
Signal Generator, 20
Sine Wave, 20
Step, 20
log, 10, 26
log10, 26
log2, 26
logm, 26
lookfor, 10, 26
matrices, 1, 8
max, 26
mean, 9, 26
min, 26
NaN, 10, 26
ones, 3
pi, 10, 26
plot, 10, 12, 27
poly, 10, 27
roots, 10, 27
seleccionar elementos, 5
sin, 10, 27
size, 10, 27
ss, 27
ss2tf, 27
ss2zp, 27
stairs, 14
std, 27
stem, 14
subplot, 14, 27
sum, 10, 27

INDICE ALFAB

ETICO 33
tan, 10, 27
tf, 27
tf2ss, 27
tf2zp, 28
var, 28
variables, 1
variables, 1
vectores, 4
zeros, 3
zp2ss, 28
zp2tf, 28
zpk, 28
Complementos de Procesado de Seal y Comunicaciones
Mster en Sistemas Multimedia
Introduccin a
Matlab y Simulink
Javier Ramrez Prez de Inestrosa
Dpto. Teora de la Seal, Telemtica y Comunicaciones
Universidad de Granada
Email: javierrp@ugr.es
Este tutorial se puede obtener en:
http://www.ugr.es/~javierrp
Introduccin a Matlab y Simulink
Javier Ramrez
2
Qu es Matlab?
MATLAB es un lenguaje de alto nivel para
realizar clculos cientifico-tcnicos.
Integra las herramientas de clculo
necesarias con otras de visualizacin as
como, un entorno de programacin de fcil
uso.
Introduccin a Matlab y Simulink
Javier Ramrez
3
Aplicaciones tpicas
Clculo matemtico
Desarrollo de algoritmos
Adquisicin de datos
Modelado, simulacin y prototipado
Anlisis de datos y visualizacin
Grficos
Desarrollo de aplicaciones e interfaces
grficas de usuario (GUI)
Introduccin a Matlab y Simulink
Javier Ramrez
4
Ms sobre MatLab
MatLab significa MATrix LABoratory
El tipo bsico de datos es el vector que no
requiere ser dimensionado.
Proporciona unos paquetes de extensin
(toolboxes) para aplicaciones especficas
Estos paquetes incluyen libreras de funciones
MatLab (M-files) que extienden las posibilidades
de MatLab para resolver problemas especficos
Introduccin a Matlab y Simulink
Javier Ramrez
5
El entorno de Matlab
Introduccin a Matlab y Simulink
Javier Ramrez
6
Sintaxis
Algunos ejemplos sencillos
Entrada Salida Comentarios
2 + 3
7-5
34*212
1234/5786
2^5
ans = 5
ans = 2
ans = 7208
ans = 0.2173
ans = 32
Los resultados son los esperados.
Ntese que al resultado se le da el nombre ans.
a = sqrt(2) a = 1.4142 Se puede escoger el nombre de la variable.
Introduccin a Matlab y Simulink
Javier Ramrez
7
b = a, pi, 2 + 3i
b = 1.4142
ans = 3.1416
ans = 2.0000 +
3.0000i
Se pueden introducir varios
comandos en una sola lnea. Pi, i,
y j son constantes.
c = sin(pi)
eps
c = 1.2246e-016
ans = 2.2204e-016
"eps" es el limite actual de
precisin. No se puede operar con
nmeros inferiores a eps.
d =
[1 2 3 4 5 6 7 8 9
]
e = [1:9]
f = 1:9
d = 1 2 3 4 5 6 7 8 9
e = 1 2 3 4 5 6 7 8 9
f = 1 2 3 4 5 6 7 8 9
Definicin de vectores. "d", "e",
son "f" vectores. Son iguales. El
operador : se utiliza para formar
vectores; cuenta desde el nmero
inicial al final de uno en uno.
g = 0:2:10
f(3)
f(2:7)
f(:)
g = 0 2 4 6 8 10
ans = 3
ans = 2 3 4 5 6 7
1 2 3 4 5 6 7 8 9
Otros usos de :. Se utiliza para
acceder a parte o la totalidad de
los datos de un vector o matriz.
Introduccin a Matlab y Simulink
Javier Ramrez
8
h = [1 2 3];
h'
(nada)
ans = 1
2
3
Un punto y coma ";" evita que se
visualice la salida.
Una coma simple " ' " calcula la
traspuesta de una matriz, o en el caso
de vectores, intercambia entre vectores
fila y columna.
h * h'
h .* h
h + h
ans = 14
ans = 1 4 9
ans = 2 4 6
Operaciones con vectores. * es la
multiplicacin matricial. Las
dimensiones deben ser las apropiadas.
" .* " es la multiplicacin componente a
componente.
g = [ 1 2 3;
4 5 6; 7 8 9]
g = 1 2 3
4 5 6
7 8 9
Construccin de matrices.
g(2,3)
g(3,:)
g(2,3) = 4
ans = 6
ans = 7 8 9
g = 1 2 3
4 5 4
7 8 9
Accediendo a los elementos de la
matriz.
":" se utiliza para acceder a una fila
completa.
Introduccin a Matlab y Simulink
Javier Ramrez
9
g^2
g .^ 2
ans = 30 36 42
66 81 96
102 126 150
ans = 1 4 9
16 25 36
49 64 81
Multiplica la matriz por ella misma.
Eleva al cuadrado cada elemento de la
matriz.
Entrada Salida Comentarios
Introduccin a Matlab y Simulink
Javier Ramrez
10
Control de la salida
El comando format
format compact
Controla el espaciado de lneas.
format long
Muestra los 15 dgitos que se utilizan en el clculo.
format short
Muestra nicamente cinco dgitos.
; al final del comando.
No visualizar salida:
help format
Ms informacin.
Introduccin a Matlab y Simulink
Javier Ramrez
11
Ms sobre matrices
Funciones incluidas en MatLab
Entrada Salida Comentarios
rand(2)
rand(2,3)
ans = 0.9501 0.6068
0.2311 0.4860
ans = 0.8913 0.4565 0.8214
0.7621 0.0185 0.4447
Genera una matriz de
nmeros aleatorios entre 0 y 1
zeros(2)
ones(2)
ans = 0 0
0 0
ans = 1 1
1 1
Genera una matriz 2x2 de
ceros o unos.
eye(2) ans = 1 0
0 1
Matriz identidad I.
hilb(3) ans = 1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
Matriz de Hilbert 3x3.
Introduccin a Matlab y Simulink
Javier Ramrez
12
Ms sobre matrices
Concatenacin
Generar nuevas matrices a partir de otras
creadas previamente
Por ejemplo:
Sea la matriz a:
>> a = [1 2; 3 4]
a =
1 2
3 4
Introduccin a Matlab y Simulink
Javier Ramrez
13
Entrada Salida
[a, a, a] ans = 1 2 1 2 1 2
3 4 3 4 3 4
[a; a; a] ans = 1 2
3 4
1 2
3 4
1 2
3 4
[a, zeros(2); zeros(2), a'] ans = 1 2 0 0
3 4 0 0
0 0 1 3
0 0 2 4
Ms sobre matrices - concatenacin
Introduccin a Matlab y Simulink
Javier Ramrez
14
Ms sobre matrices
Programacin
Se pueden construir matrices mediante programacin
for i=1:10,
for j=1:10,
t(i,j) = i/j;
end
end
No se producira salida puesto que la nica lnea que
podra generar salida (t(i,j) =i/j;) termina en ;
Sin el ;, Matlab escribira la matriz t 100 veces!!
Introduccin a Matlab y Simulink
Javier Ramrez
15
Operaciones con matrices
+, -, *, y /
Definen operaciones con matrices.
Debemos distinguir:
.*:
Multiplicacin componente a componente.
*
Multiplicacin matricial.
Introduccin a Matlab y Simulink
Javier Ramrez
16
Escalares
Un escalar es un nmero.
Matlab los almacena como matrices 1x1
Todas las operaciones entre escalares y
matrices se realizan componente a
componente salvo:
La potencia (^).
Introduccin a Matlab y Simulink
Javier Ramrez
17
Escalares
Ejemplos
Entrada Salida Comentarios
b=2 b=2
Define b como un escalar.
a + b
ans = 3 4
5 6
La suma se hace componente a
componente.
a * b
ans = 2 4
6 8
Igual que la multiplicacin.
a ^ b
ans = 7 10
15 22
Potencia matricial - a*a
a .^ b
ans = 1 4
9 16
Potencia componente a
componente.
a = 1 2
3 4
Introduccin a Matlab y Simulink
Javier Ramrez
18
Vectores
Un vector es una matriz de una sola fila o
columna
Entrada Salida Comentarios
v = [1 2 3]
u = [3 2 1]
v = 1 2 3
u = 3 2 1
Define 2 vectores.
v * u Error
Las dimensiones no coinciden.
v * u' ans = 10
Al tomar la traspuesta se corrige el
error.
dot(v,u) ans = 10
Producto escalar (idntico al
anterior).
cross(v,u) ans = -4 8 -4
El producto vectorial slo se emplea
con vectores en 3 dimensiones.
Introduccin a Matlab y Simulink
Javier Ramrez
19
Matrices
Entrada Salida Comentarios
k = [16 2 3;
5 11 10;
9 7 6]
k = 16 2 3
5 11 10
9 7 6
Define una
matriz.
trace(k) ans = 33
Traza de una
matriz
rank(k) ans = 3
Rango de una
matriz.
det(k) ans = -136
Determinante de
una matriz
Matlab tiene numerosas funciones
predefinidas (help matfun).
Introduccin a Matlab y Simulink
Javier Ramrez
20
Matrices
Entrada Salida Comentarios
inv(k)
ans = 0.0294 -0.0662 0.0956
-0.4412 -0.5074 1.0662
0.4706 0.6912 -1.2206
Inversa de una
matriz
[vec,val] =
eig(k)
vec = -0.4712 -0.4975 -0.0621
-0.6884 0.8282 -0.6379
-0.5514 0.2581 0.7676
val = 22.4319 0 0
0 11.1136 0
0 0 -0.5455
Vectores propios
y autovalores de
una matriz.
Las columnas de
"vec" contienen
los vectores
propios;
las entradas de
la diagonal de
"val" son los
autovalores.
Introduccin a Matlab y Simulink
Javier Ramrez
21
Variables en el espacio de trabajo
whos
Lista las variables definidas en el entorno.
>> whos
Name Size Bytes Class
a 100x1 800 double array
b 100x100 80000 double array
c 1x1 8 double array
Grand total is 10101 elements using 80808 bytes
clear
Borra variables del entorno.
Introduccin a Matlab y Simulink
Javier Ramrez
22
Resolucin de sistemas de ecuaciones
Una de las principales aplicaciones de las matrices
es la representacin de sistemas de ecuaciones
lineales.
Si a es una matriz de coeficientes, x es un vector
columna que contiene las incgnitas y b los
trminos constantes, la ecuacin
a x =b
representa el correspondiente sistema de
ecuaciones.
Introduccin a Matlab y Simulink
Javier Ramrez
23
Resolviendo ecuaciones
Para resolver el sistema en MatLab
x = a \ b
x es igual a la inversa de a por b
Ejemplo
a = [1 2 3; 4 5 6; 7 8 10]; b = [1 1 1]';
Solucin:
x =
-1
1
0
Introduccin a Matlab y Simulink
Javier Ramrez
24
Salvar y recuperar datos
Los datos de la sesin se pierden al salir de
MatLab.
Para salvar la sesin (entrada y salida)
Diary(session.txt);
Guarda los comandos introducidos en la sesin.
Diary <ON/OFF> ;
Para salvar una o varias matrices
save datos.mat (guarda todas las variables)
save datos.mat x (slo guarda x)
Introduccin a Matlab y Simulink
Javier Ramrez
25
Salvar y recuperar matrices
save sesion
Salva todas las variables en el archivo binario sesion.mat.
save fichero X
Salva slo la variable X
load sesion
Recupera los datos previamente salvados
Si los ficheros se pueden salvar en formato texto (-
ascii). Pueden verse con un editor de textos.
Introduccin a Matlab y Simulink
Javier Ramrez
26
Grficos
El comando bsico es: plot
plot(y);
plot(x,y);
plot(x,y,b+,x,z,gx);
color (b,g) blue,green
Marcador (+,x)
Personalizacin del grfico:
title, xlabel, ylabel, legend, grid.
Introduccin a Matlab y Simulink
Javier Ramrez
27
Ejemplo
Mes = 1:12;
T_Gr = [-2 0 2 4 8 12 14 14 12 8 4 0];
T_Ma = [-4 -2 0 2 6 14 18 18 16 8 2 -2];
plot(Mes, T_Gr, 'bo', Mes, T_Ma, 'rv');
xlabel('Mes');
ylabel('Temperatura (C)');
title('Temperaturas minimas en Granada y
Madrid');
legend('Granada','Madrid');
grid;
Introduccin a Matlab y Simulink
Javier Ramrez
28
Resultado:
Introduccin a Matlab y Simulink
Javier Ramrez
29
subplot
Mes = 1:12
T_Gr = [-2 0 2 4 8 12 14 14 12 8 4 0];
T_Ma = [-4 -2 0 2 6 14 18 18 16 8 2 -2];
subplot(2,1,1);
plot(Mes, T_Gr, 'bo-');
xlabel('Mes');
ylabel('Temperatura (C)');
title('Temperaturas minimas en Granada');
grid;
subplot(2,1,2);
plot(Mes, T_Ma, 'rv-');
xlabel('Mes');
ylabel('Temperatura (C)');
title('Temperaturas minimas en Madrid');
grid;
Introduccin a Matlab y Simulink
Javier Ramrez
30
Resultado
Introduccin a Matlab y Simulink
Javier Ramrez
31
Grficos tridimensionales
[x,y] = meshgrid(-2:.2:2, -2:.2:2);
z = x .* exp(-x.^2 - y.^2);
mesh(z);
Introduccin a Matlab y Simulink
Javier Ramrez
Grficos tridimensionales
Z = X.*exp(-X.^2-Y.^2);
contour3(X,Y,Z,30)
surface(X,Y,Z,'EdgeColor',[.8 .8.8],'FaceColor','none')
grid off
view(-15,25)
colormap cool
32
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
-2
-1
0
1
2
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
Introduccin a Matlab y Simulink
Javier Ramrez
33
Programacin
Ficheros de comandos (scripts)
Secuencias de comandos.
Al invocarlos se ejecutan en el entorno.
Las variables creadas son globales.
Ficheros de funcin
Permiten definir funciones propias.
Variables locales.
La informacin se pasa como parmetros.
Se pueden definir subfunciones.
Introduccin a Matlab y Simulink
Javier Ramrez
34
Un ejemplo de funcin
function y = media (x)
% Valor medio de x.
% Para vectores, media(x) devuelve el valor medio.
% Para matrices, media(x) es un vector fila
% que contiene el valor medio de cada columna.
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
Introduccin a Matlab y Simulink
Javier Ramrez
35
Argumentos de funciones
nargin y nargout
Nmero de argumentos de entrada y salida con
los que se llama a la funcin.
Ejemplo:
function c = testarg1(a,b)
if (nargin == 1)
c = a.^2;
elseif (nargin == 2)
c = a + b;
end
Introduccin a Matlab y Simulink
Javier Ramrez
36
Subfunciones
function [media,mediana] = estadistica(u) % Funcin principal
% ESTADISTICA Calcula la media y la
% mediana utilizando funciones internas.
n = length(u);
media = mean(u,n);
mediana = median(u,n);
function a = mean(v,n) % Subfuncin
% Calcula la media.
a = sum(v)/n;
function m = median(v,n) % Subfuncin
% Calcula la mediana.
w = sort(v);
if rem(n,2) == 1
m = w((n+1)/2);
else
m = (w(n/2)+w(n/2+1))/2;
end
Introduccin a Matlab y Simulink
Javier Ramrez
37
Bifurcaciones
Condicin
Sentencias
false
true
Condicin
true
Bloque 1 Bloque 2
false
Condicin 1
false
Condicin 2
Bloque 1
Bloque 2
true
Bloque 3
false
true
Introduccin a Matlab y Simulink
Javier Ramrez
38
if
Sentencia if
if condicin
sentencias
end
Bifurcacin multiple
if condicin1
bloque1
elseif condicin2
bloque2
elseif condicin3
bloque3
else
bloque4
end
Ejemplo
if rem(a,2) == 0
disp('a is par')
b = a/2;
end
Introduccin a Matlab y Simulink
Javier Ramrez
39
switch
switch expresion
case case1,
bloque1
case {case2, case3, ...}
bloque2
...
otherwise,
bloque3
end
switch valor
case -1
disp('negativo');
case 0
disp('cero');
case 1
disp('positivo');
otherwise
disp('otro');
end
Introduccin a Matlab y Simulink
Javier Ramrez
40
Bucles
Condicin
Sentencias
false
true
Condicin
Sentencias
true
false
Introduccin a Matlab y Simulink
Javier Ramrez
41
for
for i = 1:n
sentencias
end
for i = n:-0.2:1
sentencias
end
for i = 1:m
for j = 1:n
sentencias
end
end
for i = vector
sentencias
end
Introduccin a Matlab y Simulink
Javier Ramrez
42
while {continue, break}
while condicin
sentencias
end
Sentencia continue
Hace que se pase
inmediatamente a la
siguiente iteracin
del bucle for o while
Sentencia break
Hace que termine
la ejecucin
n = 1;
while prod(1:n) < 1e100
n = n + 1;
end
Introduccin a Matlab y Simulink
Javier Ramrez
43
Toolboxes
Toolboxes para DSP y comunicaciones:
Communications Toolbox
Filter Design Toolbox
Image Processing Toolbox
Signal Processing Toolbox
Statistics Toolbox
System Identification Toolbox
Wavelet Toolbox
Introduccin a Matlab y Simulink
Javier Ramrez
44
Procesamiento de seales y comunicaciones
Matlab dispone de unas libreras para
tratamiento digital de seales.
Signal Processing Toolbox
Communications Toolbox
Introduccin a Matlab y Simulink
Javier Ramrez
45
Filtrado de seales
y= filter(b,a,x);
Filtra la secuencia x con el filtro descrito por b y a.
Introduccin a Matlab y Simulink
Javier Ramrez
46
Respuesta en frecuencia
[H,w] = freqz(b,a,N);
Calcula N puntos de la
respuesta en frecuencia del
filtro definido por b y a.
Para el filtro:
y(n)= 0.8y(n-1) + x(n)
freqz(1,[1 -0.8],256);
0 0.2 0.4 0.6 0.8 1
-60
-40
-20
0
Normalized Frequency ( rad/sample)
P
h
a
s
e

(
d
e
g
r
e
e
s
)
0 0.2 0.4 0.6 0.8 1
-10
0
10
20
Normalized Frequency ( rad/sample)
M
a
g
n
i
t
u
d
e

(
d
B
)
Introduccin a Matlab y Simulink
Javier Ramrez
47
Diseo de filtros
B = FIR1(N,Wn);
Filtro FIR paso baja de orden N.
Wn es la frecuencia de corte normalizada (0<Wn<1).
B = FIR1(N,Wn,'high');
Filtro paso alta.
Wn = [W1 W2]; B = FIR1(N,Wn,'bandpass');
Filtro paso banda.
Wn = [W1 W2]; B = FIR1(N,Wn,'stop');
Filtro rechaza banda (notch).
Introduccin a Matlab y Simulink
Javier Ramrez
48
Ejemplo: Filtros FIR paso banda
% Parametros.
N= [8 16 32 64]; % Coeficientes del filtro
Wn = [0.4 0.6]; % Frecuencias de corte.
NFFT= 256; % Respuesta en frecuencia
L = length(N);
H = zeros(NFFT,L);
for i=1:L
B = FIR1(N(i),Wn,'bandpass'); % Diseo.
[H1,W]= freqz(B,1,NFFT); % Respuesta.
H(:,i)= H1;
end
% Visualizacion de la respuesta en frecuencia.
subplot(2,1,1);
plot(W/pi,20*log10(abs(H)));
xlabel('w en unidades de \pi');
ylabel('|H|');
legend('N=8','N=16','N=32','N=64');
grid;
subplot(2,1,2);
plot(W/pi,unwrap(angle(H)));
xlabel('w en unidades de \pi');
ylabel('Fase de H (rads)');
legend('N=8','N=16','N=32','N=64');
grid;
0 0.2 0.4 0.6 0.8 1
-80
-60
-40
-20
0
w en unidades de
|
H
|
N=8
N=16
N=32
N=64
0 0.2 0.4 0.6 0.8 1
-30
-20
-10
0
10
w en unidades de
F
a
s
e

d
e

H

(
r
a
d
s
)
N=8
N=16
N=32
N=64
Introduccin a Matlab y Simulink
Javier Ramrez
49
Diseo y anlisis de filtros (fdatool)
Introduccin a Matlab y Simulink
Javier Ramrez
50
Signal Processing Tool (SPTool)
Introduccin a Matlab y Simulink
Javier Ramrez
51
Signal Processing Tool (SPTool)
Introduccin a Matlab y Simulink
Javier Ramrez
52
Signal Processing Tool (SPTool)
Introduccin a Matlab y Simulink
Javier Ramrez
53
Signal Processing Tool (SPTool)
Introduccin a Matlab y Simulink
Javier Ramrez
54
Diezmado e interpolacin
Y = DECIMATE(X,R)
Ejemplo: Decimacin en un factor 4.
t = 0:.00025:1; % Vector de tiempos
x = sin(2*pi*30*t) + sin(2*pi*60*t);
y = decimate(x,4);
stem(x(1:120)); %Original
axis([0 120 -2 2])
title('Seal original')
figure
stem(y(1:30)); %Decimada
title('Seal decimada')
0 20 40 60 80 100 120
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Seal original
0 5 10 15 20 25 30
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Seal decimada
Introduccin a Matlab y Simulink
Javier Ramrez
55
Diezmado e interpolacin
Y = INTERP(X,R)
t = 0:0.001:1; % Time vector
x = sin(2*pi*30*t) + sin(2*pi*60*t);
y = interp(x,4);
stem(x(1:30));
title('Seal original');
figure
stem(y(1:120));
title('Seal interpolada');
0 5 10 15 20 25 30
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Seal original
0 20 40 60 80 100 120
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Seal interpolada
Introduccin a Matlab y Simulink
Javier Ramrez
56
Densidad de potencia espectral
periodogram
Fs = 1000; t = 0:1/Fs:.3;
% Una seal coseno de 200Hz ms ruido
x = cos(2*pi*t*200)+randn(size(t));
periodogram(x,[],'twosided',512,Fs);
% Se usa la ventana por defecto
pwelch
Fs = 1000; t = 0:1/Fs:.296;
% Una seal coseno de 200 Hz ms ruido
x = cos(2*pi*t*200)+randn(size(t));
pwelch(x,[],[],[],Fs,'twosided');
% Ventana por defecto, solapamiento y NFFT.
Introduccin a Matlab y Simulink
Javier Ramrez
57
Ejemplos
0 100 200 300 400 500 600 700 800 900
-50
-45
-40
-35
-30
-25
-20
-15
-10
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Periodogram PSD Estimate
0 100 200 300 400 500 600 700 800 900
-34
-32
-30
-28
-26
-24
-22
-20
-18
-16
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Welch PSD Estimate
Introduccin a Matlab y Simulink
Javier Ramrez
58
Estimacin espectral paramtrica
Mtodo de covarianza
pcov(X,ORDER,NFFT,Fs)
randn('state',1);
x = randn(100,1);
y = filter(1,[1 1/2 1/3 1/4 1/5],x);
pcov(y,4,[],1000);
Mtodo de covarianza modificado
pmcov(X,ORDER,NFFT,Fs)
randn('state',1);
x = randn(100,1);
y = filter(1,[1 1/2 1/3 1/4 1/5],x);
pmcov(y,4,[],1000);
Introduccin a Matlab y Simulink
Javier Ramrez
59
Ejemplos
0 100 200 300 400 500
-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Covariance PSD Estimate
0 100 200 300 400 500
-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Modified Covariance PSD Estimate
0 100 200 300 400 500
-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Burg PSD Estimate
0 100 200 300 400 500
-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
P
o
w
e
r

S
p
e
c
t
r
a
l

D
e
n
s
i
t
y

(
d
B
/
H
z
)
Yule-Walker PSD Estimate
Introduccin a Matlab y Simulink
Javier Ramrez
60
Modelado. Prediccin lineal
Predictor lineal:
Estima la muestra siguiente utilizando N muestras
anteriores.
[A,E] = LPC(X,N)
Calcula:
Los coeficientes del predictor, A.
La varianza del error, E.
) (n x
Predictor
lineal


N
i
i n x i A n x
1
) ( ) 1 ( ) (

) (

n x
) (

) ( ) ( n x n x n e
Minimizando J= E{|e(n)|
2
}
Introduccin a Matlab y Simulink
Javier Ramrez
61
Comunicaciones
Funciones principales:
Generacin de seales aleatorias
Anlisis de errores
Codificacin de la fuente (escalar, diferencial)
Codificacin para el control de errores
(convolucional, codificacin lineal de bloques)
Modulacin y demodulacin (analgica y digital)
Filtrado mediante filtros especiales
Aritmtica en cuerpos de Galois
Introduccin a Matlab y Simulink
Javier Ramrez
62
Modulacin analgica y digital
Introduccin a Matlab y Simulink
Javier Ramrez
63
Funciones utilizadas frecuentemente
randint
Genera una matriz de nmeros aleatorios enteros
uniformemente distribuidos.
out = randint; % Un solo valor [0,1]
out = randint(N); % Matriz cuadrada NN
out = randint(M,N); % Matriz MN
out = randint(M,N,rg); % Se especifica el rango.
Introduccin a Matlab y Simulink
Javier Ramrez
64
Modulacin/demodulacin digital
Introduccin a Matlab y Simulink
Javier Ramrez
65
Modulacin/demodulacin digital
Mapping+modulacin/demodulacin
dmodce/ddemodce
y = dmodce(x,Fd,Fs,'method/nomap'...);
y = dmodce(x,Fd,Fs,'ask',M);
y = dmodce(x,Fd,Fs,'fsk',M,tone);
y = dmodce(x,Fd,Fs,'msk');
y = dmodce(x,Fd,Fs,'psk',M);
y = dmodce(x,Fd,Fs,'qask',M);
y = dmodce(x,Fd,Fs,'qask/arb',inphase,quadr);
y = dmodce(x,Fd,Fs,'qask/cir',numsig,amp,phs);
y = dmodce(x,Fd,[Fs initphase],...);
Slo mapping
modmap/demodmap
modmap('method',...);
y = modmap(x,Fd,Fs,'ask',M);
y = modmap(x,Fd,Fs,'fsk',M,tone);
y = modmap(x,Fd,Fs,'msk');
y = modmap(x,Fd,Fs,'psk',M);
y = modmap(x,Fd,Fs,'qask',M);
y = modmap(x,Fd,Fs,'qask/arb',inphase,quadr);
y = modmap(x,Fd,Fs,'qask/cir',numsig,amp,phs);
Introduccin a Matlab y Simulink
Javier Ramrez
66
Ejemplo
M = 16; % Modulacin M-aria.
Fd = 1; % Se muestrea el mensaje original
% a una muestra por segundo.
Fs = 3; % La seal modulada se muestrea
% a una frecuencia de 3 muestras por segundo.
x = randint(100,1,M); % Mensaje digital aleatorio.
% Modulacin M-ary PSK
y = dmodce(x,Fd,Fs,'psk',M);
% Adicin de ruido Gaussiano.
ynoisy = y + .04*randn(300,1) + .04*j*randn(300,1);
% Diagrama de dispersin a partir de las observaciones ruidosas.
scatterplot(ynoisy,1,0,'b.');
% Demodulacin para recuperar el mensaje
z = ddemodce(ynoisy,Fd,Fs,'psk',M);
s = symerr(x,z) % Comprobar la tasa de error de los smbolos.
Introduccin a Matlab y Simulink
Javier Ramrez
67
Grfico de dispersin (ruido)
-1 -0.5 0 0.5 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Q
u
a
d
r
a
t
u
r
e
In-Phase
Scatter plot
Introduccin a Matlab y Simulink
Javier Ramrez
68
Anlisis de errores
biterr
Calcula el nmero de bits errneos y la tasa de error.
[number,ratio] = biterr(x,y);
[number,ratio] = biterr(x,y,k);
[number,ratio] = biterr(...,flg);
[number,ratio,individual] = biterr(...)
Introduccin a Matlab y Simulink
Javier Ramrez
69
Ejemplo
x = randint(100,100,4); % Seal original
% Introduccin de errores.
% Los errores pueden ser 1, 2, o 3 (no 0).
% Colocacin de los errores
errorplace = (rand(100,100) > .9);
errorvalue = randint(100,100,[1,3]); % Valor error
errors = errorplace.*errorvalue;
y = rem(x+errors,4); % Seal y error sumadas mod 4
% Anlisis de errores
format short
[num_bit,ratio_bit] = biterr(x,y,2)
[num_sym,ratio_sym] = symerr(x,y)
Introduccin a Matlab y Simulink
Javier Ramrez
70
Ejercicio:
Estudiar mediante Matlab/Simulink el efecto
del ruido en los sistemas de comunicacin
digital.
Construir el diagrama de bloques de simulacin.
Simular el sistema:
Diferentes esquemas de modulacin (ASK, PSK, FSK,
MSK).
Obtener las curvas de error en funcin de la SNR.
Adicionalmente, considrese PSK con M= 4 y 8
smbolos y comprese las curvas de error frente a la
SNR.
Introduccin a Matlab y Simulink
Javier Ramrez
71
Introduccin a Simulink
Simulink es una herramienta para modelado,
simulacin y anlisis de sistemas dinmicos.
Soporta tanto sistemas lineales como no
lineales:
en tiempo continuo,
muestreados,
hbridos y
sistemas multifrecuencia (contienen sistemas
muestreados a diferente frecuencia).
Introduccin a Matlab y Simulink
Javier Ramrez
72
Entorno de trabajo
Introduccin a Matlab y Simulink
Javier Ramrez
73
Construccin del diagrama de bloques
Introduccin a Matlab y Simulink
Javier Ramrez
74
Resultado de la simulacin
0 500 1000 1500 2000 2500 3000
-1
-0.5
0
0.5
1
0 0.5 1 1.5 2 2.5 3
x 10
4
-1
-0.5
0
0.5
1
Introduccin a Matlab y Simulink
Javier Ramrez
75
Ejemplo
Introduccin a Matlab y Simulink
Javier Ramrez
76
Simulacin
Introduccin a Matlab y Simulink
Javier Ramrez
77
Anlisis/sntesis LPC de la seal de voz
Introduccin a Matlab y Simulink
Javier Ramrez
78
Estimacin espectral
Introduccin a Matlab y Simulink
Javier Ramrez
79
Resultado de la simulacin
Introduccin a Matlab y Simulink
Javier Ramrez
80
Sistema de comunicacin digital
8-PSK (Gray)
Introduccin a Matlab y Simulink
Javier Ramrez
Procesado de imgenes
Lectura de imgenes:
A = imread(filename, fmt)
Lee una imagen en escala de grises o en color
fmt especifica el formato de imagen (BMP, JPEG, PNG, TIFF, etc)
[X, map] = imread(...)
map Mapa de color
Visualizacin de la imagen imshow
imshow(I)
imshow(I,[low high])
imshow(RGB)
imshow(BW)
imshow(X,map)
81
Introduccin a Matlab y Simulink
Javier Ramrez
Lectura de imgenes
A= imread('texto.tif');
imshow(A);
size(A); size(A);
500500
[B map]=
imread('flor.tif');
imshow(B); size(A);
5005003
82
Introduccin a Matlab y Simulink
Javier Ramrez
Transformaciones espaciales
Modificacin del tamao
B = imresize(A, scale)
B = imresize(A, [mrows ncols])
Rotar una imagen
B = imrotate(A,angle)
B = imrotate(A,angle,method)
method -> Interpolacin {nearest}, bilinear, bicubic
B = imrotate(A,angle,method,bbox)
bbox -> Bounding box {crop} loose
Recortar una imagen
B= imcrop(A); Herramienta interactiva
B= imcrop(A,rect);
83
Introduccin a Matlab y Simulink
Javier Ramrez
Filtrado 2D
B= imfilter(A,h) N= 5;
h = ones(N,N) / (N*N);
Af = imfilter(A,h);
84
Original Filtrada N= 5 Filtrada N= 20
Introduccin a Matlab y Simulink
Javier Ramrez
Respuesta en frecuencia de filtros 2D
[H, f1, f2] = freqz2(h, n1, n2)
[H, f1, f2] = freqz2(h, [n2 n1])
[H, f1, f2] = freqz2(h)
[H, f1, f2] = freqz2(h, f1, f2)
85
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
0.2
0.4
0.6
0.8
1
F
x
F
y
M
a
g
n
i
t
u
d
e
Filtro 55 Filtro 2020
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
0.2
0.4
0.6
0.8
1
F
x
F
y
M
a
g
n
i
t
u
d
e
Introduccin a Matlab y Simulink
Javier Ramrez
Diseo de filtros 2D
h = fwind1(Hd, win)
h = fwind1(Hd, win1, win2)
h = fwind1(f1, f2, Hd,...)
Ejemplo:
[f1,f2] = freqspace(21,'meshgrid');
Hd = ones(21);
r = sqrt(f1.^2 + f2.^2);
Hd((r<0.1)|(r>0.5)) = 0;
colormap(jet(64));
mesh(f1,f2,Hd);
h = fwind1(Hd,hamming(21));
freqz2(h);
86
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
0.2
0.4
0.6
0.8
1
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
0.5
1
1.5
F
x
F
y
M
a
g
n
i
t
u
d
e
Introduccin a Matlab y Simulink
Javier Ramrez
Ajuste del nivel de intensidad
87
0 100 200
0
2000
4000
6000
0 100 200
0
5000
10000
15000
0 100 200
0
1000
2000
3000
4000
Introduccin a Matlab y Simulink
Javier Ramrez
Ecualizacin del histograma
88
0 100 200
0
50
100
150
200
250
0 100 200
0
50
100
150
200
250
0 100 200
0
50
100
150
200
250
Introduccin a Matlab y Simulink
Javier Ramrez
Ecualizacin del histograma
89
0 50 100 150 200 250
0
2000
4000
6000
0 50 100 150 200
0
5000
10000
15000
0 50 100 150 200 250
0
2000
4000
0 50 100 150 200 250
0
100
200
0 50 100 150 200 250
0
100
200
0 50 100 150 200 250
0
100
200
0 50 100 150 200 250
0
1000
2000
0 50 100 150 200 250
0
5000
10000
15000
0 50 100 150 200 250
0
1000
2000
Introduccin a Matlab y Simulink
Javier Ramrez
Filtrado de ruido (Filtro de Wiener)
J = wiener2(I, [m n], noise)
[J, noise] = wiener2(I, [m n])
Wiener2 estima la media y la varianza entorno a cada pixel
A continuacin crea un filtro pixel a pixel basado en estas estimaciones
v
2
es la varianza del ruido
90
Introduccin a Matlab y Simulink
Javier Ramrez
Matlab para reconocimiento de patrones
Asignacin de una clase a un vector de
caractersticas x del objeto a clasificar:
Ejemplo: Fisher Iris dataset:
http://en.wikipedia.org/wiki/Iris_flower_data_set
503 = 150 muestras de flores Iris de tres especies
Iris setosa, Iris virginica, Iris versicolor
4 caractersticas de cada ejemplo:
Longitud y anchura de los ptalos y spalos
91
Introduccin a Matlab y Simulink
Javier Ramrez
Matlab para reconocimiento de patrones
Anlisis discriminante:
class = classify(sample,training,group)
class = classify(sample,training,group,type)
class = classify(sample,training,group,type,prior)
knn:
Class = knnclassify(Sample, Training, Group)
Class = knnclassify(Sample, Training, Group, k)
Class = knnclassify(Sample, Training, Group, k, distance)
Class = knnclassify(Sample, Training, Group, k, distance, rule)
Mquinas de vectores de soporte:
Group = svmclassify(SVMStruct, Sample)
Group = svmclassify(SVMStruct, Sample, 'Showplot,ShowplotValue)
SVMStruct = svmtrain(Training, Group)
SVMStruct =svmtrain(..., 'Kernel_Function', Kernel_FunctionValue)
92
Introduccin a Matlab y Simulink
Javier Ramrez
Anlisis discriminante: Ejemplo
load fisheriris
SL = meas(51:end,1);
SW = meas(51:end,2);
group = species(51:end);
h1 = gscatter(SL,SW,group,'rb','v^',[],'off');
set(h1,'LineWidth',2)
legend('Fisher versicolor','Fisher virginica','Location','NW')
93
4.5 5 5.5 6 6.5 7 7.5 8
2
2.2
2.4
2.6
2.8
3
3.2
3.4
3.6
3.8
SL
S
W


Fisher versicolor
Fisher virginica
Introduccin a Matlab y Simulink
Javier Ramrez
Anlisis discriminante: Ejemplo
Clasificamos una
matriz de datos 2-D:
[X,Y] =
meshgrid(linspace(4.5,8)
,linspace(2,4));
X = X(:); Y = Y(:);
[C,err,P,logp,coeff] =
classify([X Y],[SL SW],
group,'quadratic');
Visualizar la
clasificacin:
hold on;
gscatter(X,Y,C,'rb','.',1,'off');
K = coeff(1,2).const;
L = coeff(1,2).linear;
Q = coeff(1,2).quadratic;
f = sprintf('0 =
%g+%g*x+%g*y+%g*x^2+%g*x.*y+%g*y.^2',
...
K,L,Q(1,1),Q(1,2)+Q(2,1),Q(2,2));
h2 = ezplot(f,[4.5 8 2 4]);
set(h2,'Color','m','LineWidth',2)
axis([4.5 8 2 4])
xlabel('Sepal Length')
ylabel('Sepal Width')
title('{\bf Classification with Fisher
Training Data}')
94
Introduccin a Matlab y Simulink
Javier Ramrez
Anlisis discriminante: Ejemplo
95
4.5 5 5.5 6 6.5 7 7.5 8
2
2.2
2.4
2.6
2.8
3
3.2
3.4
3.6
3.8
4
SL
S
W
Classification with Fisher Training Data


Fisher versicolor
Fisher virginica
Introduccin a Matlab y Simulink
Javier Ramrez
Seleccin de caractersticas
[IDX, Z]= rankfeatures(X, Group)
[IDX, Z]= rankfeatures(X, Group,'Criterion', CriterionValue)
load fisheriris;
X= meas(1:100,:);
Group= species(1:100);
[IDX, Z] = rankfeatures(X',Group);
% Selecionamos las variables ms discriminativas
data= X(:,[IDX(1) IDX(2)]);
% Seleccin aleatoria de subconjuntos de entrenamiento y test
[train, test] = crossvalind('holdOut',Group);
cp = classperf(Group);
% Entrenamiento de una mquina de vectores de soporte
svmStruct = svmtrain(data(train,:),Group(train),'showplot',true);
% Aadimos ttulo.
title(sprintf('Kernel Function: %s',...
func2str(svmStruct.KernelFunction)),...
'interpreter','none');
% Clasificacin del conjunto de test
classes = svmclassify(svmStruct,data(test,:),'showplot',true);
% Evaluacin a partir de la tasa de correctas.
classperf(cp,classes,test);
cp.CorrectRate
96
Introduccin a Matlab y Simulink
Javier Ramrez
Seleccin de caractersticas
97
data= X(:,[IDX(1) IDX(2)]); data= X(:,[IDX(3) IDX(4)]);
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
Kernel Function: linear_kernel


setosa (training)
setosa (classified)
versicolor (training)
versicolor (classified)
Support Vectors
4 4.5 5 5.5 6 6.5 7
2
2.5
3
3.5
4
4.5
Kernel Function: linear_kernel


setosa (training)
setosa (classified)
versicolor (training)
versicolor (classified)
Support Vectors
Introduccin a Matlab y Simulink
Javier Ramrez
98
Estas transparencias se pueden obtener en:
http://www.ugr.es/~javierrp
Para cualquier consulta:
Javier Ramrez (javierrp@ugr.es)
Dpto. Teora de la Seal, Telemtica y Comunicaciones
Despacho 22
ETSII
Gijn - Octubre 2006 1
Simulacin de sistemas de control continuos con
MATLAB y SIMULINK
Ayuda
BibIioteca de SIMULINK
SeIeccin de carpetas
de trabajo
VisuaIizacin de
variabIes deI espacio de
trabajo
Crear, abrir y guardar archivos
de funciones o de variabIes deI
espacio de trabajo
Lnea de comandos
Gijn - Octubre 2006 2
Comandos bsicos de MATLAB para las prcticas de Regulacin
1. Comandos bsicos. Variables, vectores y matrices.
Matlab es un programa de calculo matematico muy Ilexible y potente, con posibilidades
graIicas para la presentacion de los datos, por lo que se utiliza en muchos campos de la ciencia y la
investigacion como herramienta de calculo matematico. Los comandos y Iunciones que se describen a
continuacion Iuncionan generalmente en todas las versiones de MATLAB, aunque algunos solo lo
hacen en las versiones mas modernas y otros han quedado obsoletos. En este ultimo caso las versiones
mas modernas disponen de otros comandos o Iunciones que los sustituyen. Algunos de ellos estan
disponibles bajo botones o menus en las nuevas versiones.
NOTA: En este documento se recogen unos pocos ejemplos de entre las inmensas posibilidades que
oIrece Matlab. Se deben consultar las ayudas de Matlab u otros documentos si se desea un
conocimiento mas amplio. Se deben utilizar y modiIicar los ejemplos aqui incluidos para
adquirir las destrezas basicas que permitiran utilizar el programa como herramienta para la
asignatura. Tengase en cuenta que algunos ejemplos estan encadenados, es decir, es necesario
ejecutar determinados comandos anteriores para que los siguientes Iuncionen correctamente.
Realizar operaciones algebraicas es
muy sencillo,
>> a 2
>> b 3
>> suma a + b
suma
5
o simplemente:
>> 2 + 3
ans
5
La variable 'ans contiene el resultado de la ultima operacion realizada y puede consultarse en
cualquier momento asi como el resto de las variables que se vayan creando:
>> suma
suma
5
>> ans
ans
5
Si se quiere ver el nombre de todas las variables que se estan utilizando se pueden usar los
comandos who y whos. Con save y load se pueden guardar las variables que se estan usando y
recuperarlas posteriormente. El comando help proporciona ayuda y combinado con otro comando,
ayuda sobre ese comando en concreto (p.ej. help who). Para abandonar el programa se pueden usar los
comandos quit o exit. (En versiones bajo Windows se dispone de los correspondientes menus y
botones para estas Iunciones)
Matlab maneja matrices, y como casos particulares de las mismas, vectores Iila y vectores
columna:
>> matriz 1 2 3
4 5 6
7 8 9]
>> matriz 1,2,3;4,5,6;7,8,9]
>> vectorfila 1 2 3]
>> vectorfila 1,2,3]
>> vectorcolumna 1,2,3]' (' transposicion)
>> vectorcolumna 1;2;3]
2. Valores complejos.
>> c 2 + 3`j -> se utilizan 'j o 'i como valores imaginarios
>> modulo abs(c) -> se obtiene el modulo
Gijn - Octubre 2006 3
>> argumento angle(c) -> el valor del argumento esta en radianes
>> grados argumento ` 180 / pi -> pero se convierte Iacilmente a grados
NOTA: obviamente "i", "j", "ans", "pi", "help", "sin", etc. son nombres que ya estan deIinidos para
variables, constantes, comandos o Iunciones de Matlab y no se deben usar para nombrar
nuevas Iunciones o variables del usuario. Matlab distingue entre mayusculas y minusculas!
3. Polinomios.
Los polinomios se introducen en Iorma de vectores Iila que contienen los coeIicientes del
polinomio.
>> p 1 -6 0 -27] -~ s
3
-6s
2
-27
>> raices roots(p) -~ da las raices del polinomio en un vector columna
>> polinomio poly(raices) -~ se vuelve a obtener el polinomio original
Se pueden multiplicar y dividir polinomios: c(s)a(s)*b(s); c(s)/a(s) q(s)r(s)/a(s)
>> a 1 2 3] -~ s
2
2s3
>> b 4 5 6] -~ 4s
2
5s6
>> c conv(a,b)
c
4 13 28 27 18 -~ producto de los dos polinomios 4s
4
13s
3
28s
2
27s18
>> q,r] deconv(c,a) -~ division de c(s) por a(s)
q
4 5 6 -~ q(s) es el cociente de la division
r
0 0 0 0 0 -~ r(s) es el resto de la division
Como se puede observar, a veces el resultado de una Iuncion, pueden ser varias variables y sus
argumentos tambien pueden ser varios y de diIerentes tipos. Se debe consultar mediante el comando
help (p.ej. help deconv) cuales son los argumentos que admite cada Iuncion y que variables va a
devolver como resultado.
4. Representaciones grficas 2D y 3D.
Representacion de la Iuncion seno:
>> t 0:1:100] -~ vector tiempo
>> x t -~ eje x
>> y sin(0.1`t) -~ eje y
>> plot(x,y)
Representacion de dos Iunciones:
>> t 0:1:100]
>> x t
>> y sin(0.1`t) ; cos(0.1`t)]
>> plot(x,y)
Representacion en 3D:
>> t 0:1:100] -~ vector tiempo
>> x t -~ eje x
>> y sin(0.1`t) -~ eje y
>> z cos(0.2`t) -~ eje z
>> plot3(x,y,z)
5. Funciones de Transferencia.
Para trabajar con Iunciones de transIerencia, se introducen por separado dos vectores, uno con
los coeIicientes del polinomio del numerador y otro con los del denominador:
Gijn - Octubre 2006 4
>> num 1 2] -~ s2
>> den 1 3 5] -~ s
2
3s5
>> printsys(num,den) -~ muestra la Iuncion de transIerencia
(s+2)/(s^2+3s+5)
>> pzmap(num,den) -~ muestra el mapa de ceros y polos del sistema graIicamente
>> p,z] pzmap(num,den) -~ en los vectores columna 'p y 'z se tendran los polos y
ceros respectivamente del sistema
>> pzmap(p,z) -~ muestra el mapa de ceros y polos del sistema a partir de estos
Para un sistema de segundo orden:
>> wn 30 -~ valor para
n
>> xi 0.3 -~ valor para
>> num2,den2] ord2(wn,xi) -~ Iuncion de transIerencia de segundo orden con
n
y
>> printsys(num2,den2) -~ la Iuncion de transIerencia de segundo orden
1/(s^2+18s+900)
En versiones de MATLAB superiores a
la 5.0 se puede trabajar con el objeto especial
Funcion de TransIerencia, que permite operar
comodamente con ellas .
>> g tf(1 2], 1 3 5]) -~ Iuncion 'tI
(s+2)/(s^2+3s+5)
. o incluso representarlas y operar con ellas
en Iorma simbolica:
~~ s tf(s) -~ crea el objeto 's
>> g (s+2)/(s^2+3`s+5)
(s+2)/(s^2+3s+5)
>> g2 g`g
Estos objetos Funcion de TransIerencia se pueden sumar, multiplicar, etc. y aplicarles las
Iunciones que aqui se describen, validas tambien para un par de polinomios numerador/denominador:
>> num 1 2] -~ s2
>> den 1 3 5] -~ s
2
3s5
>> pzmap(num,den)
Equivale a:
>> g tf(1 2], 1 3 5]) -~g(s+2)/(s^2+3s+5)
>> pzmap(g)
Y para pasar de num/den` a g` y de g` a num/den`:
>> g tf(num,den)
>> p,z] pzmap(g)
>> num dcgain(g`tf(poly(p),poly(z)))`poly(z)
>> den poly(p)
O mas directamente:
>> g tf(num,den)
>> num deal(g.num:])
>> den deal(g.den:])
>> m feedback(g,1,-1) -~ proporciona la Iuncion de transIerencia en bucle cerrado con
realimentacion unitaria '1 y negativa "-1"
6. Respuesta en el tiempo.
>> impulse(g) -~ representa graIicamente la respuesta en el tiempo del sistema
ante una entrada impulso
>> step(g) -~ representa graIicamente la respuesta en el tiempo del sistema
ante una entrada escalon unitario. Un clic con el raton sobre
las graIicas proporciona inIormacion sobre sus valores
>> y,x,t] step(g) -~ almacena en "y" la respuesta del sistema, en "x" la evolucion
de las variables de estado y en "t" el vector de tiempo
>> maximo max(y) -~ da el valor maximo que alcanza la respuesta del sistema
Gijn - Octubre 2006 5
7. Respuesta en frecuencia.
>> bode(g) -~ dibuja el diagrama de bode del sistema
>> mag,fase] bode(g,3) -~ da los valores de magnitud (no esta en decibelios) y de Iase
(en grados) del sistema para 3
>> mag,fase,w] bode(g) -~ devuelve los valores de magnitud, Iase y pulsacion, en tres
vectores, para utilizarlos posteriormente con otras Iunciones
como por ejemplo:
>> maximo max(mag) -~ valor en el pico de resonancia de la relacion de amplitudes
>> resonancia 20`log10(maximo) -~ valor en el pico de resonancia expresado en decibelios
>> Gm,Pm,wg,wp] margin(g) -~ Resultados extraos ???
Gm Indica que el margen de Iase y de ganancia son inIinito,
Pm y que no se puede determinar un valor de para ellos
wg NaN (NaN Not a Number)
wp NaN
>> g1 10/((s+1)`(s+2)`(s+3)) -~ se crea una nueva FdT para probar la Iuncion 'margin
>> Gm1,Pm1,wg1,wp1] margin(g1)
Gm1 -~ margen de ganancia (no esta en decibelios)
Pm1 -~ margen de Iase en grados
wg1 -~ pulsacion (Irecuencia en rad/s) para el margen de ganancia
wp1 -~ pulsacion (Irecuencia en rad/s) para el margen de Iase
>> margin(g1) -~ representa graIicamente el margen de ganancia y de Iase
>> nichols(g) -~ diagrama magnitud-Iase
>> ngrid(new) -~ superpone el abaco de Nichols al diagrama anterior
>> shg -~ muestra la pantalla graIica
>> clf -~ limpia la pantalla graIica (en versiones antiguas "clg")
>> hold on -~ bloquea la pantalla graIica para superponer un nuevo trazado
>> hold off -~ desbloquea la pantalla graIica para realizar nuevos trazados
>> nyquist(g) -~ diagrama de Nyquist del sistema. El tramo con valores de
~0 es el 'Diagrama Polar del sistema
>> ltiview(g) -~ permite representar conjuntamente las graIicas ya descritas
para varios sistemas simultaneamente
8. Lugar de las races.
>> rlocus(g) -~ lugar de las raices del sistema
>> polos rlocus(num,den,3) -~ polos del sistema en bucle cerrado para "k3"
>> hold on -~ Iija la pantalla graIica para seguir trabajando sobre ella
>> rlocus(num,dem,3 4]) -~ dibuja la posicion de las raices (polos) del sistema en bucle
cerrado para los valores de "k3" y "k4"
>> rltool -~ herramienta para el diseo de reguladores basado en el L.R.
>> sisotool -~ herramienta de diseo mas generica que 'rltool
NOTA: Las unidades de los resultados (grados, radianes, decibelios, etc.) pueden variar segun las
versiones de Matlab.
Gijn - Octubre 2006 6
Elementos bsicos de SIMULINK
1. La biblioteca de Simulink.
Simulink proporciona un entorno graIico al usuario que Iacilita enormemente el analisis,
diseo y simulacion de sistemas (de control, electronicos, etc.), al incluir una serie de rutinas que
resuelven los calculos matematicos de Iondo, junto con una sencilla interIaz para su uso.
Proporciona un entorno de usuario graIico que permite dibujar los sistemas como diagramas de
bloques tal y como se haria sobre un papel.
El conjunto de componentes incluidos junto al programa Simulink, incluye bibliotecas de
Iuentes de seal, dispositivos de presentacion de datos, sistemas lineales y no lineales, conectores y
Iunciones matematicas. En caso de que sea necesario, se pueden crear nuevos bloques a medida por
el usuario.
El programa Simulink se inicia desde el boton "Simulink Library Browser" (Biblioteca de
Simulink, ver imagen de portada) de la ventana de comandos de Matlab, o desde la linea de
comandos mediante la orden:
~~ simulink
Una vez iniciado el programa el entorno de trabajo queda dividido en tres partes.
La ventana de comandos de Matlab (Matlab command window): desde la que se puede ejecutar
cualquier comando del mismo, dar valores a variables y controlar la ejecucion de las
simulaciones.
Conjunto bsico de
bIoques de funcin de
SimuIink
Crear un nuevo modeIo
Busqueda de BIoques
Abrir un modeIo
La ventana de la biblioteca de Simulink (Simulink Librarv Browser): desde la que se seleccionan
los componentes que se van a insertaren el sistema a simular.
La o las ventanas de los modelos: en las que se dibujan los modelos y se realizan y controlan las
simulaciones. Estas ventanas aparecen cuando se abre un modelo ya existente o se crea una
ventana en blanco para dibujar un nuevo modelo. Para ello, se pueden utilizar los botones de la
ventana de la libreria de Simulink.
Gijn - Octubre 2006 7
Todos los componentes basicos de Simulink, se pueden encontrar en su biblioteca de
componentes. A continuacion se describen los componentes basicos de la biblioteca de Simulink:
Continuous: Bloques que pueden ser representados como
una funcin continua en el tiempo.
Derivative: La salida del bloque se corresponde con la
derivada de la entrada.
Integrator: La salida del bloque se corresponde con la
integral de la entrada. Los parametros del bloque permiten
controlar el valor inicial de la salida, asi como la existencia
de limites superiores e inIeriores en la salida.
Transfer Fcn: Permite expresar una Iuncion de transIerencia
mediante su expresion en la variable compleja s. Sus
parametros son los polinomios del numerador y del
denominador de la Iuncion, expresados como vectores Iila.
Transport Delay: La salida del bloque se corresponde con la
entrada al mismo retrasada una cantidad de tiempo, que se
Iija como parametro en el bloque.
Zero-Pole: Funcion de transIerencia expresada en Iuncion de
la ganancia en regimen permanente, y la situacion de los
polos y ceros del sistema.
Math: Bloques que realizan operaciones matemticas
sobre sus entradas.
Abs: Calcula el valor absoluto de su entrada.
Gain: Aplica una ganancia constante a la entrada.
Math Function: Este bloque incluye la mayor parte de las
Iunciones matematicas tipicas, con la excepcion de las
Iunciones trigonometricas.
Product: Calcula el producto escalar de sus entradas. Un
parametro del bloque permite regular el numero de entradas
del mismo.
Sign: Calcula el signo de la entrada. 1 indica positivo, -1
negativo, y 0 un valor nulo.
Sum: Calcula la suma de todas sus entradas. Un parametro
permite indicar el numero de entradas, y si estas deben ser
invertidas antes de la suma. Ejemplo: un valor para el
parametro "-" indicaria que el bloque tiene 4 entradas, y
que la tercera de ellas debe ser invertida antes de sumarla.
Trigonometric Function: En este bloque se incluyen todas
las Iunciones trigonometricas tipicas.
Nonlinear: Bloques no lineales.
Dead Zone: Incluye una :ona muerta en el sistema, centrada
en torno a cero. El sistema no responde ante estos valores. La
magnitud de la zona muerta puede ser modiIicada, y echa
asimetrica por medio de los parametros del sistema.
Relay: La salida pasa al estado on1 cuando la entrada
supera un valor umbral, y a estado oII0 cuando cae por
debajo de un umbral distinto. El estado inicial es oII.
Saturation: La seal de salida no sobrepasa un valor umbral,
conIigurable con los parametros del bloque.
Switch: Una entrada del sistema permite escoger cual de las
otras dos entradas se presenta en la salida.
Signals&Systems: Manejo de sistemas y seales.
Subsystem: Permite la realizacion de sistemas jerarquicos. Al
abrir el subsistema, nos permite incluir en su interior, nuevos
bloques constructivos, e incluso anidar nuevos subsistemas.
In1: Por deIecto un subsistema no contiene entradas. Por
cada entrada que se desee aadir se le debe incluir uno de
estos bloques.
Out1: Por deIecto un subsistema no contiene salidas. Por
cada entrada que se desee aadir se le debe incluir uno de
estos bloques.
Mux: Permite la inclusion de un conjunto de seales en una
unica linea de transmision (que transmite datos vectoriales),
lo que Iacilita la representacion en el dibujo. Parametros:
numero de entradas. Admite tanto entradas escalares como
vectoriales.
Demux: Permite la descomposicion de los datos puesto en
Iorma vectorial en una linea mediante un multiplexador.
Parametros: numero de salidas.
Data Store Memory: DeIine una variable del entorno de
trabajo que se va a usar como lugar de almacenamiento de
datos util para evitar tener que hacer conexiones complejas
que compliquen el diagrama de bloque que se esta usando.
Data Store Read: Lee el valor actual de una variable de
almacenamiento, que debe estar previamente deIinida
mediante un bloque Data Store Memory
Data Store Write: Cambia el valor actual de una variable de
almacenamiento, que debe estar previamente deIinida
mediante un bloque Data Store Memory
Sinks: Sumideros de seales.
Display: Representa numericamente el valor de una variable.
Scope: Representa graIicamente la evolucion en el tiempo de
una variable.
To Workspace: Guarda el valor de la seal indicada en una
variable del entorno de trabajo del Matlab. Se puede escoger
el nombre de la misma, y limitar su tamao.
To File: Guarda en un Iichero de tipo ".mat" los datos de la
seal de entrada al bloque.
Stop Simulation: Detiene la simulacion si el valor de la
entrada es distinto de 0.
Sources: Fuentes de seales.
Chirp Signal. Genera una seal senoidal, modulada en
Irecuencia, entre un valor inicial y un valor Iinal.
Clock: Tiempo que se lleva de simulacion.
Constant: Proporciona una seal de valor constante.
From Workspace: Proporciona una secuencia de datos
tomadas del entorno de trabajo del Matlab. La variable
elegida debe contener una matriz indicando los valores de la
seal, y los instantes en los que la seal toma estos valores.
From File: Proporciona datos tomados de un Iichero ".mat",
en el que debe estar el valor de la variable, junto a los
instantes de tiempo en que toma cada valor.
Pulse Generator: Genera una onda cuadrada, de la que se
puede controlar la amplitud, el periodo y el tiempo de dutv
(relacion entre el tiempo que la onda toma su valor maximo y
el tiempo que toma el valor minimo).
Ramp: Genera una seal de tipo Rampa.
Random Number: Genera numeros aleatorios distribuidos
segun una Iuncion normal.
Signal Generator: Simula un generador de seales
electronico, permitiendo generar ondas dientes de sierra,
ondas cuadradas y senoidales.
Sine Wave: Generador de ondas senoidales.
Step: Genera una seal de tipo escalon.
Uniform Random Number: Genera numeros aleatorios
distribuidos segun una Iuncion uniIorme.
Gijn - Octubre 2006 8
2. Creacin de un modelo.
Para simular un sistema, se deben insertar en las ventanas de simulacion los distintos
componentes con los que se va a construir el modelo. Se pueden seguir los siguientes pasos:
Descripcin deI BIoque
1
2
3
4
5
Representacin grfica
deI BIoque
Crear un modeIo nuevo
Buscar un bIoque
Situar un bIoque
Conectar
bIoques
Crear una
bifurcacin
6
7
1) Crear un nuevo modelo: Para abrir una nueva ventana de simulacion se debe pulsar el
boton "nuevo modelo".
2) Buscar un bloque: Se puede buscar un bloque expandiendo el arbol de la biblioteca o
buscandolo directamente por su nombre en la ventana de busqueda. En este caso, si hay
mas de un bloque que pueda corresponder a ese nombre, iran apareciendo a medida que
se pulse la tecla "enter" (retorno).
3) Situar un bloque: Para situar un bloque, se mantiene pulsado el boton izquierdo del
raton sobre el icono en Iorma de rombo que hay junto al nombre del bloque y se arrastra
hacia la posicion deseada en la ventana de simulacion.
4) Conectar bloques: En cada bloque, las puntos de salida aparecen indicados mediante
una Ilecha saliente del bloque ",~", mientras que los puertos de entrada a cada bloque se
indican con una Ilecha entrante al mismo "~,". Se conecta la entrada de un bloque a la
salida de otro, manteniendo pulsado el boton izquierdo del raton mientras se arrastra
desde el simbolo de entrada de uno de los bloques hasta el de salida de otro o viceversa.
5) Crear una bifurcacin: Si se desea llevar la salida de un bloque a la entrada de mas de
uno se necesita crear una biIurcacion en la conexion. Para hacerlo, se arrastra con el
raton desde la entrada del nuevo bloque a conectar hasta la linea de la conexion que se va
a biIurcar.
6) Modificar los bloques: Se pueden rotar o aplicar simetrias a los bloques usados, segun
convenga la colocacion de entradas/salidas para el esquema que se este realizando,
pulsando sobre el el boton derecho del raton y utilizando los menus desplegables o
mediante la opcion "Formar" del menu principal ("Format\Flip Block", "Format\Rotate
Block", etc.). Tambien mediante los menus o haciendo doble clic sobre el bloque, se
pueden modiIicar sus parametros.
7) Insercin de textos: Se puede incluir un texto aclaratorio o inIormativo en cualquier
parte de la ventana del modelo, haciendo doble clic en una zona libre y escribiendo
directamente el texto.
Gijn - Octubre 2006 9
Tambien se pueden cambiar los nombres y posiciones de los bloques que se empleen para la
simulacion antes o despues de conectarlos. Asimismo los enlaces de las conexiones pueden
moverse o modiIicarse. Para eliminar cualquier elemento basta con seleccionarlo con un clic y
eliminarlo con la tecla "sup" o "delete", o utilizar alguno de los menus.
Conviene guardar ("File\Save as") periodicamente el modelo, incluso antes de terminarlo,
para evitar perder el trabajo realizado.
Un ejemplo trivial incluiria la seleccion de dos componentes: "Simulink\Sources\Sine
Wave" y "Simulink\Sinks\Scope" de la ventana "Simulink Library Browser", y el arrastre de los
mismos hasta la ventana de dibujo. En el caso de nuestro ejemplo basico, para conectar el generador
de seales y el osciloscopio, simplemente se debe situar el raton sobre el punto de salida del
generador, pulsar el boton izquierdo, arrastrar el raton hasta el punto de entrada del osciloscopio y
soltar el boton del raton.
ControIes de zoom
1
2
3
4
5
Nmero de entradas deI
osciIoscopio
ControI de Ia simuIacin
Duracin de Ia simuIacin en segundos
6
7
Botn de propiedades
3. Control de la simulacin y visualizacin de resultados.
Antes de poder ejecutar la simulacion, es necesario seleccionar los parametros apropiados
para la misma (1). Desde el menu: "Simulation\Parameters", se puede desplegar un cuadro de
dialogo, en el que se controlan parametros de la simulacion de entre los cuales el que se modiIica
Gijn - Octubre 2006 10
mas habitualmente es el tiempo Iinal de la simulacion. (Otros parametros accesibles son el tiempo
de inicio de la simulacion, el metodo matematico que se empleara para llevarla a cabo, o las
variables que se tomaran/guardaran de/en el espacio de trabajo). La simulacion se puede poner en
marcha o detener mediante el menu anterior o los botones de la ventana (2).
Para visualizar los resultados de la misma son muy utiles los bloques se encuentran en el grupo
"Sinks" de la biblioteca de Simulink. De entre ellos, quizas el mas util es el bloque "Scope" que simula
el comportamiento de un osciloscopio. Tras realizar una simulacion se pueden ver los resultados que
ha registrado haciendo un doble clic sobre el (3). Para ver correctamente los resultados se utilizan los
controles de zoom (4), siendo conveniente pulsar siempre tras una simulacion el boton de autoescala
(el de los prismaticos) para ver el total de los datos registrados. Los otros tres botones de zoom
permiten respectivamente ampliar un area sealada con un arrastre del raton, ampliar el eje "X" de la
misma manera o ampliar el eje "Y".
El bloque "Scope" tiene una serie de propiedades a las que se accede a traves del boton
correspondiente de la ventana "Scope" (5). Dos de las mas utiles son la que permite elegir el numero
de entradas que se desean para el osciloscopio (6) "Number oI axes" (que sera tambien el numero de
graIicos que representara) y la que determina si el osciloscopio almacena todos los datos de la
simulacion o solo los ultimos obtenidos (7) "Limit rows to last". Respecto a este ultimo control, es
conveniente eliminar la marca "" del cuadradito blanco para que el osciloscopio mantenga todos los
datos registrados durante la simulacion completa.
A
B
Mux
Si se desea visualizar mas de una seal en un osciloscopio, existen dos posibilidades:
A) Aumentar el numero de entradas del osciloscopio como se comento anteriormente.
B) Utilizar un bloque "Mux" para que ambas seales aparezcan en el mismo graIico.
Gijn - Octubre 2006 11
E1EMPLO 1
Simular la respuesta de un sistema descrito por su Iuncion de transIerencia ante una
determinada seal de entrada con Matlab o Simulink es muy sencillo:
Y(s)
X(s)
x(t)
y(t)
9 4
8
) (
2

s s
s G
Con Matlab se puede
obtener la respuesta ante un
inpulso de Dirac, un
escalon, etc.:
>> g tf(8], 1 4 9])
g8/(s^2+4s+9)
>> impulse(g)
>> step(g)
Con Simulink se construye el modelo del sistema, pudiendo optarse por introducir sus
parametros de Iorma explicita o dejarlos como parametros a los que se les puede asignar un valor
como variables desde la ventana de comandos de Matlab. Una vez ejecutada la simulacion se obtendra
en el bloque 'Scope el resultado de la misma.
A B
Gijn - Octubre 2006 12
E1EMPLO 2
Si se desea simular un sistema mas complejo basta con trasladar las ecuaciones de su modelo a
un modelo de bloques de Simulink.
Modelo del sistema:
q
r
(t)q
a
(t)q
p
(t)
q
r
(t)Ri
2
(t)
q
a
(t)Cdt
i
(t)/dt
q
p
(t)(t
i
(t)-t
a
(t))/R
t
Simulink puede simular sistemas no lineales, como se puede ver en el siguiente modelo,
siendo necesario en muchos casos deIinir los valores iniciales de algunas de las variables del
sistema (en bloques como los 'integrator). Los valores del modelo representado que se han dejado
como parametros son asignados en la ventana de comandos de Matlab (debe tenerse cuidado con el
uso de mayusculas y minusculas en la denominacion de estos parametros). Los archivos de ejemplo
indicados contienen el modelo representado y el espacio de trabajo con los valores asignados a los
parametros para la ventana de comandos de Matlab.
Archivos: calentadornolineal.mdl, calentador.mat
Qp(t)
Qr(t) Qa(t)
i(t)
ta(t)
ti(t)
ti(t)
ta(t)
i(t)
Modelo no lineal del calentador
nitial=Tio
time=2000
inicial=1
final=1.5
time=6000
inicial=20
final=15
Parmetros
R=20 ohm
C=4184 julio/C
Rt=0.1 Cs/julio
Modelo no lineal del calentador
(Simulation->Parameters->Solver: Stop Time=10000)
Qr(t)=Qa(t)+Qp(t)
Qr(t)=Ri(t)^2
Qa(t)=Cdti(t)/dt
Qp(t)=(ti(t)-ta(t))/Rt
(Crear en la ventana de comandos de Matlab)
Equilibrio nicial
(RRto^2=Tio-Tao)
o=1 A
Tao=20
Tio=22
s
1
1/Rt
1/C R u^2
0
Display
Scope
ntegrator
Step 1
Step 2
Gain 2 Gain 1
Gain 3
Fcn
Tambien se puede linealizar el modelo respecto a un punto de Iuncionamiento y construir el
modelo en transIormadas de Laplace. Luego se trasladan las ecuaciones del modelo linealizado a un
modelo de Simulink mediante, por ejemplo, bloques 'Funcion de TransIerencia (TransIerFcn).
Calentador
Fuente de
corriente
i(t)
t
i
(t)
t
a
(t)
q
a
(t)
q
r
(t)
q
p
(t)
R
C
R
t
Gijn - Octubre 2006 13
Modelo linealizado del sistema en TransIormadas de Laplace:
Q
r
(s)Q
a
(s)Q
p
(s)
Q
r
(s)2RI
o
I(s)
Q
a
(s)CsT
i
(s)
Q
p
(s)(T
i
(s)-T
a
(s))/R
t
Archivos: calentadorlineal.mdl, calentador.mat
Qr(s) Qa(s)
Qp(s)
Ti(s)
ti(t)
i(t)
ta(t)
Ta(s)
(s)
Modelo lineal del calentador
(Simulation->Parameters->Solver: Stop Time=10000)
time=2000
inicial=0
final=0.5
time=6000
inicial=0
final=-5
Equilibrio nicial
(RRto^2=Tio-Tao)
o=1 A
Tao=20
Tio=22
Parmetros
R=20 ohm
C=4184 julio/C
Rt=0.1 Cs/julio
Qr(s)=Qa(s)+Qp(s)
Qr(s)=2Ro(s)
Qa(s)=CsTi(s)
Qp(s)=(Ti(s)-Ta(s))/Rt
(Crear en la ventana de comandos de Matlab)
1
Rt
0
Display
2*R*o
1
1
C.s
Step 2
Step 1
Transfer Fcn 1
Transfer Fcn 2
Transfer Fcn 3
Scope
Al comparar los resultados de la simulacion de ambos modelos, se puede observar el error
que introduce la linealizacion del modelo.
+2.5
-5
+2
-5
22
Gijn - Octubre 2006 14
E1EMPLO 3
Una vez diseado un regulador para un sistema, basandose en su modelo linealizado, se puede
comprobar con Simulink si el comportamiento Iinal del sistema es adecuado. Basta con aadir los
bloques que representan el sistema de control diseado.

Selector de
temperatura
Regulador
Accionador
Sensor de
temperatura
Proceso
Filtrado y ampliIicacion
Comparador
Calentador
Archivos: calentadorlinealregulador.mdl, calentadorregulador.mat
Qr(s) Qa(s)
Qp(s)
Ti(s)
ti(t)
r(t)
ta(t)
Ta(s)
(s)
Modelo lineal del calentador con un regulador PD
(Simulation->Parameters->Solver: Stop Time=2500)
time=500
inicial=0
final=5
time=1500
inicial=0
final=-5
Equilibrio nicial
(RRto^2=Tio-Tao)
o=1 A
Tao=20
Tio=22
Parmetros
R=20 ohm
C=4184 julio/C
Rt=0.1 Cs/julio
Qr(s)=Qa(s)+Qp(s)
Qr(s)=2Ro(s)
Qa(s)=CsTi(s)
Qp(s)=(Ti(s)-Ta(s))/Rt
(Crear en la ventana de comandos de Matlab)
R(s)
Regulador PD
Realimentacin unitaria
K(s+a)(s+c)/(s(s+b))
K=2.57
a=0.05
b=0.023
c=0.0025
Corriente i(t)
1
Rt
5
Display
K
1
s +(a+c)s+a*c
2
s +b.s
2
2*R*o
1
1
C.s
Sin embargo, siempre que sea posible, es conveniente comprobar el comportamiento del
sistema de control sobre el modelo no lineal del sistema. Pueden tenerse en cuenta, por ejemplo,
limitaciones en la evolucion de determinadas variables del sistema. En el siguiente ejemplo, a parte
de utilizar el modelo no lineal que se tenia para el sistema, se ha supuesto que la corriente maxima
i(t) que se puede conseguir es de 10 A y que su valor nunca es negativo. Esto se ha reIlejado en el
modelo mediante un bloque denominado 'Saturation.
Gijn - Octubre 2006 15
Archivos: calentadornolinealregulador.mdl, calentadorregulador.mat
Qp(t)
Qr(t) Qa(t)
r(t)
ta(t)
ti(t)
ti(t)
ta(t)
r(t)
nitial=Tio
time=500
inicial=22
final=27
time=1500
inicial=20
final=15
Parmetros
R=20 ohm
C=4184 julio/C
Rt=0.1 Cs/julio
Modelo no lineal del calentador con un regulador PD
(Simulation->Parameters->Solver: Stop Time=25000)
Qr(t)=Qa(t)+Qp(t)
Qr(t)=Ri(t)^2
Qa(t)=Cdti(t)/dt
Qp(t)=(ti(t)-ta(t))/Rt
(Crear en la ventana de comandos de Matlab)
Equilibrio nicial
(RRto^2=Tio-Tao)
o=1 A
Tao=20
Tio=22
Realimentacin unitaria
Regulador PD
K(s+a)(s+c)/(s(s+b))
K=2.57
a=0.05
b=0.023
c=0.0025
Saturation
s
1
K
1/Rt
1/C R u^2
27
Display
s +(a+c)s+a*c
2
s +b.s
2
i(t)
Corriente i(t)
Los resultados muestran (aunque no son exactamente iguales en una y otra simulacion) que
el sistema de control sigue comportandose correctamente.
22
1 A
Gijn - Octubre 2006 16
E1ERCICIO 1: Visualizacin de la respuesta de un sistema
Construir una Iuncion de transIerencia sustituyendo los digitos ABCDEFGH con los numeros
de su D.N.I., ajustados a la derecha y rellenando con un cero por la izquierda si es necesario:
DNI: . . 1AB*s+2CD
-- --- --- G(s)= ----------------
AB CDE FGH s
3
+1E*s
2
+5F*s+1GH
Por ejemplo:
DNI: 09.345.678 109*s+234
-- --- --- G(s)= ----------------
AB CDE FGH s
3
+15*s
2
+56*s+178
Incluir en el inIorme los siguientes datos y resultados:
(Indicar todos los comandos y el diagrama de bloques del modelo en Simulink utilizados para
obtener los datos que se solicitan, los resultados numricos correspondientes, y los dibujos a mano
alzada de los grficos solicitados)
1. Apellidos, Nombre y DNI del alumno.
2. La Iuncion de TransIerencia G(s) creada.
3. Los ceros y polos del sistema G(s).
4. Respuesta ante un impulso. (con Matlab)
4.1. Dibujo de la respuesta.
4.2. Maximo de la respuesta.
4.3. Valor en Regimen permanente.
5. Respuesta ante un escalon. (con Simulink)
5.1. Dibujo de la respuesta.
5.2. Maximo de la respuesta.
5.3. Valor en Regimen permanente.
Gijn - Octubre 2006 17
E1ERCICIO 2: Creacin de un modelo de simulacin
Ri
K u (t)
i
u (t)
m
M.
D.T.
=cte.
e
J
B
P (t)
m
P (t)
r
w(t)
i (t)
i
u (t)
c
Li
El sistema de la Iigura esta compuesto por los siguientes elementos:
- Un rectiIicador controlado que alimenta a un motor CC con una tension continua u
i
(t) proporcional a
la tension u
c
(t), con constante de proporcionalidad K.
- Un motor CC con corriente de excitacion constante de parametros: R
i,
L
i,
cte. contraelectromotriz K
b
y cte. de par del motor K
p.
- El conjunto rotor-eje del motor y de la D.T. tiene una inercia J y un coeIiciente de rozamiento
viscoso B (que se representan en la Iigura). En el extremo del eje existe un par resistente variable, p
r
(t),
debido a los elementos mecanicos que mueve el motor y que no aparecen en la Iigura.
Modelo matematico del sistema:
u
i
(t) Ku
c
(t)
u
i
(t) R
i
i
i
(t) L
i
di
i
(t)/dt u
m
(t)
u
m
(t) K
b
w(t)
p
m
(t) K
p
i
i
(t)
p
m
(t) p
r
(t) Jdw(t)/dt Bw(t)
En transIormadas de Laplace:
U
i
(s) KU
c
(s)
U
i
(s) R
i
I
i
(s) L
i
sI
i
(s) U
m
(s)
U
m
(s) K
b
W(s)
P
m
(s) K
p
I
i
(s)
P
m
(s) P
r
(s) JsW(s) BW(s)
Obtenga el valor de los parametros de las ecuaciones sustituyendo convenientemente los digitos de su
D.N.I. en las expresiones siguientes:
D.N.I.: A B . C D E . F G H
A B . C D E . F G H
K =1+A
K
b
=0.2-0.01B [Vs/rad]
K
p
=1+0.2C [Nm/A]
R
i
=10-D []
L
i
=0.01+0.02(E+F) [H]
J =10+G [Kgm
2
]
B =5-(0.1H) [Kgm
2
/s]
Por ejemplo:
D.N.I.: 0 9 . 3 4 5 . 6 7 8
A B . C D E . F G H
K =1+0=1
K
b
=0.2-0.019=0.11 [Vs/rad]
K
p
=1+0.23=1.6 [Nm/A]
R
i
=10-4=6 []
L
i
=0.01+0.02(5+6)=0.23 [H]
J =10+7=17 [Kgm
2
]
B =5-(0.18)=4.2 [Kgm
2
/s]
Construir el modelo del sistema en Simulink considerando a u
c
(t) como entrada, p
r
(t) como
perturbacion y w(t) como salida.
Gijn - Octubre 2006 18
Incluir en el inIorme los siguientes datos y resultados:
(Dibujar el diagrama de bloques del modelo en Simulink utilizado para obtener los datos que se
solicitan, los resultados numricos correspondientes, y los dibujos a mano alzada de los grficos
solicitados)
1. Apellidos, Nombre y DNI del alumno.
2. Dibujo del diagrama de bloques usado en las simulaciones.
3. Valores de las Constantes utilizadas (K, Kp, Li, ....).
4. Simular la respuesta del sistema a un escalon de cinco unidades en la entrada Uc(t).
4.1. Obtener el valor al que tiende la respuesta en regimen permanente.
4.2. Determinar la constante de tiempo T del sistema.
5. Aadir a la simulacion el eIecto de un escalon de cinco unidades en la perturbacion, una vez que
la respuesta al escalon del apartado 4 ha alcanzado el regimen permanente.
5.1. Dibujar aproximadamente la respuesta.
5.2. Obtener el valor al que tiende la respuesta en regimen permanente.
6. Simular la respuesta del sistema ante una entrada senoidal en Uc(t) de pulsacion w1 rad/s y
amplitud 5. (Recuerde anular la perturbacion introducida en el apartado 5)
6.1. Dibujar las senoides en regimen permanente.
6.2. Obtener el valor de la amplitud de la senoide de la salida una vez alcanzado el regimen
permanente.
6.3. Obtener la diIerencia de Iase entre la entrada y la salida una vez alcanzado el regimen
permanente.
Gijn - Octubre 2006 19
E1ERCICIO 3: Estudio de la respuesta en frecuencia de un sistema y bucle cerrado
Construir una Iuncion de transIerencia sustituyendo los digitos ABCDEFGH con los numeros
de su D.N.I., ajustados a la derecha y rellenando con un cero por la izquierda si es necesario:
DNI: . . 1AB*s+2CD
-- --- --- G(s)= ----------------
AB CDE FGH s
3
+1E*s
2
+5F*s+1GH
Por ejemplo:
DNI: 09.345.678 109*s+234
-- --- --- G(s)= ----------------
AB CDE FGH s
3
+15*s
2
+56*s+178
Incluir en el inIorme los siguientes datos y resultados:
(Indicar todos los comandos utilizados para obtener los datos que se solicitan, los resultados
numricos correspondientes, y los dibujos a mano alzada de los grficos solicitados)
1. Apellidos, Nombre y DNI del alumno.
2. Indicar la Iuncion de TransIerencia G(s) creada.
3. Obtener ceros y polos del sistema G(s).
4. Dibujar el diagrama de Bode y obtener el valor del modulo (en decibelios) y la Iase (en grados) de la
respuesta en Irecuencia para 5 rad/s de G(s).
5. Obtener el valor del modulo (en decibelios) en el pico de resonancia y la Irecuencia de resonancia
de G(s). (!ATENCION Puede que el pico de resonancia no exista o no coincida con el valor maximo
en modulo del diagrama de Bode. Indicar si suceden estas situaciones).
6. Cuanto vale 'M
r
?
7. Obtener la Iuncion de transIerencia M(s) resultado de realimentar unitaria y negativavente a G(s)
con K1.
X(s)
G(s)

Y(s)
K
M(s)
8. Obtener los polos del sistema en bucle cerrado M(s) para K 5.
9. Obtener los margenes de ganancia y de Iase y las Irecuencias correspondientes a esos margenes para
G(s) (En algunos casos pueden ser inIinito).
Gijn - Octubre 2006 20
E1ERCICIO 4: Diseo de un regulador para un modelo de simulacin
Se pretende disear un regulador para el sistema del ejercicio 2 cuando este se realimenta
negativamente mediante una tacodinamo. La tacodinamo proporciona una tension de salida de un
voltio por cada 1.000 r.p.m. con una respuesta dinamica semejante a un sistema de primer orden con
constante de tiempo T0.1 segundos.
Sistema sin realimentacion: (Obtener los valores de los parametros como en el ejercicio 2)
W(s)
G
2
(s)
P
r
(s)

G
1
(s)
U
c
(s) L
i
sR
i
JL
i
s
2
(BL
i
JR
i
)s(R
i
BK
p
K
b
) L
i
sR
i
KK
p

EspeciIicaciones para el regulador:
Tiempo de establecimiento: t
s
_ 0.4 segundos Sobreoscilacion: M
p
_ 5
Anular el error de posicion, e
p
, en regimen permanente.
Eliminar el eIecto de perturbaciones en el par p
r
(t) sobre el regimen permanente del sistema.
Sistema realimentado:
W(s)
G
2
(s)
H(s)
P
r
(s)

G
1
(s)
U
c
(s) L
i
sR
i
JL
i
s
2
(BL
i
JR
i
)s(R
i
BK
p
K
b
) L
i
sR
i
KK
p
R(s)

V(s)
Ts1
K
t

Incluir en el inIorme los siguientes datos y resultados:


(Dibujar el diagrama de bloques del modelo en Simulink utilizado para obtener los datos que se
solicitan, los resultados numricos correspondientes, y los dibujos a mano alzada de los grficos
solicitados)
1. Apellidos, Nombre y DNI del alumno.
2. Valores de las Constantes utilizadas (K, Kp, Li, ....) incluyendo las de la tacodinamo.
3. Regulador diseado para el control incluyendo los calculos realizados para obtenerlo. Utilizar a
ser posible el criterio de la vertical para el diseo: si el angulo de compensacion obtenido para el
regulador sale negativo cambiar la especiIicacion de t
s
por t
s
_ 0.2 segundos y si sale mayor de 90
cambiar por t
s
_ 1. Si persisten los problemas consulte con el tutor.
4. Dibujo del diagrama de bloques en bucle cerrado que incluye el regulador utilizado con Simulink.
5. Simular la respuesta del sistema a un escalon de cinco unidades en la entrada v(t).
5.1. Obtener aproximadamente el valor de la sobreoscilacion Mp.
5.2. Obtener aproximadamente el valor del tiempo de pico t
p
.
5.3. Obtener el valor al que tiende la respuesta del sistema, w(t), en regimen permanente.
6. Simular el eIecto de un escalon de 2.000 unidades en la perturbacion p
r
(t) una vez que la
respuesta anterior ha alcanzado el regimen permanente y dibujar la respuesta del sistema.

1




SIMULINK MATLAB
CONTENIDO
1. ELEMENTOS BSICOS
2. EL MOTOR DC
3. SUBSISTEMAS
4. ECUACIONES DIFERENCIALES
5. SIMULACIN DE SISTEMAS

INTRODUCCIN

Simulink es una extensin de Matlab utilizado en el modelamiento y simulacin de
sistemas. Para arrancar Simulink se puede hacer desde el prompt de Matlab
digitando el comando >>Simulink o utilizando el icono . Se abre la ventana
Simulink Library Browser como se indica abajo y se puede diagramar un nuevo
modelo activando el botn New Model , o sea el icono o de













2



Un modelo es un conjunto de bloques que representa un sistema y como archivo
tiene extensin *.mdl

1. ELEMENTOS BSICOS

Los elementos bsicos son lneas y bloques. Los bloques estn agrupados en:
Sources, Links, Discrete, Continuos, Math, etc., tal como aparecen en la ventana
anterior. Cada bloque tiene entradas y salida para realizar su interconexin. Por
ejemplo, haga clic en Discrete y luego clic en Discrete Transfer Fcn y arrastre el
bloque a la ventana en blanco. Si quiere modificar la funcin de transferencia del
bloque haga doble clic en l y digite los coeficientes del numerador y denominador
en la nueva ventana que aparece. Para la funcin 1/(z
2
+2z +4) con tiempo de
muestreo de 1 seg, quedara:













Para realizar el diagrama en bloques de un sistema se hace lo siguiente:


3


Lo primero es arrastrar los bloques a la pgina en blanco de forma que, Step es
la funcin paso o escaln que se obtiene de Sources, Scope es el osciloscopio
que se obtiene de Sinks, Transfer Fcn se obtiene de Continuos, Sum y Gain se


obtienen de Math. Modifique los bloques dando doble clic sobre cada uno de ellos
para cambiar sus parmetros o valores e interconctelos.


Lo segundo es cambiar los nombres a los bloques y asignar las vari ables o
seales haciendo doble clic en el lugar en que se van a colocar y salvar el modelo
especificndole un nombre, por ejemplo ejem1.mdl


Por ltimo se debe simular el sistema. Para ello se configura la seal de entrada,
en este caso la funcin paso. Dar doble clic y asignar los siguientes parmetros:
Step time=0, Inicial value=0, Final value=1, Sample time=0. Para simular el
sistema de control se escoge del men o el icono .y luego
se hace doble clic en Scope para ver su respuesta o salida del sistema. Para
observar adems la entrada se puede colocar otro Scope a la salida de Step y se
puede probar para varios pasos variando su amplitud, tiempo de inicio y tiempo de

4


iniciacin del paso. Para observar mejor la respuesta se usa el botn Autoscale
(binoculares ) de la ventana del Scope. Si quiere observar mejor la
respuesta o parte de ella se pueden cambiar los parmetros de simulacin,
Simulation Simulation parameters. Por ejemplo cambiar el Start time y el Stop
time y correr nuevamente la simulacin.




2. EJEMPLO: MODELAR UN MOTOR DC

Un actuador comn en sistemas de control es el motor DC. Provee directamente
movimiento rotatorio y acoplado con poleas o correas puede proveer movimiento
transnacional.

2.1 ECUACIONES DINMICAS


El circuito elctrico de la armadura y el diagrama de cuerpo libre del rotor es
mostrado en la figura con sus ecuaciones dinmicas.

5





(1) Leyes de Newton




(2) Leyes de Kirchhoffs




Los parmetros fsicos tienen los siguiente valores :

Momento de inercia del rotor : J = 0.01kg.m
2
/sg
2

Rata de amortiguamiento del sistema mecnico: b = 0.1 N.m.sg
Constante de la fuerza electromotriz: Ke = Kt = 0.01 Nm/Amp
Resistencia elctrica: R = 1 ohm
Inductancia elctrica: L =0.5H
Fuente de voltaje de entrada: V
Posicin angular:
Se asume que el rotor y el eje son rgidos



6




2.2 MODELADO DEL MOTOR EN VELOCIDAD





2.3 EXTRAER MODELO LINEAL

Para obtener la funcin de transferencia del motor primero se trasladan los
parmetros del motor al modelo creando un archivo en Matlab (*.m) de la siguiente
forma:

% VALORES DE LOS PARMETROS DEL MOTOR
J = 0.01;
b = 0.1;
Ke = 0.01;

7


Kt = 0.01;
R = 1;
L = 0.5;

Se ejecuta este archivo y se simula el modelo para una entrada de paso unitario
de valor V = 0.01, con los siguientes parmetros de simulacin: Stop time = 3 sg.
Arranque la simulacin y observe la salida (velocidad del motor).

Como segundo paso se debe obtener el modelo lineal de Matlab del motor. Para
esto, borre el bloque Scope y cmbielo por Out obtenido de la librera de
Signals&Systems. Haga lo mismo para Step cambindolo por In de esta misma
librera. Los bloques In y Out definen la entrada y salida del sistema que le
gustara extraer. Salve este modelo. El sistema quedar as:



Como tercero y ltimo paso, despus de desarrollado el modelo y salvarlo por
ejemplo con el nombre MotorDcVel.mdl se ejecutan los siguientes comandos:


8


% OBTENER EL MODELO LINEAL DEL SISTEMA
[num, den] = linmod('MotorDcVel')
Gps = tf(num, den)
La respuesta es :




3. SUBSISTEMAS

Abra una nueva ventana y arrastre de la librera Signals&Systems el bloque
SubSystem , haga doble clic en este bloque, abra el modelo MotorDcVel.mdl (el
que tiene In y Out como terminales) cpielo y pguelo en la nueva ventana de
subsistema anterior. Cierre ventanas y aparece una nueva con el bloque con los
terminales del subsistema creado. Dle el nombre MotorDcVel. Si a este bloque
de subsistema se le da doble clic aparece el modelo completo diseado
anteriormente. Otra forma es sealar los bloques de inters, ir a men Edit -->
create Subsytem





3.1 SISTEMA EN LAZO ABIERTO

Al subsistema creado que constituye la planta de un sistema de control se le va a
adicionar un controlador y obtendremos la funcin de transferencia en lazo abierto
y lazo cerrado.

9





% CONTROL DE UN MOTOR DC
[num, den]=linmod('ControlMotor')
Glazo_abierto = tf(num, den)


Respuesta:




3.2 SISTEMA EN LAZO CERRADO



% CONTROL DE UN MOTOR DC
[num, den]=linmod('ControlMotor')
Glazo_cerrado= tf(num, den)

Respuesta:


10




3.3 SISTEMA DISCRETO

DIAGRAMA EN SIMULINK





PROGRAMA MATLAB

% SISTEMA DISCRETO DISCRETO
T=0.1;
[num,den]=dlinmod('MotorDigital',T)
Glazo_cerradoz=tf(num,den,T)

Respuesta:









11





4. SOLUCIN DE ECUACIONES DIFERENCIALES

Ejemplo:

Resolver la siguiente ecuacin diferencial:

y y t y t y y y t y
dt
dy
dt
y d
6 ' 3 4 ' ' 4 6 ' 3 ' ' 4 6 3
2
2
= = + + = + +

Diagrama Simulink:





Respuestas:


12





Ejemplo:

Comprobar la integracin por Simulink.





13









5. SIMULACIN DE SISTEMAS

5.1 INTERCAMBIO DE MATLAB A SIMULINK

Para utilizar seale de Matlab a Simulink de la librers Sources se utiliza el bloque
From Workspace.





14



Ejemplo: Resolver la ecuacin y + y = e
t
, y(0) = 0, y(0) =3



El vector [ t x ] se ejecuta en Matlab en el workspace de la siguiente forma:


>> t = 0:0.001:0.999;
>> t = t;
>> x = exp(t)

Al ejecutarse Simulink toma los datos entregados por Matlab. No olvidar colocar
condicin inicial y(0) = 3 en el integrador.

5.2 INTERCAMBIO DE SIMULINK A MATLAB

Para enviar datos de Simulink a Matlab se utiliza de la librera Sinks el bloque To
Workspace.

Ejemplo:

Resolver la ecuacin: f(t) = Mx + Bx + Kx, M=1, B=1, K= 10, F(t) = 5


15



Diagrama Simulink:


En Matlab:
>> plot(t,y)

5.3 EJERCICIOS

Ejercicio1:



16


Si la entrada es una seal senoidal, encontrar las salidas referidas a vC y iL.

Ejercicio2:

Para el siguiente problema hallar la variacin de h si el caudal normal Q es de 10
lit/min y en t=5 seg se aplica una perturbacin de 2 lit/min. El valor de K=10, A= 2
m
2
.

h K t q
dt
dh
A = ) (



Diagrama Simulink:


17





EJERCICIO3: LA BOLA MAGNTICA


Ecuaciones:

iR V
h
i
mg
dt
h d
m = =
dt
di
L (2) ) 1 (
2
2
2
|


Valores:

m=0.1 Kg; g=9.81; R=2 Ohm; L=0.02 H; |=0.001

Diagrama simulink:


18




Controlador:




zeros=[-11.5+7.9i, -11.5-7.9i]
polos=[0 -1000]
ganancia=-3.3057e+004

Planta:



i(0) = 0; h(0)=0.05; h(0)=0




19














20




EJERCICIO4: TANQUE DE AGUA




Ecuacin del modelo:

h a bV
dt
dh
A
dt
dVol
= =

Diagrama simulink:








21




Controlador:

Planta:



EJERCICIO5: MOVIMIENTO PARABLICO





22





Ecuaciones:


acelerado Movimiento ' '
unforme Movimiento 0 ' '
g y
x
=
=


Condiciones iniciales:

Vo=100 m/sg; u = 30




23










24




EJERCICIO6: PNDULO SIMPLE





Ecuacin:

0 ' ' ' = + + u u u wsen BL mL


Valores:

w (peso) = 2; L (longitud) = 0.6; B (amortiguacin) = 0.08;

Condiciones iniciales: u(0) = -2 rad/sg; u(0) = t /2







25




Diagrama simulink:







26



EJEMPLO: SISTEMA MECANICO





Parmetros:

m1=40; m2=60; k1=400; k2=400; b1=180; b2=220;

Ecuaciones dinmicas:

1 ) 2 1 ( ) 2 1 ( 1
1
1 ) ( b v v dt v v k
dt
dv
m t f + + =
}


2 2 2 2 1 ) 1 2 ( ) 1 2 ( 1
2
2 0 v b dt v k b v v dt v v k
dt
dv
m + + + + =
} }


Ecuaciones de Laplace:

1 ) 2 1 ( ) 2 1 (
1
1 1 ) ( b V V V V
s
K
sV m s F + + =

2 2 2
2
1 ) 1 2 ( ) 1 2 (
1
2 2 0 V b V
s
k
b V V V V
s
k
sV m + + + + =

27



Diagrama simulink:




EJEMPLO: SISTEMA TERMOQUMICO

Se desarrolla una reaccin termoqumica en donde el reaccionante A se convierte
en un producto B.

Velocidad de reaccin: r(t)= k c(t)
Constante de velocidad de reaccin: k = 0,2 min
-1



28



Concentracin de la entrada: c
i
(t)
Para t= 0; c
i
(0)=1.25 lbmol/pie
3

Volumen de la masa reaccionante: V= 5 litros
Flujo de entrada: F= 1 lt/min

Ecuacin dinmica:

) ( ) ( ) (
) (
t KVc t Fc t Fc
dt
t dc
V
i
=

) ( ) ( ) (
) (
t c KV F t Fc
dt
t dc
V
i
+ =

) ( ) (
) (
t c
KV F
F
t c
dt
t dc
KV F
V
i
+
= +
+


Constante de tiempo:
KV F
V
+
= t

Ganancia de estado estacionario:

KV F
F
K
e
+
=

Reemplazando valores: t = 2.5 min; K
e
= 0.5;
Condicin inicial de la concentracin: c(0)

0 = Fc
i
(0) - Fc(0) - KVc(0)

Reemplazando valores: c(0) = 0.625 lbmol/pie
3


29



Programa en Matlab:

%Entrada al paso. Programa pplineal.m
function dy=pplineal(t,y)
global K X tau
dy=(K*X-y)/tau;

% Entrada rampa. Programa rplineal.m
function dy=rplineal(t,y)
global K r tau
dy=(K*r*t-y)/tau;

% Entrada senoidal. Programa splineal.m
function dy=splineal(t,y)
global K tau A w
dy=(K*A*sin(w*t)-y)/tau;

% Programa principal
F=1;
V=5;
K=0.2;
ci0=1.25;
c0=solve('F*ci0-F*c0-K*V*c0=0');
c0=eval(c0)
%Constante de tiempo
tau=V/(F+K*V)
% tau=2.5 minutos
%Ganancia en estado estacionario
Ke=F/(F+K*V)
% Ke=0.5

30



global R K tau X r A w Rango Inicio
Rango=input('Tiempo de simulacion=');
Inicio=input('Condiciones iniciales=');
N=input('ESCRIBA 1=PASO, 2=RAMPA, 3=SENO: ');
disp(' ')
switch N
case 1
X=input('Valor del paso=');
[t,y]=ode45('pplineal',Rango,Inicio);
plot(t,y)

case 2
r=input('valor pendiente de la rampa=');
[t,y]=ode45('rplineal',Rango,Inicio);
plot(t,r*t,t,y/K,'r')

case 3
A=input('Amplitud del seno=');
w=input('Frecuencia del seno=');
[t,y]=ode45('splineal',Rango,Inicio);
disp('Amplitud del perfil de la respuesta')
K*A/sqrt(1+(w*tau)^2)
disp('Fase de la respuesta respecto a la entrada')
atan(-w*tau)
plot(t,A*sin(w*t),t,y,'r')
end





31




Programa en Simulink:




EJEMPLO: SISTEMA HIDRAULICO

% HIDRAULICO UNA ETAPA
C1=3; R1=1; C2=10; R2=2;
qi=2;
keyboard
plot(t,qo)
title('HIDRAULICO')
grid

32



pause
n=1;
while n==1
T=input('Entre tiempo: ')
delta=input('Entre valor delta: ')
i=find(t<=(T+delta)&t>=(T-delta));
tiempo=t(i)
caudal_salida=qo(i)
n=input('Entre 1 para seguir y 0 para parar: ')
end




EJEMPLO: SISTEMA ELCTRICO

% CIRCUITO RC DE DOS ETAPAS
R1=10e3; R2=20e3; C1=1e-6; C2=10e-6;
ei=10;
keyboard
plot(t,eo)
title('CIRCUITO RC')
grid

33


pause
n=1;
while n==1
T=input('Entre tiempo: ')
delta=input('Entre valor de delta: ')
i=find(t<=(T+delta)&t>=(T-delta));
tiempo=t(i)
voltaje_salida=eo(i)
n=input('Entre 1 para seguir y 0 para parar: ')
end



INTRODUCCION A SIMULINK
Matlab (Matrix Laboratory) es un sistema basado en matrices para realizar clculos
matemticos y de ingeniera. Entre las mltiples herramientas que presenta este programa se encuentra
Simulink que es una librera de MATLAB que permite la simulacin de procesos mediante diagramas de
bloques.

1. Acceso a la librera de bloques de Simulink:
Para acceder a la librera de Simulink se debe abrir inicialmente la ventana principal de Matlab
(Matlab Command Window). En esta se puede ejecutar el comando simulink o hacer clic en
el smbolo correspondiente en la barra de herramientas en la parte superior de esta ventana.
Al hacer esto aparecer el listado de las libreras correspondientes a simulink, donde se podr
tener acceso a todos los bloques que brinda esta herramienta. Para abrir una nueva hoja de
trabajo se deber acceder a travs de: File New Model, o hacer clic en el smbolo de hoja
nueva.




Figura 1. Simulink Library Browser


La librera Simulink contiene los bloques necesarios para simular un sistema mediante tcnicas
convencionales, las dems libreras son herramientas adicionales que se utilizan para aplicaciones
especficas de control avanzado. En la Figura 2 se muestra el contenido de la librera Simulink.





Figura 2. Librera Simulink.

En la figura 3 se pueden observar los bloques mas utilizados en la simulacin de procesos. Estos
se encuentran en hacer clic en el signo (+) de cada librera. Pueden ser utilizados al hacer clic sobre ellos
y arrastrndolos sobre la hoja de trabajo. Igualmente en la tabla 1 se pueden observar una descripcin
mas detalladas de algunas de estas funciones.



Figura 3. Bloques mas utilizados en la librera Simulink

Tabla 1. Detalles de algunos bloques de la librera Simulink.
Bloque Funcin Librera Parmetros requeridos
Constante Asigna un valor constante a la
entrada.
Sources Valor de la constante.
Entrada escaln Introduce un escaln de magnitud
especfica en un tiempo dado.
Sources Tiempo del escaln
Valor inicial del escaln,
Valor Final del Escaln
Entrada Rampa Introduce una rampa en un tiempo
especificado.
Sources Tiempo de la rampa,
pendiente
Entrada Senoidal Introduce una seal senoidal
especficada por el usuario.
Sources Amplitud de la onda,
Fase.
Workspace Almacena datos de la seal que llega
al bloque y la convierte en vector. Si
se conecta al reloj se almacena el
vector tiempo.
Sinks Nombre y tipo de la
variable (Save format:
Matrix)
Scope Grafica la seal que se introduzca
con respecto al tiempo.
Sinks
Entradas
XYgraph Grafica la entrada superior en el eje
x y la inferior en el eje y
Sinks
Rango de los ejes
Funcin de
Transferencia
Representa la funcin de
transferencia a lazo abierto.
Contin. Numerador y
Denominador de la FT
Integrador Integra una seal en funcin del
tiempo
Contin. Valor inicial desde el
cual se va a integrar
Retardo de transporte Introduce un retardo en el tiempo en
el cual aparece la seal.
Contin. Valor del retardo (Debe
ser un nmero positivo)
Ganancia Multiplica la seal por cualquier
valor de ganancia que se introduzca.
Math Valor de la ganancia
Sumador Suma dos seales. Math Nmero de entradas a
sumar
Multiplicador Multiplica dos seales. Math Nmero de entradas a
multiplicar
Matlab-Function Aplica cualquier funcin matemtica
conocida por Matlab a la seal.
Functions and
Tables
Funcin a utilizar
PID Es un controlador donde se puede
introducir una parte proporcional,
una integral y una derivativa
Blocksets &
Toolbox.:
Simulink-extras:
Aditional linear
Proporcional: K, Integral:
K/Ti, Derivativo: K.Td

Mux Permite representar dos seales
distintas en una misma grfica.
Signals &System. Nmero de entradas

Obs. Colocando el nombre del bloque de inters en el buscador (Simulink library browser), se puede
ubicar directamente en la librera de bloques.


Notas sobre el uso de Matlab.


- Los bloques pueden ser movidos al arrastrase con el botn izquierdo del mouse y pueden ser
copiados al hacer clic sobre ellos con el botn izquierdo del mouse y arrastrando la copia creada.

- Los bloques se deben unir mediante flechas. Esto se logra haciendo clic en la flecha de salida
del bloque deseado y conectndola (sin soltar el botn), a la flecha del bloque que se desea unir.

- Para que las modificaciones en el programa hagan efecto este deber ser grabado despus de
realizar los cambios.

- Al hacer clic con el botn derecho sobre una seal, se podr obtener una lnea de esta seal
para llevarla o conectarla a un bloque deseado.

- Al barrer el mouse sobre un grupo de bloques se podrn mover estos a la vez y copiarlos en
grupo.

- El save format de los workspace debe ser colocado en array para poder graficar las
variables deseadas posteriormente.


2. Ejemplos de Uso de Simulink


Modelos Matemticos no Linealizados.

a) Simular la siguiente ecuacin diferencial y encontrar su respuesta ante una entrada escaln.

1 ) ( *
60
exp 5
) (
=


+ t X
T dt
x d
Donde, X
0
= 0 en T=500


Solucin:

- Seleccionar los bloques necesarios para representar el modelo y llevarlos a la hoja de
trabajo. Para ello debe buscar los bloques en las libreras correspondientes (Ver tabla 1 y
figuras 2 y 3), seleccionar cada uno haciendo "click" sobre l para marcarlo y arrastrarlo con
el "mouse" hasta la ventana.



Figura 4. Bloques necesarios para la representacin de la ecuacin.

- Armar el modelo. Las ecuaciones diferenciales pueden representarse en bloques de
"Simulink" como funcin del tiempo sin linealizarlas ni llevarlas al dominio de Laplace. En
primer lugar, se debe despejar la derivada temporal para expresarla en funcin de los dems
trminos de la ecuacin:
) ( *
60
exp 5 1
) (
t X
T dt
x d


= (1)
Luego, se debe establecer qu valores en la ecuacin son constantes y cules son funcin del
tiempo, en este caso, la conversin X depende del tiempo, pero la temperatura T es constante.
El primer trmino del lado derecho de la ecuacin (1) se puede representar como un escaln
unitario o como una entrada constante.
En el segundo trmino [5exp(-60/T).X(t)], la temperatura se representa, igualmente, como una
entrada escaln o como una entrada constante, luego se invierte con un bloque Matlab Function, donde se
especifica la funcin 1/u, se multiplica por una ganancia de 60 con un bloque Gain, y se introduce
nuevamente en una Matlab Funcin para obtener la exponencial, que va a ser multiplicada por 5 con otro
bloque Gain, como se muestra en la figura 5.
La variable X(t) no se conoce porque es el resultado de integrar el lado derecho de la ecuacin,
esta variable debe multiplicarse con la exponencial con un bloque producto para formar el segundo
trmino de la ecuacin diferencial, luego ambos trminos se combinan con un bloque Sum para obtener la
ecuacin (dX(t)/dt) completa que pasa por un integrador para obtener la variable X(t), que se realimenta
al bloque producto.
Se debe colocar igualmente un bloque de reloj para que el simulador contabilice el tiempo.
Todas las seales que se deseen guardar o ser posteriormente llamadas para graficar, deben ser
alimentadas a un bloque workspace (Save format : Array)

Figura 5. Diagrama de bloques de la simulacin de la ecuacin diferencial.

Haciendo clic en cada bloque se pueden cambiar sus parmetros y sus nombres. En este caso se
colocan los siguientes:

Entrada Escaln (T) Integrador Matlab Function (1/T)
Matlab Function
Exp(E/KT)
Step Time = 0
Valor Inicial = 500
Valor Final = 500
Inicial Value = 0 Fuction = 1/u Fuction = exp
De esta forma tenemos:





Figura 6. Diagrama de Bloques con sus parmetros.
















- A continuacin se abre el men Simulation Simulation Parameters y se modifica el
tiempo de parada. En este caso se pondr 8 seg. Posteriormente se simula la ecuacin
diferencial apretando el botn o smbolo de play en la parte superior de la pantalla y se
espera a que la maquina realice el calculo (indicado en la parte inferior derecha de la
ventana)

- Despus de realizar la simulacin se regresa a la ventana principal de Matlab y se grafican
los resultados colocando el comando: plot(T,X) y se obtiene:



Figura 7. Simulacin de la respuesta de la ecuacin diferencial.


Para observar la respuesta del sistema ante una perturbacin se coloca:



Entrada Escaln (T)

Step Time = 4
Valor Inicial = 500
Valor Final = 1000





Para que el simulador acepte el cambio, el archivo debe ser guardado (no debe aparecer un
asterisco al lado del nombre del programa en la parte superior de la ventana). Despus de simular
y graficar, se obtiene:



Figura 8. Respuesta del sistema de la ecuacin diferencial ante entrada escaln.

Se observa la perturbacin del sistema en el tiempo = 4 seg.


Ecuaciones Diferenciales Acopladas

b) Simular el siguiente sistema de ecuaciones diferenciales.


) ( * ) 1 ( Ta T B Fo To T A
dt
dT
= A = 0.08 B = 0.05


) ( * ) 2 ( T Ta D Fp To Ta C
dt
dTa
+ = C = 0.5 D = 0.01

Donde Fo, To1 y To son posibles perturbaciones cuyos valores son:
Fo = 0.01 m3/min, To1 = 280K, To2 = 350K

Solucin:
- Los Bloques seleccionados son:

Figura 9. Bloques usados para la representacin del sistema.
- Armar el modelo. Las ecuaciones diferenciales se "escriben en bloques de Simulink" como
funcin del tiempo sin realizar ninguna modificacin de las mismas para linealizarlas o
llevarlas al dominio de Laplace.



Figura 10. Diagrama de bloques del proceso con sus parmetros.


Los parmetros iniciales de los bloques y simulacin sern:

Entrada Escaln
(T01)
Entrada Escaln
(T02)
Entrada Escaln (Fo) Integrador (T)
Integrador
(Ta)
Stop
Time
Step Time = 0
Valor Inicial = 280
Valor Final = 280
Step Time = 0
Valor Inicial = 350
Valor Final = 350
Step Time = 0
Valor Inicial = 0.01
Valor Final = 0.01
Initial Value =
280
Initial Value =
350
200


- Despus de Simular y Graficar usando: Plot(t,[T,Ta]) se obtiene,


Figura 11. Simulacin del sistema de ecuaciones diferenciales
Funciones de transferencia a lazo abierto y lazo cerrado

c) Dada la siguiente funcin de trasferencia obtenga la respuesta del sistema a lazo abierto ante
una entrada escaln.

2 4
1
2
+ +
=
s s
FT

Solucin:
- Los Bloques seleccionados son:

Figura 12. Bloques usados para la representacin del sistema.

- Armar el modelo.



Figura 13. Diagrama de bloques del proceso con sus parmetros.


Los parmetros iniciales de los bloques y simulacin sern:



Entrada Escaln
Funcin de
Trasferencia
Parmetros
Simulacin
Step Time = 0
Valor Inicial = 0
Valor Final = 1
Numerador = [1]
Denominador = [1 4 2]
Stop Time = 20

- Despus de Simular y Graficar usando: Plot(T,X) se obtiene,



Figura 14. Respuesta temporal de la funcin de transferencia.


d) Compare la respuesta a lazo cerrado obtenida para la funcin de transferencia del ejemplo
anterior con la respuesta obtenida al aumentar 5 veces la ganancia y con la respuesta obtenida al
usar un controlador de funcin de transferencia:

+ =
Ti
K Gc
1
1 1 Donde, K = 1 y Ti = 0.5


Solucin:

- Los Bloques seleccionados son:



Figura 15. Bloques usados para la representacin del sistema.



- Armar el modelo.


Figura 16. Diagrama de bloques del proceso con sus parmetros.


Los parmetros de los bloques son:


Entrada Escaln Ganancia Mux PID Stop Time
Step Time = 0
Valor Inicial = 0
Valor Final = 1
Gain = 5
Number of inputs
= 3
Proporcional = 1
Integral = 1/0.5
Derivative = 0
20


- Despus de Simular y Graficar usando: Plot(T,s) se obtiene,



Figura 17. Respuesta temporal de la funcin de transferencia.
Introducci on a MATLAB y SIMULINK para
Control
Virginia Mazzone
Regulador centrfugo de Watt
Control Autom atico 1
http://iaci.unq.edu.ar/caut1
Automatizaci on y Control Industrial
Universidad Nacional de Quilmes
Marzo 2002

Indice General Introducci on a MATLAB y SIMULINK - 1

Indice General
1 Introducci on a MATLAB 1
1.1 Conversi on de una funci on transferencia . . . . . . . . . . . . . . . . . . . . . 1
1.2 Races de un polinomio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Desarrollo en fracciones simples . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Funci on transferencia a lazo cerrado . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Respuesta al impulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Respuesta al escal on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 Gr acos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Introducci on a SIMULINK 14
2.1 Acceso y descripci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Funci on transferencia a lazo cerrado . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Respuesta al Escal on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Utilizaci on de par ametros ya denidos . . . . . . . . . . . . . . . . . . . . . . . 19
1 Introducci on a MATLAB
Este apunte es una introducci on elemental a MATLAB, destinado a conocer y practicar al-
gunas de las operaciones b asicas con funciones de transferencia. Los comandos que uti-
lizaremos son los que guran en la Tabla 1. Para mayor informaci on sobre un comando
en particular puede ejecutarse help topic o simplemente help comando, desde la
ventana de comando de MATLAB.
1.1 Conversi on de una funci on transferencia
Una funci on transferencia puede describirse en MATLAB utilizando dos vectores las: uno
para los coecientes del numerador y otro para los coecientes del denominador. Amenudo
se requiere para analizar o dise nar un sistema conocer la ubicaci on de sus polos y ceros;
dicha informaci on est a contenida en la funci on transferencia del sistema. Cuando la fun-
ci on de transferencia est a especicada como raz on de polinomios, podemos conocer sus
polos, ceros y ganancia, o viceversa. Los comandos que nos permiten esto son: tf2zp, que
de un cociente de polinomios nos devuelve los ceros, polos y una ganancia, y zp2tf, que
de conocer los polos, ceros y la ganancia de un sistema nos da el numerador y denominador
de su funci on de transferencia.
Ejemplo 1. Supongamos la funci on transferencia
G(s) =
5s +20
s
2
+4s +20
,
si sacamos el 5 factor com un del numerador y factorizamos el denominador utilizando sus
races, nos queda de la forma
G(s) =
5(s +4)
(s +2 4j)(s +2 +4j)
.

Indice General Introducci on a MATLAB y SIMULINK - 2


Comando Breve explicaci on
exp Exponencial.
sin Seno.
cos Coseno.
sinh Seno Hiperb olico.
cosh Coseno Hiperb olico.
clf Elimina la gura actual.
plot Crea gr acas.
subplot Crea m ultiples gr acos en la misma gura.
hold Mantiene la gr aca anterior.
title Agrega ttulo del gr aco.
xlabel Agrega nombre del eje-X.
ylabel Agrega nombre del eje-Y.
text Agrega texto al gr aco.
print Imprime el gr aco o lo guarda en un archivo
figure Crea guras (ventana para gr acos).
impulse Respuesta al Impulso.
step Respuesta al escal on unitario.
tf Crea un modelo en funci on de transferencia.
zpk Crea un modelo de cero-polo-ganancia.
ss2tf Conversi on de modelo en espacio de estados a funci on de transferencia.
tf2zp Conversi on de modelo en funci on de transferencia a polos y ceros.
ss2zp Conversi on de modelo en espacio de estados a polos y ceros.
zp2tf Conversi on de modelo en polos y ceros a funci on de transferencia.
tf2ss Conversi on de modelo en funci on de transferencia a espacio de estados.
zp2ss Conversi on de modelo en polos y ceros a espacio de estados.
Tabla 1: Comandos que utilizaremos

Indice General Introducci on a MATLAB y SIMULINK - 3


Para llevar a cabo lo mismo con MATLAB, debemos ingresar los polinomios numerador
y denominador, en forma de vectores de la siguiente manera:
num=[5 20];
den=[1 4 20];
Observemos que para denir el vector lo hacemos colocando entre corchetes los coe-
cientes de cada t ermino, ordenados de mayor orden al menor. Para separar las columnas
del vector lo hacemos con un espacio, o tambi en podramos utilizar coma. El punto y coma
nal es para que el resultado de lo ejecutado por MATLAB no salga por pantalla.
Si ahora ingresamos:
[z,p,k]=tf2zp(num,den)
Obtenemos:
z=-4
p=[-2+4j -2-4j]
k=5
Dado que toda funci on transferencia dada por un cociente de polinomios se puede escribir
de la forma
G(s) = k

m
i=1
(s z
i
)

n
i=1
(s p
i
)
con m n,
podemos armar f acilmente nuestra funci on transferencia, haciendo
G(s) =
5(s +4)
(s +2 +4j)(s +2 4j)
.
Si queremos realizar el procedimiento inverso, necesitamos ingresar las variables k, z y
p. Con la instrucci on:
[num,den]=zp2tf(z,p,k);
obtenemos el numerador y denominador de la funci on transferencia:
num=[5 20]
den=[1 4 20]
El hecho de tener el numerador y el denominador de la funci on de transferencia en
dos variables, no signica que MATLAB la identique como tal. Para ello se utiliza el co-
mando tf, que describe en una sola variable la transferencia dada por su numerador y al
denominador. Lo utilizamos de la siguiente forma:
G=tf(num,den);
Si queremos que MATLAB arme la funci on transferencia como cociente de productos de
los ceros y los polos, para ello utilizamos zpk, de la siguiente forma:
G=zpk(z,p,k);

Indice General Introducci on a MATLAB y SIMULINK - 4


1.2 Races de un polinomio
En el Ejemplo 1 vimos que el polinomio denominador de la funci on transferencia vena
dado por: s
2
+ 4s + 20, y pudimos hallar sus races dado que se trata de una ecuaci on de
segundo orden.
En polinomios de orden superior, la tarea de encontrar sus races no siempre es tan f acil.
Con la funci on de MATLAB roots podemos calcular las races de cualquier polinomio.
Para ejecutar dicha funci on tenemos que ingresar el polinomio, como vector, recordando
que los polinomios se ingresan en la primer componente el t ermino de mayor orden y luego
en forma descendente separados por coma o un espacio.
Ejemplo 2. Consideremos el siguiente polinomio:
P = s
4
+4s
3
+4s
2
+ s +20
Ingresamos el polinomio p=[1 4 4 1 20] y luego:
r=roots(p);
En lugar de hacer la operaci on en dos pasos, podemos hacerlo solo en uno; si tipeamos
r=roots([1 4 4 1 20]) obtenemos el mismo resultado Las cuatro races del polinomio
anterior que surgen de MATLAB son: 2.6445 1.2595j y 0.6545 1.3742j.
Si el caso es al rev es, es decir, tengo las races y quiero conocer el polinomio, el comando
poly es el que se utilizaremos. Siguiendo con el mismo ejemplo, supongamos que lo que
tenemos son las races p
1,2
= 2.6445 1.2595j y p
3,4
= 0.6545 1.3742j. Entonces el
polinomio al que le corresponden esas races es:
P=poly([p1,p2,p3,p4]);
Notemos que el polinomio P que obtuvimos es m onico; si quisi eramos cualquier otro,
deberamos multiplicar a P por el coeciente principal. Otra cosa a tener en cuenta es que
siempre que pongamos una raz compleja debemos poner su conjugada.
1.3 Desarrollo en fracciones simples
Cuando analizamos un sistema de control, por lo general disponemos de su funci on trans-
ferencia a lazo cerrado G(s), donde G(s) =
Y(s)
R(s)
. Con lo que podemos escribir la salida en
funci on de la transferencia y la entrada: Y(s) = G(s) R(s).
Si dese aramos conocer la respuesta temporal g(t) del sistema cuando lo excitamos con
una se nal de entrada r(t), debemos calcular la transformada inversa de Laplace, es decir
g(t) = L
1
{Y(s)} = L
1
{G(s) R(s)}. Como sabemos, es m as sencillo de antitransformar
cuando se trata de un cociente de polinomios, dado que si lo expresamos en fracciones
simples podemos utilizar una tabla de transformadas de Laplace.
Ejemplo 3. Supongamos que tenemos la siguiente funci on transferencia:
G(s) =
16s +16
(s +2)(s +4)
y que R(s) =
1
s

Indice General Introducci on a MATLAB y SIMULINK - 5


Como las races del denominador sor reales y distintas, el m etodo de desarrollo en frac-
ciones simples nos permite escribir a G(s) R(s) de la siguiente manera:
16s +16
s(s +2)(s +4)
=
A
s
+
B
s +2
+
C
s +4
Ahora podemos calcular c(t) se la siguiente forma:
c(t) = L
1

A
s
+
B
s +2
+
C
s +4

= L
1

A
s

+L
1

B
s +2

+L
1

C
s +4

= A + Be
2t
+ Ce
4t
Para calcular los valores de A, B y C lo hacemos mediante la f ormula de residuos, dado
que en este ejemplo los polos son de primer orden, resulta que
Res{p} = lim
sp
(s p)F(s)
donde p es el polo para el cual se est a calculado el residuo. Veamos como sera en este
ejemplo:
A = lim
s0
(s)
16s +16
s(s +2)(s +4)
=
16(0) +16
(0 +2)(0 +4)
= 2
B = lim
s2
(s +2)
16s +16
s(s +2)(s +4)
=
16(2) +16
(2)(2 +4)
= 4
C = lim
s4
(s +4)
16s +16
s(s +2)(s +4)
=
16(4) +16
(4)(4 +2)
= 6
Con estos residuos, queda determinada la salida como: c(t) = 2 +4e
2t
6e
4t
En general, estos c alculos pueden tornarse muy complicados de realizar a mano. Veamos
como se simplican utilizando la funci on MATLAB residue. Ingresemos nuevamente los
polinomios numerador y denominador de la misma forma como lo venimos haciendo hasta
ahora. Ingresemos ahora la sentencia:
[res,p]=residue(num,den);
Esta funci on nos devuelve dos par ametros vectoriales: en la variable res aparecen los
residuos correspondientes a los polos que guran en la variable p, es decir, el primer resid-
uo corresponde al primer polo y as sucesivamente.
Si la funci on transferencia resulta ser propia, es decir que el grado del numerador es igual
al del denominador, podemos a nadir una par ametro m as al argumento del lado izquierdo,
que lo podemos llamar k. Veamos como sera esto mediante otro ejemplo:
Ejemplo 4. Supongamos que queremos hallar f (t) siendo:
F(s) =
2s
3
+5s
2
+3s +6
s
3
+6s
2
+11s +6
f (t) = L
1
{F(s)}

Indice General Introducci on a MATLAB y SIMULINK - 6


Si aplicamos el comando:
[res,p,k]=residue(num,den);
y si armamos, como lo hicimos anteriormente, la funci on desarrollada en fracciones sim-
ples, el t ermino independiente es el que aparece el la variable k. Por lo tanto F(s) =
6
s+3
+
4
s+2
+
3
s+1
+2, de donde ahora calcular la f (t) resulta muy sencillo.
Si ahora nuestro inter es es el inverso, es decir que tenemos una funci on escrita en frac-
ciones simples y quisi eramos obtener la funci on como cociente de polinomios, analticamente
deberamos sacar com un denominador y hacer todas las cuentas correspondientes. Esto re-
sulta inmediato con el comando de MATLAB:
[num,den]=residue(res,p,k);
1.4 Funci on transferencia a lazo cerrado
Ejemplo 5. Supongamos que disponemos del sistema de la Figura 1 donde G
1
(s) = 0.4;
G
2
(s) =
100
s(s+2)
; H
2
(s) =
s
s+20
y H
1
(s) = 1; y pretendemos hallar la funci on transferencia a
lazo cerrado G(s) =
Y(s)
R(s)
. Si aplicamos reducci on de bloques, o resolviendo el diagrama de
l l - -

-
6
- -
6
H
1
(s)

H
2
(s)
G
2
(s)
R(s) Y(s) E(s) V(s)
G
1
(s)
Figura 1: Diagrama de bloques
ujo y aplicando Mason, obtenemos:
G(s) =
40s +800
s
3
+22s
2
+180s +800
En MATLAB la funci on transferencia a lazo cerrado se puede calcular de dos formas:
Utilizando SIMULINK (lo veremos m as adelante).
Utilizando las funciones de MATLAB series, parallel, feedback y cloop.
Para calcular la funci on transferencia a lazo cerrado G(s) sigamos los siguientes pasos:
1. Denimos los numeradores y denominadores de las funciones transferencia de cada
bloque de la siguiente forma:
numg1=0.4; deng1=1;
numg2=100; deng2=[1 2 0];
numh2=[1 0]; denh2=[1 20];

Indice General Introducci on a MATLAB y SIMULINK - 7


2. Calculamos la funci on transferencia de V(s) a Y(s):
[numvc,denvc]=feedback(numg2,deng2,numh2,denh2,-1);
3. Ahora calculamos la funci on transferencia de E(s) a Y(s) con:
[numec,denec]=series(numg1,deng1,numvc,denvc);
4. Por ultimo calculamos el lazo cerrado:
[num, den]=cloop(numec,denec,-1);
Lo que obtuvimos son los vectores numerador y denominador de la funci on transferen-
cia por separado. Recordemos que para ingresarla como funci on de transferencia a MAT-
LAB, debemos utilizar tf.
1.5 Respuesta al impulso
Ahora que ya sabemos como pasar de la respuesta temporal a Laplace, veriquemos que
la respuesta al impulso de la transformada de Laplace coincide con la respuesta temporal.
Para ello utilizaremos el comando de MATLAB impulse.
Ejemplo 6. Supongamos que tenemos una funci on transferencia de la siguiente forma:
Y(s) =
1
(s + a)(s + b)
; donde a = 1, b = 2
Si calculamos ahora la antitransformada, desarrollando en fracciones simples como en la
secci on 1.3, resulta que y(t) = e
t
e
2t
. Ingresemos los vectores numerador y denomi-
nador y luego ejecutemos el comando:
impulse(num,den);
Veremos que este comando devuelve el gr aco de la Figura 2 Como podemos ver, solo
nos muestra los primeros 6 segundos de la respuesta. Si quisi eramos que nos mostrara 12
segundos, debemos denir un vector de tiempo. Para ello ingresemos, por ejemplo,
t=0:0.1:12;
El vector t tendr a como primer elemento el 0 y como ultimo al 12. Cada elemento estar a a
una distancia de 0.1 de su consecutivo. Si ahora introducimos este par ametro en el coman-
do impulse(num,den,t), el gr aco mostrar a los primeros 12 segundos de la respuesta
al impulso.
Notemos que este comando no fue asignado a ninguna variable; podramos asignarle
un vector, es decir y=impulse(num,den,t), y as tendramos los valores de la salida
de la respuesta al impulso en dicho vector. Podramos tambi en gracar este vector con el
comando plot(t,y), comando que veremos en la secci on 1.7.

Indice General Introducci on a MATLAB y SIMULINK - 8


Time (sec.)
A
m
p
l
i
t
u
d
e
Impulse Response
0 1 2 3 4 5 6
0
0.05
0.1
0.15
0.2
0.25
From: U(1)
T
o
:

Y
(
1
)
Figura 2: Respuesta al impulso
Dado que la funci on transferencia de un sistema lineal invariante en el tiempo se de-
ne como la transformada de Laplace de la respuesta al impulso cuando todas las condi-
ciones iniciales son nulas, comparemos el resultado obtenido con el que resultara si cal-
cul aramos la respuesta temporal. Para ello utilizaremos el mismo vector temporal t, y
la instrucci on f=exp(-t)+exp(-2*t). Ahora podemos comparar los valores obtenidos
desde la respuesta al impulso con los obtenidos desde la respuesta temporal (por ejemplo,
rest andolos).
1.6 Respuesta al escal on
De la misma forma que en la secci on anterior, podramos querer gracar la respuesta al es-
cal on unitario. MATLAB posee un comando, llamado step, para calcular la salida temporal
cuando la entrada se trata de un escal on unitario. Lo unico que necesita este comando es el
numerador y el denominador de la funci on transferencia.
step(num,den);
y=step(num,den);
Si utilizamos el comando sin asignarle la salida a ninguna variable, MATLAB abre una
ventana gr aca mostrando el gr aco de la salida a la excitaci on escal on unitario, de la
misma forma que antes. Sin embargo,al igual que vimos en el comando impulse, cuando
este es asignado a una variable, los valores obtenidos se guardan en el vector y.
Ejemplo 7. Calculemos la respuesta al escal on unitario de la funci on transferencia:
G(s) =
Y(s)
R(s)
=
4
s
2
+0.8s +4
Si ingresamos el comando step(num,den), veremos un gr aco similar al que podemos
observar en la Figura 3.

Indice General Introducci on a MATLAB y SIMULINK - 9


Time (sec.)
A
m
p
l
i
t
u
d
e
Step Response
0 5 10 15
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
From: U(1)
T
o
:

Y
(
1
)
Figura 3: Respuesta al escal on unitario
Si ahora queremos la respuesta a una entrada rampa unitaria, MATLAB no posee ning un
comando que lo resuelva. Por lo que veremos c omo con el comando step podemos obtener
una rampa. Si seguimos con el ejemplo anterior y excitamos al sistema con r(t) = t, es decir
que R(s) =
1
s
2
, tenemos lo siguiente:
Y(s) =

4
s
2
+0.8s +4

1
s
2
Y(s) =

4
s
3
+0.8S
2
+4s

1
s
Por lo que utilizando como denominador de la funci on transferencia al polinomio s
3
+
0.8s
2
+ 4s, es decir den=[1 0.8 4 0], y calculando la respuesta al escal on unitario con
step(num,den), obtenemos la respuesta a la rampa unitaria que se muestra en la Figura
4.
1.7 Gr acos
Como vimos en secciones anteriores los comandos step e impulse gracan las respuestas
al escal on y al impulso respectivamente, pero ahora vamos a introducir algo m as general.
Para gracar cualquier funci on en general utilizaremos el comando plot, que s olo necesita
denir el vector a gracar en la forma b asica
plot(vector);
Se obtiene un gr aco donde el eje de abscisas ser a la posici on del elemento del vector y la
ordenada el valor que tiene el vector en dicha posici on. En el ejemplo 6, guardamos en el
vector y los valores de la salida de la respuesta al impulso. Si ahora ingresamos plot(y),
en lugar de tener segundos en el eje de abscisas tendremos la cantidad de elementos de ese
vector. Si ingresamos plot(t,y), ahora el eje de abscisas corresponder a al vector tempo-
ral ya denido e ir a desde t = 0 a t = 12, que es como lo tenamos denido. Graquemos

Indice General Introducci on a MATLAB y SIMULINK - 10


Time (sec.)
A
m
p
l
i
t
u
d
e
Step Response
0 5 10 15 20 25
0
5
10
15
20
25
From: U(1)
T
o
:

Y
(
1
)
Figura 4: Respuesta a la rampa unitaria
entonces los valores guardados en el vector f . Estos valores corresponden a la respuesta
temporal, por lo que el gr aco deber a ser el mismo. Si ingresamos plot(t,f), obten-
dremos el gr aco de la Figura 5
Como podemos ver, no hay casi diferencias con la gura 2, excepto por el ttulo y los
nombres de los ejes que el comando impulse(num,den) pone autom aticamente. Veamos
que no es difcil si se lo queremos agregar a un gr aco, para ello utilizaremos las sentencias
title, xlabel y ylabel. Estos comandos se utilizan luego de ingresar el comando
plot, ya que tanto el ttulo, como los nombres de los ejes, se escribir an el la gura que se
encuentre abierta:
title(Respuesta al Impulso);
xlabel(Tiempo(seg.));
ylabel(Salida c(t));
Notemos que el texto que queremos que aparezca est a escrito entre comillas simples.
Los comandos anteriores, pueden ser tambi en utilizados con step y impulse, aunque
cuando son utilizados en estos comandos, el ttulo y el nombre de los ejes que trae la fun-
ci on por defecto tambi en aparecen. Otros comandos que pueden ser utiles a la hora de
trabajar con gr acos son grid y text, que se utilizan para agregar una grilla y agregar
texto respectivamente. El comando text se utiliza de la misma forma que que title, es
decir, el texto que aparecer a ser a el que se encuentra escrito entre las comillas simples , pero
antes debemos ingresar las coordenadas (x, y) donde queremos que aparezca el texto. El
comando grid, se usa sin par ametros. Veamos el siguiente ejemplo:
Ejemplo 8. Supongamos que tenemos la funci on transferencia de la Figura 1, que ya la cal-
culamos con MATLAB en el Ejemplo 2.2. Abramos un archivo nuevo e ingresemos lo sigu-
iente:

Indice General Introducci on a MATLAB y SIMULINK - 11


0 2 4 6 8 10 12
0
0.05
0.1
0.15
0.2
0.25
Figura 5: Respuesta temporal del ejemplo 6
num=[40 800];
den[1 22 180 800];
t=0:0.01:2;
y=step(num,den,t);
plot(t,y);
title(Respuesta al escalon unitario);
xlabel(Tiempo (seg.));
ylabel(Salida del sistema);
text(0.5,1.1,maximo valor);
grid;
Si ejecutamos el programa vamos a obtener el gr aco de la Figura 6.
Supongamos ahora que queremos gracar en la misma gura dos o m as gr acos para
poder compararlas. Esto es posible utilizando el comando hold on - hold off, que
mantiene la gura y superpone el siguiente gr aco sobre la misma gura, como veremos
en el siguiente ejemplo.
Ejemplo 9. Supongamos que queremos gracar tres sinusoides con frecuencias diferentes,
ingresemos en un archivo nuevo:
t=0:pi/20:2*pi;
y1=sin(t);
y2=sin(t-pi/2);
y3=sin(t-pi);
plot(t,y1);
hold on;
plot(t,y2);
plot(t,y3);
hold off;

Indice General Introducci on a MATLAB y SIMULINK - 12


0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
Respuesta al escaln
Tiempo (seg.)
S
a
l
i
d
a

d
e
l

s
i
s
t
e
m
a
maximo valor
Figura 6: Respuesta al escal on del ejemplo
Luego de ejecutar estas lneas veremos que en la gura que resulta, aparecen 3 gr acas
en el mismo color, e imposible de identicar cual corresponde a cada una porque ambas se
encuentran gracadas con el mismo tipo de linea y el mismo color. Para ello veamos un
par ametro del tipo string que podemos agregar al comando plot para especicaciones del
estilo del gr aco. Los par ametros que guran en la Tabla 2 son para elegir el color de la
lnea, los que se encuentran en la Tabla 3 son para elegir el estilo de la lnea y los que se
encuentran el la Tabla 4 son para elegir el tipo de marca que aparecer a sobre los puntos del
vector gracado.
Espec. Color
r rojo
b azul (por defecto)
w blanco
g verde
c cian
m magneto
y amarillos
k negro
Tabla 2: Especicadores de color
Ahora especiquemos cada uno de los plot con un estilo diferente, por ejemplo, en
lugar del comando plot(t,y) escribamos:
plot(t,y1,-.rx);
plot(t,y2,--mo);
plot(t,y3,:bs);

Indice General Introducci on a MATLAB y SIMULINK - 13


Espec. Estilo de linea
- linea s olida (por defecto)
linea rayada
: linea punteada
-. linea punto-raya
Tabla 3: Especicadores de linea
Espec. Estilo de marca
+ signo m` as
o crculo
punto
asterisco
s cuadrado
d diamante
x cruz
p estrella de 5 puntas
h estrella de 6 puntas
Tabla 4: Especicadores de marca
Si corremos nuevamente el archivo veremos que hay diferencia entre una funci on y
la otra, pero seguimos sin saber cu al corresponde a qu e funci on. Para ello utilicemos el
comando legend, que pone la leyenda que queramos a cada gr aco. Es decir, escribamos
como ultima linea:
legend(sin(t), sin(t-pi/2),sin(t-pi));
Ahora si observamos el gr aco debera ser como el de la Figura 7.
Tambi en podramos querer cada gr aco en una gura diferente. Para ello debemos
ejecutar el comando figure(2) antes de gracar por segunda vez y figure(3) antes
del ultimo gr aco. Estas sentencias se usan sin el comando de hold on - hold off y
lo que hacen es abrir una nueva gura para cada gr aco. Otra opci on v alida para MATLAB,
por ejemplo, es que las tres funciones aparezcan en una sola gura pero las tres gracadas
en forma independiente. Para ello utilicemos subplot(m,n,p), que dividir a a la gura
en m las y n columnas, pero crea una gura en la posici on p. Ingresemos lo siguiente para
ver como funciona:
clf; %borra el grafico actual
subplot(3,1,1);
plot(t,y1,.-r);
title(sin(t));
subplot(3,1,2);
plot(t,y2,--m);
title(sin(t-pi/2));
subplot(3,1,3);
plot(t,y3,:b);

Indice General Introducci on a MATLAB y SIMULINK - 14


0 1 2 3 4 5 6 7
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
sin(t)
sin(tpi/2)
sin(tpi)
Figura 7: Tres gr acos en una misma gura
title(sin(t-pi));
Notemos que con el smbolo %, comentamos texto dentro del archivo. Si ejecutamos
nuevamente el programa, obtenemos lo que se observa en la Figura 8
Con respecto a gr acos, MATLAB posee muchas otras opciones, como gracar en es-
cala logartmica, con loglog, semilogx y semilogy, gr acos en tres dimensiones,
plot3, gr acos de barras, bar, etc. Tambi en permite con el comando print, guardar
el gr aco en un archivo de extensi on, por ejemplopostscript o .jpg, o tambi en lo podemos
imprimir con el mismo comando indicando el nombre de la impresora.
No nos olvidemos que MATLAB cuenta con una ayuda a la cual podemos recurrir en ca-
so de no recordar como se utiliza un comando. Si investigamos un poco el help, podemos
encontrar funciones que resuelven muchas otras cosas interesantes. Invito a que se metan
a conocerlas, como as tambi en a que conozcan las distintas demostraciones que pueden
encontrar si tipean: demo.
2 Introducci on a SIMULINK
Hasta ahora vimos que MATLAB dispone de un entorno de programaci on con lneas de
ordenes, ahora veremos como se puede suplementar utilizando un interfaz de usuario
gr aca llamada SIMULINK. Este entorno nos permite describir gr acamente un sistema
dibujando su diagrama en bloques, que resulta muy conveniente para la simulaci on y
an alisis de sistemas din amicos.
2.1 Acceso y descripci on
Para acceder a SIMULINK, desde la ventana de comandos de MATLAB, tenemos varias op-
ciones: una es escribiendo el comando simulink, de esta forma se abrir a solo una ventana

Indice General Introducci on a MATLAB y SIMULINK - 15


0 1 2 3 4 5 6 7
1
0.5
0
0.5
1
sin(t)
0 1 2 3 4 5 6 7
1
0.5
0
0.5
1
sin(tpi/2)
0 1 2 3 4 5 6 7
1
0.5
0
0.5
1
sin(tpi)
Figura 8: Tres gr acos diferentes en la misma gura
con las libreras disponibles; otra es desde la barra de men u File elegir la opci on New Model,
de esta forma se abren no s olo las libreras sino tambi en el entorno donde vamos a trabajar;
por ultimo, existe un bot on de acceso directo a las libreras tanto en el entorno de trabajo
de MATLAB como en el de SIMULINK.
Una vez abiertas las libreras, lo que encontraremos depende de la versi on de MATLAB
que se encuentre instalada. Nos vamos a referir a la versi on 5.3. Dentro de la librera
Simulink se encuentran los elementos que vamos a utilizar organizados en sublibreras de
acuerdo con su comportamiento. Las sublibreras que aparecen son:
Continous (Bloques para sistemas en tiempo continuo)
Discrete: (Bloques para sistemas en tiempo discretos)
Functions & Tables
Math (Sumadores, Ganancias matriciales o constantes, etc.)
Nonlinear
Signals & Sistems(multeplexores, demultexores, etc.)
Sinks (Gracadores, etc.)
Sources (Varias fuentes de entradas)
Con un doble click sobre la librera podemos visualizar los elementos que posee. Por
ejemplo si ingresamos a Continous, entre los elementos disponibles utilizaremos los sigu-
ientes:
Derivative: bloque derivador, es decir
du
dt
.

Indice General Introducci on a MATLAB y SIMULINK - 16


Integrator: bloque integrador, funci on transferencia
1
s
.
State-Space: bloque para expresar al sistema en modelo de estados.
Transfer Fnc: bloque para expresar al sistema como cociente de polinomios.
Zero-pole: bloque para expresar al sistema con ceros, polos y una ganancia.
2.2 Funci on transferencia a lazo cerrado
En la Secci on 2.2 vimos como podemos calcular la funci on transferencia a lazo cerrado
desde la ventana de comandos. Tomemos el mismo ejemplo para ver como lo hacemos con
SIMULINK, ingresemos el diagrama en bloques como se puede ver en la Figura 9.
1
Out1
s
s+20
Transfer Fcn1
100
s +2s
2
Transfer Fcn
.4
Gain
1
In1
Figura 9: Diagrama en bloques con SIMULINK
Para poder implementar dicho gr aco se procedi o de la siguiente forma:
1. Para insertar un bloque de funci on transferencia, ya sabemos que se encuentra en
Continous, lo tomamos y lo arrastramos hasta la ventana de trabajo de SIMULINK. Si
hacemos doble click sobre el bloque se despliega una ventana de propiedades del
bloque, donde tenemos que ingresar el numerador y el denominador de la misma
forma que lo hacemos desde el entorno de trabajo de MATLAB, es decir entre corchetes
y separado por espacios. Si en lugar de seleccionar el bloque de funci on transferencia
elegimos el bloque de polos y ceros, los par ametros a denir ser an los polos, los ceros
y la ganancia.
2. Para insertar otro bloque igual no es necesario realizar el tem anterior nuevamente,
podemos seleccionar el bloque anterior, haciendo un click con el bot on derecho del
mouse, copiar el bloque y pegarlo donde queramos. Esto mismo se puede hacer sim-
plemente arrastrando el objeto seleccionado con el bot on derecho del mouse. De la
misma forma que antes, ingresamos los par ametros de esta funci on de transferencia.
Para girar el bloque, para que quede mejor orientado para hacer la realimentaci on,
tenemos que seleccionar el objeto, ir a Format de la barra de men u, y seleccionar Flip
Block o simplemente con las teclas ctr-f.
3. El bloque de ganancia lo encontramos en Math, lo mismo que los sumadores. Para
ingresarlos a la gura procedemos de la misma manera, arrastrando el objeto hasta
donde queremos ubicarlo. El sumador, por defecto, viene con dos entradas sumadas,
si hacemos doble click sobre el, podemos no solo cambiar el signo que queramos sino
tambi en agregarle las entradas que queramos, en este caso solo modicamos ++ por

Indice General Introducci on a MATLAB y SIMULINK - 17


+. Otra propiedad que podemos modicar es la forma del icono. Notemos que
cuando hacemos un doble click en cualquier objeto, encontramos una peque na ayuda
en la parte superior de la ventana, esto nos es util para saber con que datos hay que
completar cada campo. Para el bloque de la ganancia, solo ingresamos el valor que
corresponde 0.4.
4. Para unir los bloques solo tenemos que hacer un click en la salida de un bloque y
arrastra el mouse hasta la entrada de otro, cuando soltamos, si la conecci on est a
bien hecha, marcar a una echa negra, en caso de estar uniendo con un nodo, de-
beremos ver un cuadradito negro. Para borrar cualquier elemento, simplemente lo
seleccionamos y con la tecla DEL se elimina.
5. Por ultimo nos falta solo indicar cu al es la entrada y cual es la salida, esto lo hacemos
para poder sacar la transferencia a lazo cerrado, de otra forma no lo pondramos. La
necesidad de marcar la entrada y la salida es para que MATLAB sepa desde donde has-
ta donde vamos a querer la transferencia. Estos bloques los encontramos en Signals &
Systems, se llaman In1 e Out1.
6. Salvemos el archivo, por ejemplo con el nombre FuncTrans, si ingresamos desde la
ventana de comando de MATLAB las sentencias
[A,B,C,D]=linmod(Functtrans);
[num,den]=ss2tf(A,B,C,D);
obtenemos la funci on transferencia. La primer orden produce un modelo de estado
del sistema de bloques, tomando la entrada y la salida que seleccionamos; y la segun-
da sentencia convierte ese modelo de estados en el numerador y el denominador de
la funci on transferencia. En este caso el resultado es
num=[40 800]
den=[1 22 180 800]
que si los comparamos con los obtenidos antes son id enticos.
2.3 Respuesta al Escal on
Siguiendo con el sistema de la Figura 9, nos interesa saber ahora c omo responde a una
entrada escal on unitario. Como tenemos la funci on transferencia a lazo cerrado, podramos
utilizar el comando step(num,den) desde la ventana de comandos para obtener la salida.
Pero veamos c omo lo podemos hacer desde SIMULINK. Para ello cambiemos el bloque
de entrada por un bloque de entrada escal on, que lo encontramos el la librera Sources
bajo el nombre Step. A dicho bloque podemos modicarle algunos par ametros como el
tiempo en que se realizar a el escal on, el valor inicial y nal de escal on y en caso de que lo
necesitemos discreto, el tiempo de muestreo. Para nuestro ejemplo, elegimos como valor
inicial 0, valor nal 1 y tiempo de realizaci on del escal on 0seg.. Para poder visualizar la
salida, debemos conectar a la salida un osciloscopio. Este bloque lo encontramos en Sinks
bajo el nombre Scope. Luego de agregados estos bloques, el sistema resultante es el que
observamos en la Figura 10.

Indice General Introducci on a MATLAB y SIMULINK - 18


s
s+20
Transfer Fcn1
100
s +2s
2
Transfer Fcn
Step Scope
.4
Gain
Figura 10: Sistema excitado con un escal on
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
Figura 11: Se nal que muestra el osciloscopio

Indice General Introducci on a MATLAB y SIMULINK - 19


Si hacemos doble click sobre el bloque Scope, veremos la salida del sistema como
en la Figura 11. Este bloque tambi en posee algunas propiedades que podemos modicar,
entre ellas est an los valores de los ejes, el ttulo y la escala. Cuenta tambi en con Zoom
para visualizar alguna zona en detalle. Otra propiedad es la posibilidad de asignarle los
datos que posee a una variable. Luego desde la ventana de comandos podemos visualizar
los valores o gracarlos dado que SIMULINK guarda tambi en en una variable el vector
temporal que utiliza en la simulaci on, dicha variable se llama tout.
Si en lugar de la respuesta al escal on unitario queremos la respuesta al impulso, dado
que SIMULINK no posee un bloque generador de impulsos, debemos generarlo nosotros
como resta de dos escalones.
2.4 Utilizaci on de par ametros ya denidos
SIMULINK nos permite utilizar variables denidas ya sea en la ventana de comando de
MATLAB, como tambi en en archivos del editor. Para ello debemos denir las variables con
anticipaci on y luego utilizarlas dentro de los bloques con el mismo nombre. De esta forma,
SIMULINK identica el valor de dicho par ametro y es el que utiliza en los c alculos. Esto
resulta apropiado cuando queremos utilizar un mismo dise no para distintos valores de
par ametros, o nos permitir a utilizar el mismo sistema cada vez que nos encontremos con
problemas similares.
Curso de Programaci

on en Matlab y Simulink
Alberto Herreros (albher@eis.uva.es)
Enrique Baeyens (enrbae@eis.uva.es)
Departamento de Ingeniera de Sistemas y Automatica (DISA)
Escuela de Ingenieras Industriales (EII)
Universidad de Valladolid (UVa)
Curso 2010/2011
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 1/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 2/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 3/215
Qu

e es MATLAB?
Es un lenguaje de alto nivel para computaci on e ingeniera. Integra
computaci on, visualizaci on y programaci on.
Aplicaciones tpicas de MATLAB son:
Matematicas y computacion
Desarrollo de algoritmos
Modelado, simulaci on y prototipado
Analisis de datos, exploraci on y visualizaci on
Gracos cientcos y de ingeniera.
Desarrollo de aplicaciones
Matlab es un sistema interactivo cuyo elemento basico son las matrices y
no requiere dimensionamiento.
El nombre proviene de laboratorio de matrices.
Originalmente fue escrito en FORTRAN y haca uso de las libreras
LINPACK y EISPACK
Las ultimas versiones estan desarrolladas en C y utilizan las libreras
LAPACK y BLAS.
Sobre la base de MATLAB se han construido conjuntos de funciones
especcas para diferentes problemas, denominadas toolboxes.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 4/215
Formas de introducir matrices en MATLAB
Lista explcita de elementos.
Desde un chero de datos externo.
Utilizando funciones propias.
Creando un chero .m
Comenzaremos introduciendo manualmente la matriz de D urer.
Para ello utilizamos las siguientes reglas:
Separar elementos de una la con espacios o comas.
Usar punto y coma; para indicar nal de la.
Incluir la lista completa de elementos dentro de corchetes, [ ].
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 5/215
Trabajando con matrices
Para introducir la matriz de D urer hacemos:
A = [ 16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
Como resultado se obtiene
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Una vez introducida una matriz, queda guardada en el entorno de
trabajo de MATLAB.
La matriz A es un cuadrado magico: Todas sus las, columnas y
diagonales suman lo mismo. Para comprobarlo hacemos
sum(A)
ans =
34 34 34 34
El comando sum(A) calcula la suma de las columnas de la matriz
A, obteniendose un vector de dimension el n umero de columnas.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 6/215
Trabajando con matrices
Para calcular la suma de las las, podemos calcular la transpuesta
de la matriz.
A
obteniendo
ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
la suma de las las, en formato vector columna es
sum(A )
ans =
34
34
34
34
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 7/215
Trabajando con matrices
La funcion diag permite obtener un vector con los elementos de la
diagonal principal.
di ag (A)
Se obtiene
ans =
16
10
7
1
y la suma de los elementos de la diagonal principal es
sum( di ag (A) )
obteniendose
ans =
34
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 8/215
Trabajando con matrices
La antidiagonal de una matriz no suele ser muy importante, por lo
que no hay ninguna funcion para extraerla. No obstante, puede
invertirse la disposicion de las columnas de la matriz con la funcion
fliplr, as la suma de la antidiagonal es
sum( di ag ( f l i p l r (A) ) )
ans =
34
Otra forma de obtener la suma de los elemento de la antidiagonal
es sumando elemento a elemento.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 9/215
Trabajando con matrices
Un elemento de la matriz A se referencia como A(i,j), siendo i la
la y j la columna. La suma de la antidiagonal podra haberse
obtenido tambien como sigue:
A( 1 , 4)+A( 2 , 3)+A( 3 , 2)+A( 4 , 1)
ans =
34
Tambien es posible acceder a cada elemento de una matriz con un
solo ndice, as A(k) corresponde al elemento k de un vector
cticio que se formara colocando las columnas de la matrix A una
debajo de otra: Comprobar que A(4,2) y A(8) corresponden al
mismo elemento de la matriz A.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 10/215
Trabajando con matrices
Si se intenta acceder a un elemento que excede las dimensiones de
la matriz, se obtiene un error
t = A( 4 , 5)
I ndex exceeds mat r i x di me ns i ons .
Si se inicializa un elemento que excede las dimensiones de la
matriz, la matriz se acomoda en dimension al nuevo elemento, con
el resto de nuevos elementos inicializados a cero.
X = A;
X( 4 , 5) = 17
X =
16 3 2 13 0
5 10 11 8 0
9 6 7 12 0
4 15 14 1 17
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 11/215
El operador :
El operador : es uno de los mas importantes de MATLAB. Tiene
diferentes utilidades. La expresion
1: 10
indica un vector que contiene los n umeros enteros desde 1 hasta
10.
1 2 3 4 5 6 7 8 9 10
Para obtener un espaciado no unitario, se utiliza un incremento.
100: 7: 50
es
100 93 86 79 72 65 58 51
y
0: pi /4: pi
es
0 0. 7854 1. 5708 2. 3562 3. 1416
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 12/215
El operador :
Cuando el operador : aparece en los subndices de una matriz se
reere a las las o columnas y permite extraer submatrices. Por
ejemplo, A(1:k,j) es el vector formado por los primeros k
elementos de la columna j de la matriz A y
sum(A( 1 : 4 , 4 ) )
calcula la suma de todos los elementos de la cuarta columna. Otra
forma mas compacta y elegante de hacer lo mismo es
sum(A( : , end ) )
los dos puntos : (sin otros n umeros) signican todas las las y end
se reer a la ultima columna.
Pregunta: Que esta calculando la siguiente expresion?
sum(A( end , : ) )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 13/215
La funci

on magic
Matlab dispone de una funcion magic que permite calcular
cuadrados magicos
Haciendo
B = magi c ( 4)
B =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
La matriz obtenida es casi la misma que la matriz de D urer, solo se
diferencia en que las columnas 2 y 3 estan intercambiadas. Se pude
obtener de nuevo la matriz de D urer haciendo la siguiente
operacion
A = B( : , [ 1 3 2 4 ] )
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 14/215
Expresiones
Al igual que muchos otros lenguajes de programacion, MATLAB
dispone de expresiones matematicas, pero al contrario que en la
mayora de los lenguajes de programacion, estas expresiones hacen
referencia a matrices.
Los bloques constructivos de las expresiones son
Variables
N umeros
Operadores
Funciones
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 15/215
Variables
MATLAB no requiere ning un tipo de declaraci on o indicaci on de la
dimensi on. Cuando MATLAB encuentra un nuevo nombre de variable la
crea automaticamente y reserva la cantidad de memoria necesaria. Si la
variable ya existe, MATLAB cambia su contenido y si es necesario
modica la reserva de memoria.
Por ejemplo, la expresi on
num est = 15
crea una matriz 1 por 1 llamada num_est y almacena el valor 25 en su
unico elemento.
Los nombres de variables deben comenzar siempre por una letra y pueden
incluir otras letras, n umeros y el smbolo de subrayado, hasta un total de
31 caracteres.
Se distingue entre may usculas y min usculas. A y a no son la misma
variable.
Para ver el contenido de una variable, simplemente escribir el nombre de
la variable.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 16/215
N

umeros
MATLAB utiliza notaci on decimal convencional, con punto decimal
opcional y signo + o -
Es posible utilizar notaci on cientca. La letra e especica un factor de
escala de potencia de 10.
Los n umeros imaginarios puros se especican con la letra i o j
Los siguientes ejemplos son todos n umeros validos en MATLAB
3 99 0. 0001
9. 6397238 1. 60210 e20 6. 02252 e23
1 i 3.14159 j 3 e 5 i
Internamente, los n umeros se almacenan en formato largo utilizando la
norma IEEE de punto otante. La precisi on es aproximadamente de 16
cifras decimales signicativas y el rango esta entre 10
308
y 10
+308
.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 17/215
Operadores
Las expresiones de MATLAB utilizan los operadores aritmeticos
usuales, as como sus reglas de precedencia
+ Suma
- Resta
* Producto
/ Division
\ Division por la izquierda
(se explicara)
^ Potencia
Transposicion y conjugacion compleja
( ) Orden de evaluacion
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 18/215
Funciones
MATLAB proporciona un gran n umero de funciones matematicas
elementales, por ejemplo, abs, sqrt, exp, sin, cos, etc.
Por defecto, MATLAB utiliza n umeros complejos:
La raz cuadrada o el logaritmo de un n umero negativo no producen error,
sino que dan como resultado u n umero complejo.
Los argumentos de las funciones pueden ser n umeros complejos
MATLAB proporciona tambien funciones avanzadas: Funciones de Bessel
o funciones gamma.
Una lista de todas las funciones elementales puede obtenerse con el
comando
he l p e l f u n
Funciones mas avanzadas y funciones de matrices se obtienen con
he l p s pe c f un
he l p el mat
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 19/215
Funciones
Algunas funciones estan compiladas con el n ucleo de MATLAB y son muy
rapidas y ecientes. Ej. sqrt, sin
Otras funciones estan programadas en lenguaje de MATLAB (cheros
m). Pueden verse y modicarse
Algunas funciones proporcionan el valor de ciertas constantes utiles.
pi 3.14159265
i

1
j

1
eps Precisi on relativa de punto otante 2
52
realmin N umero en punto otante mas peque no 2
1022
realmax N umero en punto otante mas grande (2 )2
+1023
Inf Innito
NaN Not-a-Number (no es un n umero)
Innito se obtiene al dividir un n umero no nulo por cero, o como
resultado de evaluar expresiones matematicas bien denidas.
NaN se obtiene al tratar de evaluar expresiones como 0/0 o Inf-Inf que no
tienen valores bien denidos
Los nombres de las funciones no estan reservados. Puede denirse una
variable eps=1e-6 y utilizarla. Para restaurar su valor original
c l e a r eps
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 20/215
Expresiones
Ya se han visto varios ejemplos de expresiones. Algunos otros
ejemplos son los siguientes:
r ho = (1+s q r t ( 5) ) /2
r ho =
1. 6180
a = abs (3+4 i )
a =
5
z = s q r t ( b e s s e l k ( 4/3 , rhoi ) )
z =
0.3730+ 0. 3214 i
huge = exp ( l og ( r eal max ) )
huge =
1. 7977 e+308
t oobi g = pi huge
t oobi g =
I n f
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 21/215
Funciones para crear matrices
MATLAB proporciona cuatro funciones para generar matrices
zeros Matriz de ceros
ones Matriz de unos
rand Matriz de elementos uniformemente distribuidos
randn Matriz de elementos normalmente distribuidos
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 22/215
Funciones para crear matrices
Ejemplos
Z = z e r os ( 2 , 4)
Z =
0 0 0 0
0 0 0 0
F = 5 ones ( 3 , 3)
F =
5 5 5
5 5 5
5 5 5
N = f i x (10 r and ( 1 , 10) )
N =
4 9 4 4 8 5 2 6
8 0
R = r andn ( 4 , 4)
R =
1. 0668 0. 2944 0.6918 1.4410
0. 0593 1.3362 0. 8580 0. 5711
0.0956 0. 7143 1. 2540 0.3999
0.8323 1. 6236 1.5937 0. 6900
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 23/215
El comando load
El comando load permite leer cheros binarios que contienen matrices
generadas en sesiones anteriores de MATLAB
Tambien permite leer cheros de texto que contienen datos.
El chero debe estar organizado como una tabla de numeros separados
por espacios, una lnea por cada la, e igual n umero de elementos en
cada la.
Ejemplo: Crear utilizando un editor de texto un chero llamado
magik.dat que contenga los siguientes datos
16. 0 3. 0 2. 0 13. 0
5. 0 10. 0 11. 0 8. 0
9. 0 6. 0 7. 0 12. 0
4. 0 15. 0 14. 0 1. 0
El comando
l oad magi k . dat
crea una variable llamada magik conteniendo la matriz.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 24/215
Ficheros m
Los cheros m son cheros de texto que contienen c odigo de MATLAB.
Para crear una matriz haciendo uso de un chero m, editar un chero
llamado magik.m con el siguiente texto
A = [ . . .
16. 0 3. 0 2. 0 13. 0
5. 0 10. 0 11. 0 8. 0
9. 0 6. 0 7. 0 12. 0
4. 0 15. 0 14. 0 1. 0 ] ;
Ejecutar ahora el comando
magi k
Comprobar que se ha creado la matriz A.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 25/215
Concatenaci

on
Es el proceso de unir dos o mas matrices para formar otra matriz de
mayor dimensi on
El operador concatenaci on es []
Ejemplo:
B = [ A A+32; A+48 A+16]
B =
16 3 2 13 48 35 34 45
5 10 11 8 37 42 43 40
9 6 7 12 41 38 39 44
4 15 14 1 36 47 46 33
64 51 50 61 32 19 18 29
53 58 59 56 21 26 27 24
57 54 55 60 25 22 23 28
52 63 62 49 20 31 30 17
Comprobar que las columnas de esta matriz suman todas lo mismo, pero
no ocurre lo mismo con sus las.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 26/215
Borrado de filas y columnas
Se pueden borrar las y columnas utilizando el operador [].
es la matriz vaca (concatenaci on de nada).
El proceso es sustituir una la o una columna por la matriz vaca [].
Ejemplo: Borrado de la segunda columna de una matriz
X = A;
X( : , 2 ) = [ ]
X =
16 2 13
5 11 8
9 7 12
4 14 1
No se pueden borrar elementos, por que el resultado ya no sera una
matriz
X( 1 , 2) = [ ]
producira un error.
Sin embargo, utilizando un unico subndice es posible borrar elementos,
aunque el resultado ya no sera una matriz, sino un vector.
X( 2 : 2 : 1 0 ) = [ ]
X =
16 9 2 7 13 12 1
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 27/215
El comando format
Este comando controla el formato numerico de los resultados que muestra
MATLAB.
Afecta s olo a la presentaci on en pantalla, no al formato interno ni a los
calculos.
Ejemplos:
x = [ 4/3 1. 2345 e 6]
f or mat s hor t
1. 3333 0. 0000
f or mat s hor t e
1. 3333 e+000 1. 2345 e006
f or mat s hor t g
1. 3333 1. 2345 e006
f or mat l ong
1. 33333333333333 0. 00000123450000
f or mat l ong e
1. 333333333333333 e+000 1. 234500000000000 e
006
f or mat l ong g
1. 33333333333333 1. 2345 e006
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 28/215
El comando format
f or mat bank
1. 33 0. 00
f or mat r a t
4/3 1/810045
f or mat hex
3 f f 5555555555555 3 eb4b6231abf d271
Ademas format compact suprime espacios y lneas en blanco. Para
obtener mas control sobre la presentacin en pantalla se pueden utilizar
las funciones sprintf y fprintf.
Para que no aparezca el resultado de un calculo en la pantalla, se utiliza ;
A = magi c ( 100) ;
Para dividir expresiones que no caben en una unica lnea, se usan tres
puntos ...
s = 1 1/2 + 1/3 1/4 + 1/5 1/6 + 1/7 . . .
1/8 + 1/9 1/10 + 1/11 1/12;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 29/215
Comandos de edici

on en pantalla
ctrl-p Comando anterior
ctrl-n Comando siguiente
ctrl-b Caracter atras
ctrl-f Caracter adelante
ctrl- ctrl-r Palabra adelante
ctrl- ctrl-l Patabra atras
home ctrl-a Ir a comienzo de lnea
end ctrl-e Ir a n de lnea
esc ctrl-u Borrar lnea
del ctrl-d Borrar caracter actual
backspace ctrl-h Borrar caracter anterior
ctrl-k Borrar hasta n de lnea
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 30/215
Gr

aficos
MATLAB dispone de recursos para mostrar vectores y matrices en
gracos, as como para incluir texto en los gracos e imprimirlos.
La funcion basica de creaci on de gracos es plot.
Si y es un vector, plot(y) dibuja un graco de los valores de los
elementos de y frente a sus ndices.
Si x e y son dos vectores de igual tama no, plot(x,y) dibuja un graco
de los valores de los elementos de y frente a los de x.
Ejemplo:
t = 0: pi /100: 2 pi ;
y = s i n ( t ) ;
p l o t ( t , y )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 31/215
Gr

aficos
Se pueden crear gracos m ultiples con una unica llamada a plot.
MATLAB elige los colores automaticamente siguiendo una tabla
predenida.
Ejemplo:
y2 = s i n ( t . 25) ;
y3 = s i n ( t . 5) ;
p l o t ( t , y , t , y2 , t , y3 )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 32/215
Gr

aficos
Se puede especicar el color, tipo de lnea, y marcas con el comando
p l o t ( x , y , c o l o r s t y l e ma r k e r )
color_style_marker es una cadena de tres caracteres, que indican
respectivamente el color, tipo de lnea y marca.
La letra que indica el color puede ser: c, m, y, r, g, b, w,
k, que indican cyan, magenta, amarillo, rojo, verde, azul, blanco y
negro.
La letra que indica el tipo de lnea puede ser: - para lnea continua,
-- para lnea de trazos, : para lnea de puntos, -. para punto y
raya, none sin lnea.
Las marcas mas comunes son +, o, * y x.
Ejemplo: El comando
p l o t ( x , y , y:+ )
dibuja el graco en lnea continua amarilla y situa marcas + en cada
punto.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 33/215
Ayuda en MATLAB
Existen varias formas de obtener ayuda en lnea de MATLAB.
El comando help
La ventana de ayuda
El escritorio de ayuda (MATLAB help desk)
Paginas de referencia en lnea
Pagina Web de The Mathworks, Inc. (www.mathworks.com)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 34/215
El comando help
Es el comando mas basico para obtener informaci on de la sintaxis y
actuaci on de una funci on.
La informaci on aparece directamente sobre la ventana de comandos.
Ejemplo:
he l p magi c
MAGIC Magi c s quar e .
MAGIC(N) i s an NbyN mat r i x c ons t r uc t e d f rom
t he i n t e g e r s 1 t hr ough N2 wi t h e qual row ,
col umn , and di a gona l sums .
Pr oduces v a l i d magi c s quar e s f o r N =
1 , 3 , 4 , 5 . . . .
El nombre de la funcion siempre aparece en may usculas, pero en realidad
debe escribirse en min usculas al llamar a la funci on
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 35/215
Las funciones estan organizadas en grupos l ogicos, as como la estructura
de directorios de MATLAB.
Las funciones de algebra lineal estan en el directorio matfun. Para listar
todas las funciones de este grupo
he l p matfun
Mat r i x f u n c t i o n s nume r i c al l i n e a r a l ge br a .
Mat r i x a n a l y s i s .
norm Mat r i x or v e c t or norm .
nor mest Es t i mat e t he mat r i x 2norm
. . .
El comando help lista todos los grupos de funciones
he l p
matl ab / g e n e r a l
matl ab / ops
. . .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 36/215
La ventana de ayuda
Disponible seleccionando la opci on Help Window del men u Help o bien
pulsando la interrogaci on de la barra de men u.
Puede invocarse desde la ventana de comandos con helpwin
Para obtener ayuda sobre un comando helpwin comando
La informaci on obtenida es la misma que con el comando help pero
permite hipertexto y navegacion
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 37/215
El comando lookfor
Conveniente cuando buscamos una funci on pero no recordamos su
nombre.
Busca todas las funciones que en la primera lnea de texto de la ayuda
(lnea H1) contienen la palabra clave.
Ejemplo: Estamos buscando una funci on para invertir matrices, hacemos
he l p i n v e r s e
i n v e r s e .m not f ound .
entonces bucamos con lookfor
l o o k f o r i n v e r s e
INVHILB I n v e r s e Hi l b e r t mat r i x .
ACOSH I n v e r s e h y p e r b o l i c c o s i ne .
ERFINV I n v e r s e of t he e r r o r f u n c t i o n .
INV Mat r i x i n v e r s e .
PINV Ps e udoi nv e r s e .
IFFT I n v e r s e d i s c r e t e Fo u r i e r t r ans f or m .
IFFT2 Twodi me ns i ona l i n v e r s e d i s c r e t e Fo u r i e r
t r ans f or m .
ICCEPS I n v e r s e compl ex cepst r um .
IDCT I n v e r s e d i s c r e t e c o s i ne t r ans f or m .
Con la opci on -all busca en todo el texto de la ayuda, no solo en H1.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 38/215
El escritorio de ayuda (help desk)
El escritorio de ayuda de MATLAB permite acceder a mucha informaci on
de referencia almacenada en el disco duro o en el CD-ROM en formato
HTML mediante un navegador.
Se accede a traves de la opci on Help Desk del men u Help.
Tambien se accede escribiendo helpdesk en la ventana de comandos.
Para acceder a la pagina de referencia en formato HTML de un comando
especco, se utiliza el comando doc. Ejemplo: doc eval.
Las paginas de referencia se encuentran tambien disponibles en formato
PDF y pueden ser consultadas e impresas con Acrobat Reader.
Finalmente, desde el escritorio de ayuda se puede acceder a la Pagina
Web the The MathWorks, Inc.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 39/215
El Entorno de MATLAB
El entorno de MATLAB incluye el conjunto de variables denidas durante
una sesion de MATLAB y el conjunto de cheros del disco que contienen
programas y datos y que permanecen entre sesiones.
El espacio de trabajo (workspace) es el area de memoria accesible desde
la lnea de comandos de MATLAB.
Los comandos who y whos muestran el contenido del espacio de trabajo,
who proporciona una lista reducida, whos incluye ademas informaci on
sobre tama no y almacenamiento.
whos
Name Si z e Byt es Cl a s s
A 4x4 128 doubl e a r r a y
D 5x3 120 doubl e a r r a y
M 10x1 3816 c e l l a r r a y
S 1x3 442 s t r u c t a r r a y
h 1x11 22 char a r r a y
n 1x1 8 doubl e a r r a y
s 1x5 10 char a r r a y
v 2x5 20 char a r r a y
Grand t o t a l i s 471 el ement s us i ng 4566 by t e s .
Para borrar variables del espacio de trabajo, usar el comando clear.
c l e a r nombr e v a r i a bl e A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 40/215
El comando save
Permite almacenar los contenidos del espacio de trabajo en un chero
MAT (binario).
s ave 15 oct 02
salva el espacio de trabajo en el chero 15oct02.mat. Para salvar
unicamente ciertas variables
s ave 15 oct 02 no mbr e s v a r i a bl e s
Para recuperar el espacio de trabajo se utiliza el comando load.
l oad 15 oct 02
El formato MAT es binario y no puede leerse, si se desea un chero que
pueda leerse pueden utilizarse las siguientes alternativas
-ascii Formato de texto de 8 bits.
-ascii -double Use Formato de texto de 16 bits.
-ascii -double -tabs Delimita los elementos de una matriz con tabuladores
-v4 Crea un chero MAT de la versi on 4
-append A nade datos a un chero MAT ya existente
En formato texto no puede salvarse todo el espacio de trabajo de una vez,
y debe hacerse indicando el nombre de las variables.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 41/215
La trayectoria de b

usqueda
La trayectoria de b usqueda (search path) es la lista ordenada de
directorios en los que MATLAB va buscando las funciones.
El comando path muestra la trayectoria de b usqueda.
Si hubiera varios cheros con el mismo nombre de funcion en diferentes
directorios, MATLAB ejecuta el primero que encuentra al seguir la
trayectoria de b usqueda.
Para modicar la trayectoria de b usqueda, ir a Set Path en el
men u File.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 42/215
Manipulaci

on de Ficheros
MATLAB dispone de los comandos dir, type, delete, cd, para
realizar las operaciones usuales de manipulacion de cheros de un
sistema operativo.
MATLAB MS-DOS UNIX VAX/VMS
dir dir ls dir
type type cat type
delete del o erase rm delete
cd chdir cd set default
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 43/215
El comando diary
Crea un diario de la sesi on MATLAB en un chero de texto.
El chero puede editarse con cualquier editor o procesador de textos.
Para crear un chero llamado midiario.txt que contenga todos los
comandos de la sesion y sus resultados en la ventana de comandos, hacer
d i a r y mi d i a r i o . t x t
si no se incluye ning un nombre de chero, el diario de la sesi on se
almacena por defecto en el chero diary.
Para parar la grabacion del diario
d i a r y o f f
Para volver a activar/desactivar la grabaci on del diario
d i a r y on/ o f f
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 44/215
Ejecuci

on de programas externos
Para ejecutar programas externos a MATLAB desde la lnea de
comandos, se antepone el caracter de escape !. Por ejemplo, en
UNIX
! v i
Ejecuta el editor de texto visual.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 45/215
Ejercicios 1
Fichero Aejer1.m : Las siguientes expresiones describen las
tensiones principales de contacto en las direcciones x, y y z que
aparecen entre dos esferas que se presionan entre s con una fuerza
F.

x
=
y
= p
max
_
_
1
z
a
tan
1
_
a
z
__
(1 v
1
) 0,5
_
1 +
z
2
a
2
_
1
_

z
=
p
max
1 + z
2
/a
2
siendo
a =
_
3F
8
(1 v
2
1
)/E
1
+ (1 v
2
2
)/E
2
1/d
1
+ 1/d
2
_
1/3
p
max
=
3F
2a
2
v
j
son los coecientes de Poisson, E
j
los modulos de Young de
cada esfera y d
j
son los diametros de las dos esferas.
Escribir las ecuaciones en notacion de MATLAB y evaluarlas para
los siguientes valores: v
1
= v
2
= 0,3, E
1
= E
2
= 3 10
7
, d
1
= 1,5,
d
2
= 2,75, F = 100 lb. y z = 0,01 in.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 46/215
Ejercicio 2
Fichero Aejer2.m : El n umero de carga de un rodamiento
hidrodinamico esta dado por la siguiente expresion:
N
L
=

2
(1
2
) + 16
2
(1
2
)
2
siendo el coeciente de excentricidad. Escribir la ecuacion en
notacion de Matlab y evaluarla para = 0,8.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 47/215
Ejercicio 3
Fichero Aejer3.m : Un tubo largo con radio interior a y radio
exterior b y diferentes temperaturas en la supercie interior T
a
y
en la exterior T
b
esta sometido a tensiones.
Las tensiones radial y tangencial se obtienen mediante las
siguientes ecuaciones:

r
=
E(T
a
T
b
)
2(1 v) ln(b/a)
_
a
2
b
2
a
2
_
b
2
r
2
1
_
ln
_
b
a
_
ln
_
b
r
__

t
=
E(T
a
T
b
)
2(1 v) ln(b/a)
_
1
a
2
b
2
a
2
_
b
2
r
2
+ 1
_
ln
_
b
a
_
ln
_
b
r
__
siendo r la coordenada radial del tubo, E el modulo de Young del
material del tubo y el coeciente de dilatacion. La distribucion
de temperaturas a lo largo de la pared del tubo en la direccion
radial es:
T = T
b
+
(T
a
T
b
) ln(b/r )
ln(b/a)
Escribir las ecuaciones en notacion de Matlab y evaluarlas para
los siguientes valores: = 1,2 10
5
, E = 3 10
7
, v = 0,3, T
a
= 500,
T
b
= 300, a = 0,25, b = 0,5, r = 0,375.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 48/215
Ejercicio 4
Fichero Aejer4.m : La formula siguiente, propuesta por el
matematico S. Ramanujan permite aproximar el valor de .
1

8
9801
N

n=0
(4n)!(1103 + 26390n)
(n!)
4
396
4n
Evaluar la formula anterior para N = 0, 1, 2, 3 y comparar el
resultado obtenido con el valor de que proporciona Matlab.
Para calcular el factorial, utilizar la funcion gamma que satisface
gamma(n+1)=n!.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 49/215
Ejercicio 5
Fichero Aejer5.m : Introducir en el espacio de trabajo de
Matlab dos vectores a y b siendo a
j
= 2j 1 y b
j
= 2j + 1,
j = 1, . . . , 7. Se pide:
1
Calcular la suma de a y b
2
Calcular la diferencia de a y b.
3
Calcular el producto a
T
b y el valor de su traza y determinante.
4
Calcular el producto ab
T
.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 50/215
Ejercicio 6
Fichero Aejer6.m : Sea z=magic(5). Realizar las siguientes
operaciones ordenadamente y mostrar los resultados:
1
Dividir todos los elementos de la segunda columna por

3.
2
Sustituir la ultima la por el resultado de sumarle los elementos de la
tercera la.
3
Sustituir la primera columna por el resultado de multiplicarle los
elementos de la cuarta columna.
4
Hacer que todos los elementos de la diagonal principal sean 2.
5
Asignar el resultado obtenido a la variable q y mostrarla por pantalla.
6
Mostrar la diagonal principal de qq
T
.
7
Mostar el cuadrado de todos los elementos de la matriz q.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 51/215
Ejercicio 7
Fichero Aejer7.m : En analisis de regresion lineal multivariante
aparece la siguiente cantidad:
H = X(X
T
X)
1
X
T
Sea
X =

17 31 5
6 5 4
19 28 9
12 11 10

Calcular la diagonal de H.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 52/215
Ejercicio 8
Fichero Aejer8.m : Dibujar el resultado de la suma de las
siguientes series para los rangos indicados de valores de . Utilizar
200 puntos para realizar la graca.
1
Onda cuadrada
f () =
4

k=1
1
n
sin(2(2k 1)),
1
2

1
2
2
Diente de sierra
f () =
1
2
+
1

k=1
1
n
sin(2k), 1 1
3
Diente de sierra
f () =
1
2

1

k=1
1
n
sin(2k), 1 1
4
Onda triangular
f () =

2

4

k=1
1
(2k 1)
2
cos((2k 1)), 1 1
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 53/215
Ejercicio 9
Fichero Aejer9.m : Dibujar las siguientes curvas. Utilizar axis
equal para una correcta visualizacion.
1
Cicloide ( 3, r = 0,5, 1, 1,5)
x = r sin
y = r cos
2
Lemniscata (/4 /4)
x = cos
_
2 cos(2)
y = sin
_
2 cos(2)
3
Espiral (0 6)
de Arqumedes
x = cos
y = sin
Logartmica (k = 0,1)
x = e
k
cos
y = e
k
sin
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 54/215
Ejercicio 10
Fichero Aejer10.m : Dibujar las siguientes curvas. Utilizar axis
equal para una correcta visualizacion.
1
Cardioide (0 2)
x = 2 cos cos 2
y = 2 sin sin 2
2
Astroide (0 2)
x = 4 cos
3

y = 4 sin
3

3
Epicicloide (R = 3, a = 0,5, 1 o2, y 0 2)
x = (R + 1) cos a cos((R + 1))
y = (R + 1) sin a sin((R + 1))
4
Epicicloide (R = 2,5, a = 2, y 0 6)
x = (R + 1) cos a cos((R + 1))
y = (R + 1) sin a sin((R + 1))
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 55/215
Ejercicio 11
Fichero Aejer11.m : Dibujar las siguientes curvas
tridimensionales. Utilizar axis equal para visualizar
correctamente.
1
Helice esferica (c = 5,0,
0 t 10)
x = sin(t/2c) cos(t)
y = sin(t/2c) sin(t)
z = cos(t/2c)
2
Senoide sobre cilindro (a = 10,0,
b = 1,0, c = 0,3, 0 t 2)
x = b cos(t)
y = b sin(t)
z = c cos(at)
3
Senoide sobre esfera (a = 10,0,
b = 1,0, c = 0,3, 0 t 2)
x = cos(t)
_
b
2
c
2
cos
2
(at)
y = sin(t)
_
b
2
c
2
cos
2
(at)
z = c cos(at)
4
Espiral toroidal (a = 0,2, b = 0,8,
c = 20,0, 0 t 2)
x = [b + a sin(ct)] cos(t)
y = [b + a sin(ct)] sin(t)
z = a cos(ct)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 56/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 57/215
Introducci

on a entornos de trabajo (I)


Entornos de trabajo con Matlab:
Espacio de trabajo workspace.
Ficheros de escritura scripts (*.m).
Ficheros de funciones de Matlab (*.m) y compiladas.
Objetos desarrollados en Matlab y en Java.
Workspace en Matlab.
Uso de variables globales, scripts, funciones y objetos.
Ejemplo:
>> a =[ 1 , 2 ; 3 , 4 ] ;
>> whos
>> i nv ( a ) ;
Ficheros de escritura scripts:
Ficheros (*.m) con ordenes iguales a las dadas en el workspace.
Las variables que utiliza son las globales del workspace.

Utiles para repetir la misma operacion varias veces.


A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 58/215
Introducci

on a entornos de trabajo (II)


Ficheros (*.m) de funciones:
Son cheros en lenguaje interpretado de Matlab.
Sus variables son locales por defecto.
Paso a la funcion del valor de las variables.
Funciones propias de Matlab y Toolbox.
Ejemplo:
f u n c t i o n c = my f i l e 1 ( a , b)
c = s q r t ( ( a . 2) +(b . 2) )
Uso desde el workspace:
>> x = 7. 5
>> y = 3. 342
>> z = my f i l e ( x , y )
>> whos
. . .
Ficheros de funciones compilador en C/C++ o FORTRAN. Contienen
cabecera especial para conexi on con Matlab.
Clases y objetos denidos en Matlab y Java. Una clase es un tipo de dato
al que se puede asociar funciones propias y redenir operadores.
>> s = t f ( s ) ; get ( s )
>> P= 1/( s +1) ; bode (P) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 59/215
Tipos de datos (I)
Tipos de variables:
Clase Ejemplo Descripcion
array [1,2;3,4]; 5+6i Datos virtual ordenado por ndices
cuyos componentes son datos del
mismo tipo.
char Hola Array de caracteres (cada caracter
tiene 16 bits).
celda {17, hola, eye(2)} Dato virtual ordenado por ndices
cuyos componentes son arrays de dis-
tinto tipo.
struct a.dia=1; a.mes=julio Dato virtual para almacenar datos
por campos (estructura). Cada cam-
po es un array o celda.
objeto tf(1,[1,1]) Datos denido por el usuario con base
a una estructura y con funciones aso-
ciadas.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 60/215
Tipos de datos (II)
Operadores:
Oper. aritmeticos
+ Suma.
- Resta.
.* Multiplicaci on.
./ Divisi on derecha.
.\ Divisi on izquierda.
: Operador dos puntos.
.^ Potencia.
. Transpuesta.
Conjugada transpuesta.
* Multiplicaci on de matrices.
/ Divisi on derecha de matrices.
\ Divisi on izquierda de matrices.
^ Potencia de matrices.
Oper. de relacion
> Menor que
> Mayor que
<= Menor que o igual a
>= Mayor que o igual a
== Igual a
= No igual a
Operadores logicos.
& Y
| OR
~ NO
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 61/215
Tipos de datos (III)
Operaciones aritmeticas en el workspace o Ascript1.m:
>> a =[ 1 , 2 ; 3 , 4 ] ; b =[ 4 , 5 ; 6 , 7 ] ; >> c= ab
>> c= 3a . . .
. . . >> c= a . b
>> a ( 1 , : ) b ( : , 1 )
. . .
Operaciones de relaci on en el workspace o Ascript1.m:
>> a =[ 1 , 2 , 3] ; b =[ 1 , 3 , 2] ; >> a > b
>> a==b . . .
. . . >> a =[ ] ; i s empt y ( a )
...
Operaciones l ogicas en el workspace o Ascript1.m:
>> a =[ 1 , 2 , 3] ; b =[ 1 , 0 , 3] ; >> a&b
>> a==b . . .
. . . >> a
>> a | b . . .
. . .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 62/215
Tipo de datos (IV): Valores especiales
Funciones del directorio elmat que devuelven valores importantes,
ans Variable a la que se asigna el resultado de una ex-
presi on que no ha sido asignada.
eps Tolerancia con la que trabaja Matlab en sus calculos.
realmax Mayor n umero en coma otante que puede represen-
tar el computador.
realmin Menor n umero en coma otante que puede repre-
sentar el computador.
pi 3.1415926535897...
i, j N umeros imaginarios puros.
Inf Innito. Se obtiene de divisiones entre cero.
NaN Indeterminaci on. Se obtiene de divisiones 0/0,
inf/inf o n/0 cuando n es imaginario.
flop Cuenta las operaciones en coma otante realizadas.
version Indica la versi on de Matlab usada.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 63/215
Tipo de datos (V): Valores especiales
En el workspace:
>> 3+2
. . .
>> pi 3
. . .
>> r eal max
. . .
>> a= 5+3 i
. . .
>> a= i (4+3 i )
. . .
>> a= 3/0
. . .
>> a= 0/0
. . .
>> a= NaN3
. . .
>> a= 3 I n f
. . .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 64/215
Sentencias de control.
Sentencias de control en Matlab:
if, else y elseif: Ejecuta un grupo de sentencias basandose en
condiciones logicas.
switch, case y otherwise: Ejecuta diferentes grupos de sentencias en
funcion de condiciones logicas.
while: Ejecuta un n umero de sentencias de forma indenida en funcion de
una sentencia logica.
for: Ejecuta un n umero de sentencias un n umero determinado de veces.
try...catch: Cambia el control de ujo en funcion de los posibles errores
producidos.
break: Termina de forma directa la realizacion de un bucle for o while.
return: Sale de la funci on.
Nota: Los bucles for y while pueden ser modicados por codigo
vectorizado para aumentar la velocidad de ejecuci on.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 65/215
Sentencia de control if, else y elseif.
Forma general Asript2.m,
i f s e nt l o g 1 ,
% bl oque 1
e l s e i f s e nt l o g 2
,
% bl oque 2
e l s e
% bl oque 3
end
i f n < 0
% Si n ne ga t i v o e r r o r .
di s p ( Ent r ada debe s e p o s i t i v a ) ;
e l s e i f rem( n , 2 ) == 0
% Si es par s e d i v i d e e nt r e 2.
A = n /2;
e l s e
% Si es i mpar s e i ncr ement a y d i v i d e
.
A = ( n+1) /2;
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 66/215
Sentencia de control switch, case y otherwise.
Formulaci on general Ascript3.m,
s wi t c h e x p r e s s i o n
cas e val ue 1
% bl oque 1
cas e val ue 2
% bl oque 2
. . .
ot he r wi s e
% bl oquen
end
s wi t c h i nput num
cas e {1, 2, 3}
di s p ( 1 o 2 o 3 ) ;
cas e 0
di s p ( c e r o ) ;
cas e {1 , 2 , 3}
di s p ( 1 o 2 o 3 ) ;
ot he r wi s e
di s p ( ot r o v a l o r ) ;
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 67/215
Sentencia de control while y for.
Formulaci on general Ascript4.m,
whi l e e x p r e s i o n
% bl oque
end
n = 1;
whi l e pr od ( 1 : n) < 1e100 ,
n = n + 1;
end
Formulaci on general Ascript5.m,
f o r n d i c e= i n i c i o : paso : f i n ,
% bl oque
end
f o r i i = 2: 6 ,
x ( i i ) = 2x ( i i 1) ;
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 68/215
Sentencia de control: break, try-catch y return
Sentencia break:
Sirve para salir de forma automatica del ultimo bucle while o for abierto
sin tener en cuenta la condicion o ndice de salida.
Sentencia de control try, catch:
Formulacion general,
try bloque-1 catch bloque-2 end
Ejecuta el bloque-1 mientras no haya un error. Si se produce un error en
bloque-1 se ejecuta bloque-2.
Sentencia return:
Se sale de la funci on en la que se trabaja.
Si se llega al nal de la funcion (*.m), Matlab sale de ella
automaticamente.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 69/215
Funciones en matlab (I): Cabecera
Se dene el nombre y las variables de entrada y salida:
f u n c t i o n c = my f i l e ( a , b)
Las lneas de comentario se inician con el caracter %.
Las lneas de comentario posteriores a la funci on son de ayuda.
f u n c t i o n c = my f i l e ( a , b)
% Output : c . I nput : a y b
Usando la funci on help.
>> he l p my f i l e
Output : c . I nput : a y b
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 70/215
Funciones en matlab (II): Variables de entrada
Variables de entrada-salida:
Libertad en su n umero. La variable nargin y nargout indican su n umero.
Variables locales por defecto sin tipo determinado.
Ejemplo: a, b y c pueden ser double o array myfile2.m.
f u n c t i o n c = my f i l e 2 ( a , b , c )
% Output : c . I nput : a , b y c
i f nar gi n <2,
e r r o r ( c = my f i l e ( a , b , [ c ] ) ) ;
e l s e i f na r gi n ==2,
c= s q r t ( a.2+b . 2) ;
e l s e
c= s q r t ( a.2+b.2+c . 2) ;
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 71/215
Funciones en matlab (III): Celdas como Variables de entrada
Una celda varargin como variable de entrada y otra varargout como
salida. Ejemplo myfile3.m:
f u n c t i o n c = my f i l e 3 ( v a r a r g i n )
% Output : c . I nput : a , b y c
i f nar gi n <2,
e r r o r ( c = my f i l e ( a , b , [ c ] ) ) ;
e l s e i f na r gi n ==2,
c= s q r t ( v a r a r g i n {1}.2+ v a r a r g i n {2}. 2) ;
e l s e
c= s q r t ( v a r a r g i n {1}.2+ v a r a r g i n {2}.2+ v a r a r g i n
{3}. 2) ;
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 72/215
Funciones en matlab (IV): Variables globales y est

aticas
Variable estatica: No se pierde su valor y s olo se puede usar en la funci on
denida.
Variable global: No se pierde su valor y se puede usar en todas las
funciones donde este denida. Debe estar denida en el workspace.
Ejemplo funci on myfile4.m:
f u n c t i o n c = my f i l e 4 ( a )
% Output : c . I nput : a
g l o b a l P;
i f i s empt y (P) , P=1; end
c= Pa ; P= P+1;
Variable estatica:
>> P= 10; z= my f i l e ( 3) ; % r e p e t i r
Variable global:
>> g l o b a l P; P=10; z= my f i l e ( 3) ; % r e p e t i r
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 73/215
Funciones en matlab (V): Sub-funciones y funciones privadas
Varias funciones contenidas en un mismo chero.
La funcion principal es la primera. Equivalente a la funcion main del
lenguaje C.
Ejemplo myfile5.m:
f u n c t i o n c = my f i l e 5 ( a , b)
% Output : c . I nput : a y b
c= f un ( a , b) ;
f u n c t i o n z= f un ( x , y )
z=s q r t ( x .2+y . 2) ;
Funciones privadas: Estan en sub-carpeta private y s olo se pueden usar
por las funciones de la carpeta.
Prioridades en la llamada a funciones: Sub-funci on, funci on en misma
carpeta, funcion en carpeta private,funci on en las carpetas del path.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 74/215
Funciones en matlab (VI):Evaluaci

on de cadenas eval() y feval()


Son el equivalente a los punteros a funciones de lenguaje C.
eval(): Una cadena de caracteres es interpretada como orden,
>> cad= my f i l e ; a= 1;
>> c= e v a l ( [ cad , ( a , , i n t 2 s t r ( 2) , ) ] ) ;
feval: Se llama a una funci on por su nombre o comodn Ascript6.m,
>> cad= my f i l e ; a= 1 , b=2;
>> c= f e v a l ( cad , a , b) ;
>> cad= @myf i l e ; a=1, b=1;
>> c= f e v a l ( cad , a , b) ;
>> cad= @( x , y ) s q r t ( x .2+y . 2) ;
>> c= f e v a l ( cad , a , b) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 75/215
Entrada de datos, pausas y llamadas a la shell.
input(): Introducci on de datos Ascript7.m,
n= i nput ( I n t r . dat o : ) ; % Doubl e .
n= i nput ( I n t r . dat o : , s ) ; % Cadena de c a r a c t e r e s .
ginput(): Localizar puntos en una graca con el rat on,
f i g u r e ; p l o t ( 1: 1000) ;
[ x , y]= gi nput ( 1) % l o c a l i z a r un punto x , y en g r a f i c a .
[ x , y , t e c l a ]= gi nput ( 1) % t e c l a da l a t e c l a de l r at on
usada .
pause(): La funci on para el programa durante un periodo de tiempo,
pause ( n) ; % Para e l programa dur ant e n s egundos .
pause ; % Para e l programa has t a que s e pul s e una t e c l a .
Llamada a la shell (MS-DOS o LINUX): Iniciar sentencia con !,
! copy f i c h 1 . c f i c h 2 c . % Si e l s i s t e ma f ue r a msdos
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 76/215
Funciones save y load.
save: Grabar datos en cheros Ascript8.m,
-mat: Codigo binario (por defecto).
-ascii: Codigo ASCII.
-append: Graba al nal del chero.
>> s ave dat os . dat a b c % Graba dat os . dat l a s
v a r i a b l e s a b c
>> a= r and ( 10 , 5) ;
>> s ave a s c i i append dat os . dat a %Graba a l f i n a l de l
f i c h e r o en c odi go ASCI I .
load: Recupera las variables guardadas con la sentencia save.
>> l oad dat os . dat % Recuper a l a s v a r i a b l e s de dat os . dat
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 77/215
Funciones de librer

a entrada/salida de lenguaje C (I)


Algunas de las funciones de entrada/salida:
Clase Funcion Descripcion
Abrir/Cerrar fopen() Abrir chero.
fclose() Cerrar chero.
Binarios I/O fread() Lectura binaria de chero (defecto enteros).
fwrite() Escritura binaria en chero (defecto enteros).
Con formato fscanf() Lectura con formato de chero.
fprintf() Escritura con formato en chero.
Conversi on cadenas sscanf() Lee de cadena con un determinado formato.
sprintf() Escribe en cadena con formato.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 78/215
Funciones de librer

a entrada/salida de lenguaje C (II)


Ejemplos de apertura y cierre. Permisos:
r: Lectura. Puntero al inicio del chero.
w: Escritura. Se borra el chero si existe.
a: A nadir. Puntero al nal del chero.
r+: Lectura/escritura. Puntero al inicio.
>> f i c= f open ( f i c h . dat , r ) ; % Abre f i c h e r o par a
l e c t u r a .
>> f c l o s e ( f i c ) ; % Ci e r r a f i c h e r o f i c h . dat .
>> f c l o s e ( a l l ) ; % Ci e r r a t odos l o s f i c h e r o s .
Principales usos:
Ficheros de texto con formato
Ficheros binarios para guardar o extraer matrices en su forma vectorial.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 79/215
Funciones de librer

a entrada/salida de lenguaje C (III)


Ejemplo Ascript9.m:
>> a= r and ( 3 , 3)
>> f i c h= f open ( dat os . t x t , w ) ; % Guar dar en t e x t o
>> f p r i n t f ( f i c h , %.2 f %.2 f %.2 f \n , a ) ;
>> f c l o s e ( f i c h ) ;
>> f i c h= f open ( dat os . t x t , r ) ; % Recuper ar de f i c h e r o
t e x t o
>> b= f s c a n f ( f i c h , %f )
>> f c l o s e ( f i c h ) ;
>> f i c h= f open ( dat os . t x t , w ) ; % Guar dar en bi na r i o ,
f or mat o r e a l 4
>> f wr i t e ( f i c h , a , r e a l 4 ) ;
>> f c l o s e ( f i c h ) ;
>> f i c h= f open ( dat os . t x t , r ) ; % Recuper ar en b i n a r i o
>> b= f r e a d ( f i c h , i nf , r e a l 4 )
>> f c l o s e ( f i c h ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 80/215
Pr

acticas de funciones y sentencias de control (I).


Fichero Bejer1.m : Generar una funci on (*.m) para obtener las
siguientes series matematicas. Los argumentos son tres: El primero es el
nombre de la serie deseada (obligatorio). El segundo es el n umero de
datos de , por defecto 200 (opcional). El tercero es lmite superior de
sumatorio, por defecto 1000 (opcional). Si el n umero de argumentos de
salida es uno se devuelve los datos, si es cero se dibuja la graca
correspondiente.
Se nal cuadrada:
f () =
4

n=1,3,5,...
1
n
sin(2n)
1
2

1
2
.
Dientes de sierra:
f () =
1
2
+
1

n=1
1
n
sin(2n) 1 1
.
Se nal triangular:
f () =

2

n=1
1
(2n 1)
2
cos((2n 1)) 1 1
.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 81/215
Pr

acticas de funciones y sentencias de control (II)


Fichero Bejer2.m : El desplazamiento de una onda propagada a lo
largo de una cuerda tiene una velocidad inicial cero y un deplazamiento
inicial,
{u(, 0) =

a
| 0 a} {u(, 0) =
1
1a
| a 1},
siendo su ecuaci on,
u(, ) =
2
a(1a)

N
n=1
sin na
n
3
sin(n) cos(n).
Crear una funcion *.m para mostrar en graco u(, ). La entrada de la
funci on sera el valor de a, opcional defecto a = 0,25, el de N, opcional
defecto N = 50, y el de , opcional defecto = 0,05, donde
0 2. La funci on dibuja la graca si el usuario no pide variables de
salida y devuelve el valor de u(, ) sin dibujar la graca en caso
contrario.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 82/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 83/215
Optimizaci

on de programas: Indexado de arrays y celdas (I)


Para la optimizaci on de un programa con matlab se debe reducir el
n umero de bucles y cambiarlo por algebra matricial.
Formato externo: Filas y columnas. Formato interno: vector de columnas,
Ascript10.m.
>> a= [ 1 , 2 , 3 ; 4 , 5 , 6 ] ;
>> a ( 2 , 1) , a ( 2) ,
Llamada parcial a un array, end cuenta el n umero de las o columnas,
>> i i = 1 : 2 : 3 ; % v e c t or de 1 a 3 con paso 2.
>> a ( 1 , i i ) % pr i mer a f i l a , col umnas i i
>> a ( 1 , 2 : end ) % pr i mer a f i l a , col umnas de 2 a l f i n a l
>> a ( 1 , : ) % pr i mer a f i l a , t odas l a s col umnas
Composici on de arrays,
>> b= [ a ( : , 1 ) , [ 5 , 7 ] ] % Pr i mer a col umna de a y [ 5 , 7 ]
v e c t or col umna .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 84/215
Optimizaci

on de programas: Indexado de arrays y celdas (II)


Borrado de matrices,
>> b ( : , 1 ) =[ ] ; % Bor r ado de l a pr i mer a col umna .
Matrices ceros, unos y aleatorias,
>> a= z e r os ( 2 , 3) ; b= ones ( 3 , 2) ; c= r and ( 2 , 3) ;
Espacios lineales y logartmicos,
>> a= l i n s p a c e ( 1 , 10 , 100) ; % De 1 a 10 , 100 puntos , paso
l i n e a l
>> a= l ogs pac e ( 1 , 5 , 100) ; % De 1e1 a 1e5 , 100 puntos ,
paso l og .
Funciones de tama no y repetici on.
>> [ n f i l , nc ol ]= s i z e ( a ) ; % Tama no f i l a col umna ,
>> n f i l = s i z e ( a , 1 ) ; % Tama no f i l a .
>> ncomp= s i z e ( a ( : ) , 1) ; % N umero de componentes ,
f or mat o i n t e r n o .
>> b= repmat ( a , [ 3 , 1 ] ) ; % Re pe t i r mat r i z a t r e s ve c e s
en col umna .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 85/215
Optimizaci

on del c

odigo de programas (I)


Inicializaci on de matrices como matrices cero.
Sustituci on de bucles por productos matriciales, Ascript11.m
Funci on en diferentes puntos, y(n) = sin(n) n, 0 < n < 10, 100 puntos:
>> n=l i n s p a c e ( 0 , 10 , 100) ; y= s i n ( n) . n ;
Sumatorio de funci on, y =

10
n=0
sin(n) n.
>> n= [ 0 : 1 0 ] ; y= sum( s i n ( n) . n) ;
Funci on de dos dimensiones en varios puntos,
y(i , j ) = i
2
+ j
2
+ i j , i [0, 5], j [0, 7],
>> i i =0: 5; j j =[ 0 : 7 ] ;
>> s i i = s i z e ( i i , 2 ) ; s j j = s i z e ( j j , 1 ) ;
>> i i = repmat ( i i , [ s j j , 1 ] ) ; j j = repmat ( j j , [ 1 , s i i ] ) ;
>> [ i i , j j ]= mes hgr i d ( i i , j j ) ; % e q u i v a l e n t e
>> y= i i .2+ j j .2+ i i . j j ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 86/215
Optimizaci

on del c

odigo de programas (II)


Sustituci on de bucles por productos matriciales, Ascript11.m
Funci on de una dimensiones con sumatorio,
y(i ) =

10
n=1
n i
2
+ i , i [0, 5],
>> i i =0: 5; n =[ 1 : 1 0 ] ;
>> y= n ones ( s i z e ( n) ) i i .2+ i i ;
Pr actica de optimizacion de programas: Volver a escribir el codigo
de las practica de generaci on de se nales sin usar bucles, Ficheros
Bejer1bis.m, Bejer2bis.m.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 87/215
Matrices tri-dimensionales (I)
Se componen de las, columnas y paginas.
Generaci on de matrices tridimensionales, Ascript12.m
>> a =[ 1 , 2 ; 3 , 4 ] ; % Mat r i z de dos di me ns i one s .
>> a ( : , : , 2 )= [ 5 , 6 ; 7 , 8 ] ; % Mat r i z de t r e s di me ns i one s .
>> a= cat ( 3 , [ 2 , 3 ; 4 , 5 ] , [ 5 , 6 ; 7 , 8 ] ) ; % encadena en dim 3
>> a= repmat ( [ 2 , 3 ; 4 , 5 ] , [ 1 , 1 , 2 ] ) ; % r e p i t e en pagi nas
Re-dimensi on: El array es tomado como vector y re-dimesionado,
>> a= r e s hape ( a , [ 2 , 4 ] ) ; % Conv i e r t e dos pagi nas a
c uat r o col umnas .
Borrado de parte de la matriz,
>> a ( : , : , 2 ) =[ ] ; % Bor r ado de l a pagi na 3.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 88/215
Matrices tri-dimensionales (II)
Eliminaci on de dimensiones,
>> b= s queeze ( a ( : , 1 , 1 ) ) ; % Se obt i e ne un v e c t or dim
( 21)
>> b= s queeze ( a ( 1 , : , 1 ) ) ; % Se obt i e ne un v e c t or dim
( 12)
>> b= s queeze ( a ( 1 , 1 , : ) ) ; % Se obt i e ne un v e c t or dim
( 21)
Cambio de ndices en dimensiones,
>> b= permute ( a , [ 2 , 1 , 3 ] ) ; % Las f i l a s pasan a s e r
col umnas .
>> a= i per mut e ( b , [ 2 , 1 , 3 ] ) ; % Es l a i n v e r s a de permute .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 89/215
Matrices multidimensionales (III)
Celdas multidimensionales: Se puede trabajar con ellas de forma similar a
como se trabaja con las matrices.
>> A= { [ 1 , 2 ; 3 , 4 ] , hol a ; [ 1 , 2 , 3 ] , 2 }; % c e l da de dim
( 22)
>> B= { hol a , [ 1 , 2 , 3 ] ; 2 , 2}; % c e l da de dim ( 22)
>> C= cat ( 3 , A, B) ; % c e l da de dim (222)
Estructuras multidimensionales: Se puede trabajar con ellas de la forma
similar a como se trabaja con matrices.
>> c l a s e ( 1 , 1 , 1) . al um= pepe ; c l a s e ( 1 , 1 , 1) . not a =10;
>> c l a s e ( 1 , 1 , 2) . al um= j uan ; c l a s e ( 1 , 1 , 2) . not a =10;
>> c l a s e= s queeze ( c l a s e ) ; % Se r educe a dos di me ns i one s
.
>> c l a s e . al um % Muestra l o s nombres de t odos l o s
al umnos .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 90/215
Funciones para estructuras y celdas (I)
Funciones especicas para structuras.
Funcion Descripcion
getfield() Muestra los campos de la estructura.
isfield() Verdadero si un campo de la estructura.
isstruct() Verdadero si es una estructura.
rmfield() Borra el campo marcado de la estructura.
setfield() Cambia los contenidos de campo.
struct() Crea o convierte en una matriz de estructuras.
struct2cell() Convierte una matriz de estructuras en celdas.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 91/215
Funciones para estructuras y celdas (II)
Ejemplos de funciones para estructuras,
>> c l a s e ( 1) . al um= pepe ; c l a s e ( 1) . not a =10;
>> c l a s e ( 2) . al um= j uan ; c l a s e ( 2) . not a =10;
>> c l a s e ( 3)= s t r u c t ( al um , j o s e , not a , 7) % Otra
f orma de d e f i n i r
>> g e t f i e l d ( c l a s e ) % Muestra l o s campos de c l a s e
>> i s s t r u c t ( c l a s e ) % Af i r ma t i v o
>> i s f i e l d ( c l a s e , not a ) % Af i r ma t i v o
>> r mf i e l d ( c l a s e , not a ) % El i mi na campo not a .
>> s e t f i e l d ( c l a s e , al um , pepe ) ; % I nt r oduc e pepe
en campo al um
>> p= s t r u c 2 c e l l ( c l a s e )
>> % Pone un el ement o de s t r u c t en una col umna de l a
c e l da .
>> % De un v e c t or e s t r u c t u r a s a l e una mat r i z de c e l d a s
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 92/215
Funciones para estructuras y celdas (III)
Funciones especicas de celdas.
Funcion Descripcion
cell() Crea una matriz de celda.
cell2struct() Convierte celdas en estructuras.
celldisp() Muestra el contenido de la celda.
cellfun() Aplica una celda funcion a matriz.
cellplot() Muestra una graca de la celda.
iscell() Verdadero en caso de que sea celda.
num2cell() Conversi on de matriz numerica en celda.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 93/215
Funciones para estructuras y celdas (IV)
Ejemplos de funciones de estructuras.
>> a= c e l l ( 2 , 2) % Se c r e a una c e l da v a c a .
>> a={ pepe , j uan ; 10 , 10}; %Se l l e n a c e l da
>> i s c e l l ( a ) % Af i r ma t i v o
>> c e l l d i s p ( a ) % Muestra e l c ont e ni do de l a c e l da
>> c e l l p l o t ( a ) % Muestra e l c ont e ni do en vent ana .
>> c e l l f u n ( i s r e a l , a ) % Di f e r e n t e s f unc i o ne s
a p l i c a d a s a c e l d a s .
>> c e l l 2 s t r u c ( a , { al um , not a }) % Pasa de c e l da a
e s t r u c t u r a .
>> %Toma l o s campos por f i l a s .
>> num2cel l ( [ 1 , 2 ; 3 , 4 ] ) % Conv i e r t e mat r i z en c e l da .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 94/215
Pr

acticas con matrices, celdas, estructuras y ficheros


Escribir un chero Fichero Bejer3.m las siguientes operaciones:
Generar una matriz aleatoria de dimensiones {10 5 20}.
Obtener la matriz correspondiente a la segunda pagina.
Obtener el vector correspondiente a la la 2, columna 3.
Obtener una celda cuyos componentes sean los elementos de la matriz.
Agregar dicha celda al campo datos de una estructura. Introducir otro
campo llamado nombre que corresponda a una cadena de caracteres.
Salvar la matriz, celda y estructura en un chero de nombre datos.dat.
Salvar los elementos de la matriz en un chero binario usando fwrite().
Recuperar dichos datos e introducirlos en una matriz de dimension
{5 10 20}.
Meter la primera pagina de esta matriz en un chero de texto con formato
5 datos por lnea.
Recoger estos datos lnea a lnea y reconstruir la matriz.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 95/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 96/215
Funciones para gr

aficas en dos dimensiones (I)


Funcion Comentario
figure Crea una gura
subplot Crea varios ejes en la misma gura
hold Superpone diferentes plots
plot Plot lineal
loglog Plot logartmico
semilogx, semilogy Plot semilogartmico en eje x e y
xlim, ylim , zlim Margenes en cada uno de los ejes
tit, xlabel, ylabel Texto en ttulo y ejes
legend, text, gtext A nadir texto en gura
ginput Marcar posicion en gura
grid, box Mallado y caja en gura
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 97/215
Funciones para gr

aficas en dos dimensiones (II)


Funcion Comentario
bar, bar3, bar3h Gracas de barras
errorbar Gracas con barras que marcan el error
compass Gracas en forma de compas
ezplot, ezpolar Graca sencillas de funciones
fplot Gracas de funciones
hist, pareto Histograma y carta de pareto
pie, pie3 Pastel de dos o tres dimensiones
stem, stairts Gracas con impulsos y escaleras
scatter, plotmatrix Gracas de dispersion de datos y matrices
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 98/215
Ejemplos con gr

aficos de dos dimensiones, Escript1.m (I)


Barras:
>> x= 2 . 9 : 0 . 2 : 2 . 9 ; bar ( x , exp(x . x ) ) ;
>> bar h ( x , exp(x . x ) ) ;
>> y= round ( r and ( 5 , 3) 10) ;
>> bar ( y , gr oup ) ; bar ( y , s t ac k ) ;
Histogramas:
>> y= r andn (1 e4 , 1) ; h i s t ( y ) ; h i s t ( y , 20) ;
Pasteles:
>> x =[ 1 , 3 , 0 . 5 , 2 . 5 , 2 ] ; pi e ( x ) ;
Escaleras:
>> x= 3: 0. 1: 3; s t a i r s ( x , exp(x . 2) ) ;
Barras con error:
>> x= 4: . 2: 4; y= (1/ s q r t (2 pi ) ) exp(( x . 2) /2) ;
>> e=r and ( s i z e ( x ) ) /10;
>> e r r o r b a r ( x , y , e ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 99/215
Ejemplos con gr

aficos de dos dimensiones, Escript1.m (II)


Puntos:
>> y=r andn ( 50 , 1) ; stem( y ) ;
Histograma de los angulos.
>> y= r andn ( 1000 , 1) pi ; r os e ( y ) ;
Representaci on de n umeros complejos:
>> z= e i g ( r andn ( 20 , 20) ) ; compass ( z ) ;
>> f e a t h e r ( z ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 100/215
Gr

aficas para funciones y complementos (I), Escript2.m.


Gracas funciones: plot() para n umeros, ezplot(), fplot() para
funciones:
>> x= 0 : 0 . 0 5 : 1 0 ; y= s i n ( x ) . exp ( 0.4 x ) ;
>> f i g u r e ;
>> s ubpl ot ( 3 , 1 , 1) ; p l o t ( x , y ) ; t i t l e ( p l o t ) ;
>> s ubpl ot ( 3 , 1 , 2) ;
>> e z p l o t ( s i n ( x ) . exp ( 0.4 x ) , [ 0 , 1 0 ] ) ; t i t l e ( e z p l o t
) ;
>> s ubpl ot ( 3 , 1 , 3) ;
>> f p l o t ( s i n ( x ) . exp ( 0.4 x ) , [ 0 , 1 0 ] ) ; t i t l e ( f p l o t )
;
subplot(n,m,p) divide la graca en n m partes y va a la p.
Texto y ejes en las gracas: Ttulos, legendas, cajas, mallado:
>> di s p ( Texto y e j e s en g r a f i c a s : )
>> t= 0 : 0 . 1 : 2 pi ; r=s i n (2 t ) . cos (2 t ) ;
>> f i g u r e ; s ubpl ot ( 2 , 1 , 1) ; p o l a r ( t , r ) ;
>> t i t l e ( p o l a r )
>> s ubpl ot ( 2 , 1 , 2) ;
>> f p l o t ( [ s i n ( x ) , s i n (2 x ) , s i n (3 x ) ] , [ 0 , 2 pi ] , ,
o , ) ;
>> t i t l e ( f p l o t )
>> l e ge nd ( s i n ( x ) , s i n (2 x ) , s i n (3 x ) ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 101/215
Gr

aficas para funciones y complementos (II), Escript2.m.


>> di s p ( T t ul o , nombre en e j e s , l egenda : )
>> x= l i n s p a c e ( 0 , 2 , 30) ; y= s i n ( x . 2) ; f i g u r e ; p l o t ( x , y ) ;
>> t e x t ( 1 , . 8 , y=s i n ( x 2) ) ; x l a b e l ( Ej e X ) ; y l a b e l ( Ej e Y )
;
>> t i t l e ( Gr a f i c o s e n o i d a l ) ;
>> di s p ( Subpl ot , tama no de l e t r a , tama no e j e s , caj a , g r i d :
)
>> x =0: . 1: 4 pi ; y= s i n ( x ) ; z=cos ( x ) ;
>> f i g u r e ; s ubpl ot ( 1 , 2 , 1) ; p l o t ( x , y ) ;
>> a x i s ( [ 0 , 2 pi , 1 , 1] ) ;
>> s e t ( gca , Font Si z e , 12) ;
>> g r i d on ; box on ;
>> t i t l e ( s i n ( x ) , FontWei ght , bol d , Font Si z e , 12) ;
>> s ubpl ot ( 1 , 2 , 2) ; p l o t ( x , z ) ;
>> a x i s ( [ 0 , 2 pi , 1 , 1] ) ; g r i d on ; box on
>> s e t ( gca , Font Si z e , 12) ;
>> t i t l e ( cos ( x ) , FontWei ght , bol d , Font Si z e , 12) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 102/215
Funciones para gr

aficas en tres dimensiones.


Funcion Comentario
plot3 Plot lineal en tres dimensiones
mesh, meshc, meshz Plot de mallados en tres dimensiones
surf, surfc, surfl Plot de superecie en tres dimensiones
meshgrid, ndgrid Preparacion de datos para gracas de supercie
hidden Ocultar lneas y supercies ocultas
contour, contour3 Curvas de nivel
trimesh, trisurf Plot de mallado triangular
scatter3, stem3 Diagramas de dispersi on y impulsos en 3 dimensiones
slice Gracos de volumen
surfnorm Normales de las supercies
quiver3 Puntos y normales en vectores
patch Parches de supercies
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 103/215
Ejemplos de gr

aficas en tres dimensiones, Escript3.m (I)


Graca de tres dimensiones por puntos:
>> t= 0: pi /50: 10 pi ;
>> f i g u r e ; pl ot 3 ( s i n ( t ) , cos ( t ) , t ) ; g r i d on ; a x i s s quar e
>> f i g u r e ; pl ot 3 ( s i n ( t ) , cos ( t ) , t , , cos ( t ) , s i n ( t ) , t ,
) ;
Graca de tres dimensiones por polgonos:
>> z =0: 0. 01: 8; x=cos ( z ) ; y=s i n ( z ) ;
>> f i g u r e ; f i l l 3 ( x , y , z , r ) ;
Gracas de tres dimensiones con barras:
>> f i g u r e ; y= c ool ( 7) ;
>> s ubpl ot ( 1 , 3 , 1) ; bar 3 ( y , 0 . 2 , det ached ) ;
>> s ubpl ot ( 1 , 3 , 2) ; bar 3 ( y , gr ouped ) ;
>> s ubpl ot ( 1 , 3 , 3) ; bar 3 ( y , 0 . 1 , s t ac ke d ) ;
Gracas de tres dimensiones con puntos con base:
>> f i g u r e ; x= l i n s p a c e ( 0 , 1 , 10) ;
>> y=x . / 2 ; z=s i n ( x )+s i n ( y ) ;
>> stem3 ( x , y , z , f i l l ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 104/215
Ejemplos de gr

aficas en tres dimensiones, Escript3.m (II)


Supercies tres dimensiones y contornos en dos y tres:
>> [ X, Y]= mes hgr i d ( 7 . 5 : . 5 : 7 . 5 ) ;
>> Z= s i n ( s q r t (X.2+Y. 2) ) . / s q r t (X.2+Y. 2) ;
>> s u r f (X, Y, Z) ; f i g u r e ; s u r f c (X, Y, Z) ;
>> f i g u r e ; s u r f l (X, Y, Z) ;
>> cont our (Z) ; cont our 3 (Z, 50) ;
Supercie con velocidad:
>> f i g u r e ; [ U, V,W]= s ur f nor m (X, Y, Z) ;
>> qui v e r 3 (X, Y, Z, U, V,W, 0 . 5 ) ;
Contornos:
>> [ X, Y]= mes hgr i d ( 2: . 2: 2 , 2: . 2: 3) ; Z= X. exp(X.2Y
. 2) ;
>> cont our (X, Y, Z) ; f i g u r e ; cont our (X, Y, Z, 50) ;
>> f i g u r e ; c ont our f (X, Y, Z) ;
Cambio de color y perspectiva:
>> f i g u r e ; s phe r e ( 16) ; a x i s s quar e ; s hadi ng f l a t ;
>> s e t ( gca , Zl i m , [ 0. 6 , 0. 6] ) ; s e t ( gcf , Col or , w ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 105/215
Ejemplos de gr

aficas en tres dimensiones, Escript3.m (III)


Rotaci on de la gura:
>> h= s u r f ( peaks ( 20) ) ; r o t a t e ( h , [ 1 , 0 , 0 ] , 1 5 ) ;
>> vi ew ( [ 1 0 , 1 0 ] ) ;
Mallado triangular de la base, no homogeneo. Supercie en funci on de
ese mallado:
>> f i g u r e ; x= r and ( 1 , 50) ; y= r and ( 1 , 50) ;
>> z= peaks (6x 3, 6x3) ;
>> t r i = del aunay ( x , y ) ; t r i me s h ( t r i , x , y , z ) ;
>> f i g u r e ; t r i s u r f ( t r i , x , y , z ) ;
Representaci on en cuatro dimensiones, la cuarta es el color:
>> f i g u r e ; l oad wi nd ; cav= c u r l ( x , y , z , u , v , w) ;
>> s l i c e ( x , y , z , cav , [ 9 0 , 1 3 4 ] , [ 5 9 ] , [ 0 ] ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 106/215
Pr

acticas funciones para gr

aficas
Escribir en un chero Fichero Cejer1.m el c odigo para obtener las
siguientes gracas,
Visualizar sobre el rango 2 a 2 la funci on v = e
x
2
y
2
z
2
.
Representar en el intervalo [8, 8] la funcion f (x) =
x
3
x
2
4
.
Gracar sobre los mismos ejes las funciones bessel (1, x), bessel (2, x) y
bessel (3, x) para valores entre 0 y 12, separados uniformemente entre
s dos decimas. Colocar tres leyendas y tres tipos de trazo diferentes
(normal, asteriscos y crculos) respectivamente para las tres funciones.
Representar la curva en polares r = 4(1 + cos(a)) para a entre 0 y 2
(cardiode). Representar tambien la curva en polares r = 3a para a entre
4 y 4 (espiral).
Representar la curva alabeada de coordenadas parametricas x = cos
2
(t),
y = sin(t) cos(t) y z = sin(t) para t entre 4 y 4.
Escribir en un chero Fichero Cejer2.m el c odigo para obtener las
siguientes gracas,
Representar la supercie, su graco de malla y su graco de contorno
cuya ecuacion es la siguiente:
x = xe
x
2
y
2
2 < x, y < 2
Representar en un graco de curvas de nivel con 20 lneas la supercie de
la ecuacion z = sin(x) sin(y) con 2 < x, y < 2.
Representar el paraboloide x
2
+ y
2
seccionado por el plano z = 2.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 107/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 108/215
Definici

on de clase y objeto
Una clase es un nuevo tipo de dato, a una estructura, para el que se
pueden denir funciones especicas y redenir los operadores.
Un objeto es un caso particular de una clase.
Los campos de la estructura asociada a una clase se llamaran propiedades
de la clase, y las funciones asociadas a una clase funciones metodo.
>> s= t f ( s ) ; % Cl as e t f , obj e t o s .
>> P= 1/( s +1) ; % Oper ador + y / r e d e f i n i d o s par a P
>> K= zpk ( [ ] , [ 1 , 2] , 1) ; % Cl as e zpk , obj e t o K
>> bode (P) ; % bode metodo de l a c l a s e t f
Caractersticas de la programaci on a objeto:
Redenicion de operadores especcos para la clase.
Datos encapsulados: Las propiedades de un objeto no son visibles y solo
se puede acceder a ellas desde las funciones metodo de la clase.
Herencia: Una clase se puede crear a partir de otra, heredando todas sus
funciones metodo. Las clases tf, zpk y ss derivan de la clase lti.
Agregacion: Un objeto puede contener otros objetos.
Toda la informaci on de una clase, tf, esta en el directorio asociado @tf.
Las propiedades de clase usada quedan en memoria. Se deben limpiar
para poder modicarlas,
>> c l e a r t f
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 109/215
Funciones m

etodo principales (I)


Constructor: Genera un objeto a partir de datos.
>> P= t f ( 1 , [ 1 , 2 , 3 ] ) ; % Cons t r uc t or t f , obj e t o P.
>> K= zpk ( [ ] , [ 1 , 2] , 1) ; % Cons t r uc t or zpk , obj e t o K
>> Pzpk= zpk (P) ; %P obj e t o t f , Pzpk obj e t o zpk
>> i s a (P, t f ) % a f i r ma t i v o
>> i s a (P, zpk ) % ne ga t i v o
>> P % Ll ama a f unc i on di s pl a y
Visualizador: Metodo display que muestra la informaci on del objeto.
>> P % Ll ama a f unc i on di s pl a y de t f
>> Pzpk % Ll ama a f unc i on di s pl a y de zpk
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 110/215
Funciones m

etodo principales (II)


Obtenci on de informaci on:
General: Metodo get(), muestra propiedades del objeto.
>> get (P)
Por ndices: Metodo B=subref(A,S)
>> P. num{1} %A=P, S( 1) . t ype = . , S( 1) . t ype = {} ,
>> %S( 1) . s ubs ={num } , S( 2) . s ubs ={1}
Introducci on de informaci on:
General: Metodo set(), cambia propiedades del objeto.
>> s e t (P, num , [ 1 , 2 ] )
Por ndices: Metodo A= subsasign(A,S,B)
>> P. num{1}= 1 %A=P, S( 1) . t ype = . , S( 2) . t ype ={}
>> %S( 1) . s ubs ={num } , S( 2) . s ubs ={1}, B=1
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 111/215
Redefinici

on de operadores (I)
Operacion M-chero Descripcion
a + b plus(a,b) Suma
a - b minus(a,b) Resta
-a uminus(a) Menos unitario
+a uplus(a) Mas unitario
a.*b times(a,b) Multiplicaci on por elemento
a*b mtimes(a,b) Multiplicaci on matricial
a./b rdivide(a,b) Divisi on derecha por elemento
a.\b ldivide(a,b) Divisi on izquierda por elemento
a/b mrdivide(a,b) Divisi on matricial derecha
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 112/215
Redefinici

on de operadores (II)
Operacion M-chero Descripcion
a\b mldivide(a,b) Divisi on matricial izquierda
a.^b power(a,b) Potencia por elemento
a^b mpower(a,b) Potencia matricial
a < b lt(a,b) Menor que
a > b gt(a,b) Mayor que
a <= b le(a,b) Menor que o igual a
a >= b ge(a,b) Mayor que o igual a
a ~= b ne(a,b) Distinto de
a == b eq(a,b) Igual a
a & b and(a,b) Y l ogico
a | b or(a,b) O logico
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 113/215
Redefinici

on de operadores (III)
Operacion M-chero Descripcion
~a not(a) NO l ogico
a:d:b colon(a,d,b) Operador dos puntos
a:b colon(a,b)
a ctranspose(a) Traspuesta conjugada compleja
a. transpose(a) Matriz transpuesta
display(a) Visualizaci on pantalla
[a b] horzcat(a,b,...) Concatenaci on horizontal
[a; b] vertcat(a,b,...) Concatenaci on vertical
a(s1,s2,...sn) subsref(a,s) Referencia por subndices
a(s1,...,sn) = b subsasgn(a,s,b) Asignamiento por subndices
(a) subsindex(a) Conversi on al ser ndice
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 114/215
Prioridades y ejemplos
Prioridades entre objetos ante metodos y operadores:
Un objeto creado tiene prioridad sobre una variable de Matlab,
>> P= 1/( s +1) ; % oper ador / y + de c l a s e t f .
Entre dos objetos creados hay que asignar prioridades,
>> i n f e r i o r t o ( c l a s s 1 , c l a s s 2 , . . . )
>> s u p e r i o r t o ( c l a s s 1 , c l a s s 2 , . . . )
Ejemplo de objetos, metodos y operadores:
>> s= t f ( s ) % Cons t r uc t or
>> P( 1)= 1/( s +1) ; % Oper ador es / , + , metodo
s ubs as i gn
>> P( 2)= 1/( s +2) ;
>> K= P( 1) % metodo s ubs r e f
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 115/215
Ejemplo: Una clase de polinomios (I)
Objetivos: Se pretende realizar una clase para trabajar con polinomios.
Para ello se denen las siguientes funciones metodo:
Metodo constructor polynom: Se crea un objeto a partir de los
coecientes del polinomio.
Metodo double: El polinomio se podra convertir a un vector.
Metodo display: El objeto se vera en la pantalla en forma de cadena de
caracteres.
Sobrecarga de operadores: Los operadores suma (+), resta (-) y
multiplicacion (*) son redenidos para polinomios.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 116/215
Ejemplo: Una clase de polinomios (II)
Metodo constructor,
f u n c t i o n p = pol ynom( a )
% pol ynom Cons t r uc t or de l a c l a s e pol ynom .
% p = pol ynom( v ) c r e a un pol i nomi o de un v e c t or .
% Los c o e f i c i e n t e e s t an en or den d e c r e c i e n t e
% de l a s po t e nc i a s de x .
i f na r gi n == 0
p . c = [ ] ;
p = c l a s s ( p , pol ynom ) ;
e l s e i f i s a ( a , pol ynom )
p = a ;
e l s e
p . c = a ( : ) . ;
p = c l a s s ( p , pol ynom ) ;
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 117/215
Ejemplo: Una clase de polinomios (III)
Metodo display:
f u n c t i o n d i s p l a y ( p)
% pol ynom\ d i s p l a y . Comando vent ana par a v e r e l obj e t o .
di s p ( i n t 2 s t r ( p . c ) ) ;
Metodo double:
f u n c t i o n c = doubl e ( p)
% pol ynom\ doubl e . Conv i e r t e pol ynom a un v e c t or doubl e .
% c = doubl e ( p) . Conv i e r t e un pol i nomi o en v e c t or .
c = p . c ;
Operador +:
f u n c t i o n r = pl us ( p , q)
% pol ynom\ pl us . Def i ne p + q par a pol i nomi os .
p = pol ynom( p) ; q = pol ynom( q) ;
k = l e ngt h ( q . c ) l e ngt h ( p . c ) ;
r = pol ynom ( [ z e r os ( 1 , k ) p . c ] + [ z e r os (1, k ) q . c ] ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 118/215
Ejemplo: Una clase de polinomios (IV)
Operador -:
f u n c t i o n r = mi nus ( p , q)
% pol ynom\mi nus . I mpl ementa p q e nt r e pol i nomi os .
p = pol ynom( p) ; q = pol ynom( q) ;
k = l e ngt h ( q . c ) l e ngt h ( p . c ) ;
r = pol ynom ( [ z e r os ( 1 , k ) p . c ] [ z e r os (1, k ) q . c ] ) ;
Operador *:
f u n c t i o n r = mti mes ( p , q)
% pol ynom\mti mes . I mpl ementa p q e nt r e pol i nomi os .
p = pol ynom( p) ;
q = pol ynom( q) ;
r = pol ynom( conv ( p . c , q . c ) ) ;
Ejemplo de su uso en workspace:
>> p= pol ynom % Crea un obj e t o v a c i o
>> p= pol ynom( p) % Devuel ve e l obj e t o que s e manda
>> p= pol ynom ( [ 1 , 2 , 3 ] ) % Crea un obj e t o p l l e n o
>> q= p+p
>> t= qp
>> a= doubl e ( p)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 119/215
Clases derivadas: Herencia (I)
Muchas veces se desea crear una nueva clase con las mismas propiedades
y funciones metodos que otra ya existente a la que se a naden nuevas
propiedades y funciones metodo.
Esto se puede conseguir a nadiendo un objeto de la clase existente
ClasePadre en la denici on de la nueva clase.
Los objetos de la nueva clase seran ObjetoHijo, y los de la clase
existente ObjetoPadre.
Un ObjetoHijo puede acceder a todos las funciones metodo de la
ClasePadre que no esten denidos en su clase.
La forma de denir un objeto hijo es la siguiente:
Obj et oHi j o= c l a s s ( Obj et oHi j o , Cl a s e Hi j o , Obj et oPadr e ) ;
Con esta denici on Matlab crea un componente
ObjetoHijo.ClasePadre donde se guardara la informacion de la parte
del ObjetoHijo con las mismas propiedades que el ObjetoPadre.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 120/215
Clases derivadas: Herencia (II)
Un objeto hijo puede recibir herencia de varios objetos padres,
Obj et oHi j o= c l a s s ( Obj et oHi j o , Cl a s e Hi j o , Obj etoPadr e1 ,
Obj et oPadr e2 ) ;
Una funcion metodo que no posea la ClaseHijo sera buscada en las
funciones de la clase ClasePadre1 y de no ser encontrada entre las de la
clase ClasePadre2.
Un ejemplo muy sencillo de una clase derivada es el de una clase de
funciones, cuyas propiedades son:
Nombre de la funcion.
Polinomio caracterstico.
Esta claro que esta clase funcion puede ser propuesta como derivada de
la clase polinomio polymon, a nadiendo a la misma una propiedad donde
se escriba el nombre de la funci on.
Todas las funciones metodo de la clase polynom pueden ser usadas en la
clase funcion excepto el metodo constructor, el metodo display y el
subsref, que van a ser redenidos.
Cuando los objetos funcion use funciones metodo de la clase polynom,
se esta trabajando con la parte del objeto funcion heredada, y el
resultado de la operaci on podra ser un objeto polynom o de otra clase ya
denida, pero nunca de la clase funcion.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 121/215
Clases derivadas: Herencia (III)
Funci on metodo constructor de funcion. C odigo.
f u n c t i o n p = f unc i on ( v a r a r g i n )
%FUNCION Cons t r ut or de l a c l a s e f unc i on .
s wi t c h nar gi n
cas e 0
pol y= pol ynom ;
p . nombre = ;
p = c l a s s ( p , f unc i on , pol y ) ;
cas e 1
i f i s a ( v a r a r g i n {1} , f unc i on )
p = v a r a r g i n {1};
e l s e
e r r o r ( Ti po de argumento e r r one o ) ; end
cas e 2
i f i s c h a r ( v a r a r g i n {1}) ,
p . nombre= v a r a r g i n {1};
e l s e
e r r o r ( Arg : nombre , pol i nomi o ) ; end
pol y = pol ynom( v a r a r g i n {2}) ;
p = c l a s s ( p , f unc i on , pol y ) ;
ot he r wi s e
e r r o r ( N umero de ar gumentos e r r one o ) ; end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 122/215
Clases derivadas: Herencia (IV)
Funci on metodo display. C odigo.
f u n c t i o n d i s p l a y ( p)
%POLYNOM/DISPLAY Comando vent ana par a v e r e l obj e t o .
di s p ( ) ;
di s p ( [ Funci on , p . nombre , = ] )
di s p ( ) ;
di s p ( [ char ( p) ] ) ;
Ejemplos en el workspace:
>> p= f unc i on % Obj et o f unc i on nul o
>> p1= f unc i on ( z e t a , [ 1 , 2 , 3 ] )
>> % Obj et o f unc i on con nombre y par amet r os .
>> p2= f unc i on ( et a , [ 2 , 3 , 4 ] )
>> p3= p1+p2
>> % Se usa un metodo de l padr e . El r e s u l t a d o en un
obj e t o pol ynom .
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 123/215
Clases derivadas: Herencia (V)
Funci on metodo subsref: Muestra por campos el nombre y polinomio de
la funcion, y por ndice el valor de la funci on en un punto. C odigo.
f u n c t i o n b = s u b s r e f ( a , s )
%SUBSREF Muestra , por campos e l c ont e ni do de l
% obj et o , por n d i c e s e l v a l o r en un c i e r t o punto .
s wi t c h s . type ,
cas e . ,
s wi t c h s . s ubs
cas e nombre ,
b= a . nombre ;
cas e pol y ,
b= char ( a . pol ynom) ;
ot he r wi s e
e r r o r ( Campos : nombre , pol y . ) ;
end
cas e ( ) ,
i nd= s . s ubs { : } ;
b= a . pol ynom( i nd ) ;
ot he r wi s e
e r r o r ( Campo o n d i c e e r r one o . ) ;
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 124/215
Clases agregadas (I)
Una clase puede tener de componentes objetos de otras clases ya
denidas.
Con ello, no se heredan directamente sus funciones metodo, pero estas
funciones podran ser usadas en la denici on de las nuevas funciones
metodo.
Ejemplo: La clase transfer tiene las siguientes propiedades:
Polinomio del numerador.
Polinomio del denominador.
Esta claro que se puede aprovechar la clase polynom para crear esta
nueva clase ya que sus dos componentes son polinomios.
Las funciones metodo de la nueva clase no tienen nada que ver con las de
polynom, pero en su construccion seran empleadas.
Las funciones metodo de la nueva clase son la funci on constructora,
display, subsref, plus, minus, mtimes y mrdivide.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 125/215
Clases agregadas (II)
Funci on metodo constructor. C odigo.
f u n c t i o n p = t r a n s f e r ( v a r a r g i n )
%FUNCION Cons t r ut or de l a c l a s e t r a n s f e r
% Crea una f unc i on de t r a n s f e r e n c i a compuesta de
% dos pol i nomi os , uno en numerador y ot r o en
denomi nador .
s wi t c h nar gi n
cas e 0
p . num= pol ynom ; p . den= pol ynom ;
p = c l a s s ( p , t r a n s f e r ) ; % Obj et o nul o
cas e 1
i f i s a ( v a r a r g i n {1} , t r a n s f e r )
p = v a r a r g i n {1}; % Obj et o f unc i on
e l s e
p . num= pol ynom( v a r a r g i n {1}) ; p . den= pol ynom ( 1) ;
p= c l a s s ( p , t r a n s f e r ) ; % Obj et o s o l o numerador
end
cas e 2
p . num= pol ynom( v a r a r g i n {1}) ; p . den= pol ynom( v a r a r g i n
{2}) ;
p = c l a s s ( p , t r a n s f e r ) ; % Obj et o numerador y
denomi nador
ot he r wi s e
e r r o r ( N umero de ar gumentos e r r one o ) ;
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 126/215
Clases agregadas (III)
Funci on metodo display. C odigo:
f u n c t i o n d i s p l a y ( p)
% t r a n s f e r \ d i s p l a y . Comando vent ana par a v e r e l obj e t o .
num= char ( p . num) ;
den= char ( p . den ) ;
di s p ( ) ;
di s p ( [ i nputname ( 1) , = ] )
di s p ( ) ;
di s p ( [ num] ) ;
di s p ( repmat ( , [ 1 , max ( [ s i z e (num, 2 ) , s i z e ( den , 2 ) ] ) ] ) ) ;
di s p ( den ) ;
Ejemplos en el workspace:
>> g= t r a n s f e r ; % Obj et o nul o
>> g= t r a n s f e r ( [ 1 , 2 , 3 ] ) % Obj et o con num y den= 1.
>> p= pol ynom ( [ 1 , 2 , 3 ] ) % Obj et o pol ynom
>> g= t r a n s f e r ( [ 1 , 2 , 3 ] , [ 3 , 4 , 5 ] ) ; % Obj et o con num y den
>> g= t r a n s f e r ( p , [ 1 , 2 , 3 ] ) ; % Obj et o con num y den
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 127/215
Clases agregadas (IV)
Funci on metodo subsref. C odigo:
f u n c t i o n b = s u b s r e f ( a , s )
% t r a n s f e r \ s u b s r e f . Por campos , l a r e p r e s e n t a c i o n de l
obj e t o .
% Por n d i c e s , e l v a l o r de l a f unc i on en un punto .
s wi t c h s . type ,
cas e . ,
s wi t c h s . subs ,
cas e num ,
b= char ( a . num) ; % pol i nomi o num
cas e den ,
b= char ( a . den ) ; % pol i nomi o den
ot he r wi s e
e r r o r ( Campos : num, den ) ;
end
cas e ( ) ,
i nd = s . s ubs { : } ;
b= a . num( i nd ) . / a . den ( i nd ) ; % Val or en x
ot he r wi s e
e r r o r ( Dar campo o v a l o r de x en p( x ) )
end
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 128/215
Clases agregadas (V)
Sobrecarga de operadores. C odigo:
f u n c t i o n r = pl us ( p , q)
% t r a n s f e r \ pl us . Def i ne p + q par a t r a n s f e r .
p = t r a n s f e r ( p) ;
q = t r a n s f e r ( q) ;
r . num= p . numq . den + p . denq . num;
r . den= p . denq . den ;
r= c l a s s ( r , t r a n s f e r ) ;
f u n c t i o n r = mi nus ( p , q)
% t r a n s f e r \mi nus . Def i ne p q par a t r a n s f e r .
p = t r a n s f e r ( p) ;
q = t r a n s f e r ( q) ;
r . num= p . numq . den p . denq . num;
r . den= p . denq . den ;
r= c l a s s ( r , t r a n s f e r ) ;
f u n c t i o n r = mti mes ( p , q)
% t r a n s f e r \mtime . Def i ne p q par a t r a n s f e r .
p = t r a n s f e r ( p) ;
q = t r a n s f e r ( q) ;
r . num= p . numq . num;
r . den= p . denq . den ;
r= c l a s s ( r , t r a n s f e r ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 129/215
Clases agregadas (VI)
Sobrecarga de operadores. C odigo:
f u n c t i o n r = mti mes ( p , q)
% t r a n s f e r \ mr di v i de Def i ne p / q par a t r a n s f e r .
p = t r a n s f e r ( p) ;
q = t r a n s f e r ( q) ;
r . num= p . numq . den ;
r . den= p . denq . num;
r= c l a s s ( r , t r a n s f e r ) ;
Ejemplos en el workspace:
>> g1= t r a n s f e r ( [ 1 , 2 , 3 ] , [ 2 , 3 , 4 ] )
>> g2= t r a n s f e r ( [ 1 , 4 , 3 ] ) % den=1
>> g3= g1+g2 ; % Obj et o t r a n s f e r
>> g3= g1/g2 % Obj et o t r a n s f e r
>> g3 . num % Cadena de c a r a c t e r e s
>> g3 ( 10) % Val or de c o c i e n t e en x=10
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 130/215
Pr

acticas de la programaci

on orientada a objeto
Modicar la funci on metodo subsref, Fichero Dejer1.m de la clase
funcion, de forma que los ndices sirva para devolver el valor del
coeciente correspondiente. Por ejemplo, p(3) debe devolver el tercer
coeciente.
Modicar la funci on metodo subsref, Fichero Dejer2.m, de la clase
transfer de forma que devuelva los ndices de numerador y denominador
correspondientes. Por ejemplo, g(1,2) debe devolver el primer coeciente
del numerador, y segundo del denominador.
Denir una funci on metodo subasgn, de las clases funcion y transfer,
Fichero Dejer3.m y Dejer4.m con un criterio similar a los empleados
en los dos apartados anteriores. Ejemplo en la clase funcion, p(3)=5,
introduce un 5 en la posicion tercera del polinomio. Ejemplo en la clase
transfer, g(2,3)=[1,2], introduce un 1 en la posicion segunda del
numerador, y un 2 en la posici on tercera de denominador.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 131/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 132/215
Definici

on de sistema continuos.
Un sistema es la relaci on entre una se nal de entrada y una de salida,
y(t) = F(u(t)).
Todo sistema fsico es causal, es decir, la se nal de salida depende en el
tiempo de la se nal de entrada.
Un sistema continuo en el tiempo puede ser representado
matematicamente mediante una ecuaci on diferencial ordinaria (ODE),
y
(n)
= f (t, y, y

, . . . , y
(n1)
).
Nota: La entrada es una funci on del tiempo u(t).
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 133/215
Definici

on de sistemas continuos lineales


Sistema lineal:
Si u(t) y(t), entonces u(t) y(t).
Si {u
1
(t), u
2
(t)} {y
1
(t), y
2
(t)}, entonces
{u
1
(t) + u
2
(t)} {y
1
(t) + y
2
(t)}.
Un sistema lineal se rige por una ecuaci on diferencial lineal,
y
(n)
+ a
n1
y
(n1)
+. . . + a
0
y = b
n
u
(n)
+ b
n1
u
(n1)
+. . . + b
0
u.
Nota: Ver que de esta forma se cumple con su denici on.
Funci on de transferencia de un sistema lineal es la transformada de
Laplace de su ecuacion diferencial,
Y(s)
U(s)
=
s
n
+ a
n1
s
n1
+. . . + a
0
b
n
s
n
+ b
n1
s
n1
+. . . + b
0
.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 134/215
Definici

on de sistema muestreados.
Un sistema muestreado puede ser representado por una ecuacion en
diferencias,
y(k) = f (k, y(k), y(k 1), . . . , y(k n)).
Un sistema muestreado lineal puede ser representado por un una ecuaci on
en diferencias lineal,
y(k+n)+a
1
y(k+n1)+. . .+a
0
y(k) = b
n
u(k+n)+b
n1
u(k+n1)+. . .+b
0
u(k).
Funci on de transferencia de un sistema muestreado lineal es la
transformada Z de su ecuaci on en diferencias,
Y(z)
U(z)
=
z
n
+ a
1
z
n1
+. . . + a
0
b
n
z
n
+ b
n1
z
n1
+. . . + b
0
.
Un sistema, en general puede estar compuesto por partes continuas,
muestreadas, lineales y no lineales.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 135/215
Simulaci

on en Matlab y Simulink: Comparaci

on
La simulacion de un sistema consiste en predecir los datos de salida del
mismo frente a los datos de entrada.
Simulaci on desde Matlab:
Creacion de un chero con la ecuacion diferencial del sistema en forma de
derivadas de primer orden.
Resolucion del ODE por metodos similares a los de Runge-Kutta.
Simulaci on desde Simulink (interface graco):
Dibujo del sistema en un entorno graco, donde se dispone de iconos para
sus partes lineales, no lineales, continuas y discretas.
Creacion de un chero con la informacion de la planta y uso de las
funciones de simulacion de matlab.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 136/215
Simulaci

on con Matlab
La ecuacion ODE del sistema y
(n)
= f (t, y, y

, . . . , y
(n1)
) se debe
transformar a una ecuaci on ODE vectorial de primer orden y

= F(t, y).
Una forma sencilla de conseguirlo es mediante el cambio,
y
1
= y, y
2
= y

, . . . , y
n
= y
(n1)
,
y por tanto
_
_
_
_
_
y

1
y

2
.
.
.
y

n
_

_
=
_
_
_
_
_
y
2
y
3
.
.
.
f (t, y
1
, y
2
, . . . , y
n
)
_

_
.
Condiciones iniciales: Valores iniciales de
_
y
1
(t
0
), . . . , y
n
(t
0
)
_
T
.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 137/215
ODE de la funci

on de Val der Pol


Ejemplo: Funci on de Val der Pol, (dinamica no lineal
masa-muelle-amortiguador)
y

1
(1 y
2
1
)y

1
+ y
1
= 0,
en ecuaciones de estado,
_
y

1
y

2
_
=
_
y
2
(1 y
2
1
)y
2
y
1
_
.
Fichero con la relacion de las ecuaciones de estado,
f u n c t i o n dy= pol ( t , y )
% t es e l ti empo
% y es e l v a l o r de l v e c t or par a un t .
% dy es l a de r i v a da de y par a un t dado .
% y ( 3) par amet r o mo d i f i c a b l e con c o n d i c i o n e s i n i c i a l e s
dy = [ y ( 2) ; y ( 3) (1y ( 1) 2) y ( 2)y ( 1) ; 0 ] ; % Columna
Esta funcion sera llamada por el programa ODE en los sucesivo puntos t
para obtener la derivada.
La entrada se debe poner en funci on de t.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 138/215
Clasificaci

on de ODEs y formulaci

on
Funciones ODE para sistema suaves basados en metodos de Ruge-Kutta:
ode45, ode23 y ode113.
Funciones ODE para problema con cambios de alta frecuencia:
ode15s, ode23s y ode23t.
Formato de la llamada a la funci on ODE:
>> [ t , y]= s o l v e r (@F, tspan , y0 , opt i on )
@F: Nombre o puntero del chero .m donde se guarda la funcion.
tspan:
[ti,tf]: Lmite inferior y superior. Paso y n umero de valores de
salida variables.
linspace(ti,tf,Npuntos): Se ja el n umero de puntos y tiempo
cuya salida se desea conocer. El programa internamente tiene paso
variable.
y0: Valores iniciales deseados (vector columna).
option: Especicaciones del algoritmo. Si se pone [] se toman por
defecto.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 139/215
Opciones de las funciones ODE
Consultar con la ayuda:
>> he l p ode s e t
>> opt i on= ode s e t ; % dat os por de f e c t o .
>> x0= [ 0 . 1 , 1. 1 , 0 . 1 ] ; % dos es t ados , un par amet r o
>> s o l = ode45 ( @pol , x0 ) ; % Ve r s i on 7
>> y= de v a l ( s ol , l i n s p a c e ( 0 , 10 , 100) ) ; % s o l . en punt os
Ejemplos:
N umero de datos de salida:
>> opt i on= ode s e t ( Re f i ne , 4) ; % por de f e c t o .
Jacobiano del ODE en funci on jacpol.m:
>> opt i on= ode s e t ( Jacobi an , @j ac pol ) ;
Se precisa una funcion de la forma,
f u n c t i o n j a c= j a c p o l ( t , y )
j a c = [ 0 , 1 , 0;
2y ( 1) y ( 2) , 1y ( 1) 2 , (1y ( 1) 2) y ( 2) ;
0 , 0 , 0 ] ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 140/215
Ecuaciones diferenciales con valores de frontera (I)
El problema puede ser planteado por las ecuaciones como para a < t < b,
y

= f (t, y, p)
g(y(a), y(b), p) = 0
Se resuelve con la funci on:
>> s o l = bvp4c (@F, @bc , s o l i n i t , opt i on , p1 , p2 , . . . )
@F nombre o puntero a funcion que dene el problema.
@bc nombre o puntero a funcion que dene los valores frontera.
solinit: Fijar el mallado en t y puntos iniciales para y.
option opciones de resolucion bvpset, bvpget.
pi parametros extras.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 141/215
Ecuaciones diferenciales con valores de frontera (II)
Ejemplo: Soluci on de la ecuaci on y

+|y| = 0, sabiendo que y(0) = 0 e


y(4) = 2.
Funci on diferencial:
f u n c t i o n dydx= F( t , y )
dydx= [ y ( 2) ; abs ( y ( 1) ) ] ;
Funci on frontera:
f u n c t i o n r e s= bc ( ya , yb )
r e c= [ ya ( 1) ; yb ( 1) +2] ;
Operaciones a realizar:
>> s o l i n i t = b v p i n i t ( l i n s p a c e ( 0 , 4 , 5) , [ 1 , 0 ] ) ;
>> s o l = bvp4c (@F, @bc , s o l i n i t ) ;
>> t=l i n s p a c e ( 0 , 4) ; y= de v al ( s ol , t ) ;
>> p l o t ( t , y ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 142/215
Ecuaciones diferenciales en derivadas parciales (I)
Una ecuacion en derivadas parciales puede formularse como:
c
_
x, t, u,
u
x
_
u
t
= x
m

x
_
x
m
f
_
x, t, u,
u
x
__
+ s
_
x, t, u,
u
x
_
donde a x b, t
0
t t
f
.
Condiciones iniciales: Para t = T
0
,
u(x, t
0
) = u
0
(x).
Condiciones frontera: Para x = a o x = b,
p(x, t, u) + q(x, t)f
_
x, t, u,
u
x
_
= 0.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 143/215
Ecuaciones diferenciales en derivadas parciales (II)
Se resuelve con la funci on:
>> s o l = pdepe (m, @F, @i ni t , @f r ont , xmesh , tspan ,
opt i ons , p1 , p2 , . . . )
m: Simetra de la ec. diferencial, bloques (m=1), cilndrica (m=2) y esferica
(m=3).
F Nombre o puntero a la denicion de funcion.
>> [ c , f , s ]= F( x , t , u , dudx )
init: Nombre o puntero a las condiciones iniciales.
>> u= i n i t ( x )
front: Nombre o puntero a las condiciones frontera.
>> [ pl , ql , pr , pr ]= f r o n t ( xl , ul , xr , ur , t )
xmesh: Mallado de los valores de x.
tspan: Mallado de los valores de t.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 144/215
Ecuaciones diferenciales en derivadas parciales (III)
Ejemplo: Resolver la ecuaci on diferencial

2
u
t
=

x
_
u
x
_
,
sujeto a las condiciones iniciales u(x, 0) = sin(x) y condiciones frontera
u(0, t) = 0, e
t
+
u
x
(1, t) = 0
f u n c t i o n [ c , f , s ]= F( x , t , u , dxdu )
c= pi 2; f= dxdu ; s =0;
f u n c t i o n u0= i n i t ( x )
u0= s i n ( pi x ) ;
f u n c t i o n [ pl , ql , pr , qr ]= f r o n t ( xl , ul , xr , ur , t )
pl=ul ; ql =0; pr= pi exp(t ) ; qr= 1;
>> m= 0; x= l i n s p a c e ( 0 , 1 , 20) ; t= l i n s p a c e ( 0 , 2 , 5) ;
>> s o l = pdepe (m, @F, @i ni t , @f r ont , x , t ) ;
>> u= s o l ( : , : , 1 ) ;
>> f i g u r e ; s u r f ( x , t , u) ;
>> f i g u r e ; p l o t ( x , u( end , : ) ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 145/215
Pr

acticas de simulaci

on con matlab
Resolver la ecuaci on de Van del Pol y

+(1 y
2
)y

+ y = 0 para
= 1, con valores iniciales y(0) = 2 e y

(0) = 0, en el intervalo
t = [0, 20] (usando su Jacobiano) por el ode45 y ode23. Generalizar el
resultado para una cualquiera. El chero script con la resoluci on del
problema se llamara Eejer1.m.
Resolver la ecuaci on de Lorenz, usadas en la descripci on de sistemas
ca oticos, para los puntos iniciales y valores de , r y b que el usuario
desee, por ejemplo = 10, r = 28 y b = 8/3. El chero script con la
resoluci on del problema se llamara Eejer2.m.
x

= (y x)
y

= x(r z) y
z

= xy bz
Dada la ecuaci on y

+( 2q cos(2t))y = 0, con condiciones de frontera


y(0) = 1, y

(0) + y

() = 0 encontrar una soluci on para q = 15 y


= 15, basandose en una solucion inicial para diez puntos de t en el
intervalo [0, ]. Dibujar la graca de la primera componente en 100
puntos igualmente espaciados entre [0, ]. El chero script con la
resoluci on del problema se llamara Eejer3.m.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 146/215
Simulink: Tabla de bloques propios
Bloques especcos de Simulink:
Continuous: Bloques de sistemas continuos escritos en base a su
funciones de transferencia; sus polos, ceros y ganancias; y sus ecuaciones
en espacio de estado.
Discrete: Bloques de sistemas discretos escritos en base a su funciones
de transferencia; sus polos, ceros y ganancias; y sus ecuaciones en espacio
de estado.
Function & Tables: Funciones y tablas de Matlab. Especial importancia
las S-Function.
Math: Bloque de operaciones matematicas entre se nales.
Nonlinear: Bloque de no linealidades.
Signal & Systems: Entradas y salidas de datos hacia el espacio de
trabajo de Matlab (bloques in y out), y hacia cheros. Bloque subsystem
que permite generar un diagrama de bloque dentro de otro.
Sinks: Bloques que muestran los datos simulados en pantallas o los
guardan en cheros.
Sources: Bloques que generan diferentes tipos de se nales.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 147/215
Simulink: Tabla de bloques pertenecientes a toolbox
Bloques pertenecientes a toolbox de Matlab:
Control System Toolbox: Bloques de sistemas continuos y discretos en
la formulacion orientada a objeto LTI especca de esa toolbox.
Real-Time: Bloques de comunicacion entre el sistema y una tarjeta de
adquisicion de datos.
En general, todas las toolbox de matlab han desarrollado funciones de
simulink en la version 7 o posterior.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 148/215
Simulink: Simulaci

on de sistemas desde matlab


Interface graco para modelar un sistema.
Simulaci on desde Matlab: Entradas bloques in y salidas bloques out.
>> [ t , x , y]= si m ( FUN , tspan , opt i on , [ t , u ] )
FUN: Nombre del chero .mdl del chero Simulink.
tspan:
[ti,tf]: Lmite inferior y superior. Paso y n umero de valores de
salida variables.
linspace(ti,tf,Npuntos): Se ja el n umero de puntos y tiempo
cuya salida se desea conocer. El programa internamente tiene paso
variable.
x0: Valores iniciales de las variables de estado (vector columna).
option: Especicaciones del algoritmo. Si se pone [] se toman por
defecto.
[t,u]: Tiempo y entradas al modelo Simulink desde el espacio de trabajo.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 149/215
Ejercicios de simulaci

on con matlab y simulink


Formular en un chero *.m los dos modelos planteados en Simulink y
demostrar que la simulaci on con la funci on ode45 y con Simulink es
equivalente. El nombre del chero script sera Eejer4.m.
1
Out1
s+1
1/100s+1
Transfer Fcn
Saturation
s
1
Integrator1
s
1
Integrator
1
In1
1
Out1
1
s+1
Transfer Fcn
Relay
s
1
Integrator1
s
1
Integrator
1
In1
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 150/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 151/215
GUIDE: Interface gr

afico de matlab (I)


Definicion: Es una herramienta para construir interfaces gracos con
botoneras, guras, texto, y mas elementos.
Construcci on de gr aficos: Se realiza con un interface del programa
que permite colocar cada elemento donde se desee. Tras ello se exporta la
informacion a un chero .m.
Programaci on de funciones: Cada elemento del graco tiene asociado
en el chero .m una funcion donde el programador escribe las
instrucciones de cada elemento.
Ejemplo: La siguiente graca muestra un inteface para el analisis de las
se nales cardacas. Se compone de,
Pantalla: para visualizar los datos.
Botones: para marcar las operaciones que se desean realizar.
Pantallas de texto: Para mandar mensajes al programa.
0.97 0.98 0.99 1 1.01 1.02 1.03 1.04
x 10
5
-500
0
500
1000
1500
2000
2500
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 152/215
GUIDE: Interface gr

afico de matlab (II)


Entorno grafico: El comando GUIDE abre una pantalla con la que se
puede dibujar el esquema graco del interface,
Cada elemento a nadido es un objeto con un nombre y propiedades que se
pueden modicar en la pantalla.
Los elementos se pueden alinear, formar bloques y otra serie de
operaciones para conseguir una graca bonita.
Cuando la gura se haya terminado se procede a exportar la informacion a
un chero .m.
Pantalla GUIDE y paleta de trabajo:

A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 153/215
GUIDE: Interface gr

afico de matlab (III)


Programacion de los objetos: En el chero .m generado con el
interface cada objeto tiene asociado dos funciones, una de inicializaci on y
otra de llamada.
Variables de las funciones: Son dos objetos, hObject para los
gracos y handles para la informaci on.
Ejemplo: Barra para mandar datos (slider),
Funci on creaci on de un slider:
f u n c t i o n S Di m Cr eateFcn ( hObj ect , event dat a , handl e s )
% I nt r oduc e en e l obj e t o g r a f i c o l o s v a l o r e s i n i c i a l e s
s e t ( hObj ect , Val ue , 5) ; s e t ( hObj ect , Min , 0) ;
s e t ( hObj ect , Max , 10) ;
Funci on de llamada de un slider:
f u n c t i o n S Di m Cal l back ( hObj ect , event dat a , handl e s )
% Ext r ae de l obj e t o g r a f i c o e l v a l o r
N= get ( hObj ect , Val ue ) ;
% I nt r oduc e di cho v a l o r en ot r o obj e t o
% E Dim , c a s i l l a de t e x t o
s e t ( handl e s . E Dim , St r i n g , num2str ( f l o o r (N) ) ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 154/215
GUIDE: Ejercicios propuestos
Ejercicio: Realizar un interface de usuario con la herramienta GUIDE
que consiga mostrar en una pantalla gracas elegidas por el usuario en
diferentes formatos, supercie, mallado o contorno. La funci on donde
debe ser guardado el programa se llamara Fejer1.m
Ver las explicaciones del manual de matlab del interface de usuario,
builgui.pdf, donde se explica este ejemplo con detalle.


A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 155/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 156/215
Funciones matem

aticas b

asicas (I)
Funcion Comentario
abs Valor absoluto
acos, acosh Arco coseno y arco coseno hiperb olico
acot, acoth Arco cotangente y arco cotangente hiperb olico
acsc, acsch Arco cosecante y arco cosecante hiperbolico
angle Argumento
asec, asech Arco secante y arco secante hiperb olico
asin, asinh Arco seno y arco seno hiperbolico
atan, atanh Arco tangente y arco tangente hiperb olico
atan2 Arco tangente en el cuarto cuadrante
ceil Redondeo al entero mas pr oximo
complex Forma un n umero complejo
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 157/215
Funciones matem

aticas b

asicas (II)
Funcion Comentario
conj Complejo conjugado
cos,cosh Coseno y coseno hiperb olico
cot,coth Cotangente y cotangente hiperb olica
csc,csch Cosecante y cosecante hiperb olica
exp Exponencial
fix Elimina la parte decimal
floor Mayor entero menor o igual que un real dado
gcd Maximo com un divisor
imag Parte imaginaria de un n umero complejo
lcm Maximo com un m ultiplo
log Logaritmo neperiano
log2 Logaritmo base 2
log10 Logaritmo base 10
mod M odulo
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 158/215
Funciones matem

aticas b

asicas (III)
Funcion Comentario
nchoosek Coeciente binomial
real Parte real de un n umero complejo
rem Resto de la division
round Redondeo al entero mas cercano
sec,sech Secante y secante hiperb olica
sign Signo
sin,sinh Seno y seno hiperb olico
sqrt Raz cuadrada
tan,tanh Tangente y tangente hiperb olica
Pueden consultarse con
>> he l p e l f u n
MATLAB tiene tambien funciones matematicas especiales
>> he l p s pe c f un
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 159/215
Ejemplo de funciones matem

aticas b

asicas DElfun1.m
Combinaciones de 10 elementos tomadas de 4 en 4
_
10
4
_
:
>> nchoosek ( 10 , 4)
Seno y coseno de los angulos entre 0 y 2, incrementando de /2 en /2.
>> s i n ( 0 : pi /2: 2 pi )
>> cos ( 0 : pi /2: 2 pi )
Algunas propiedades de las funciones exponencial y logartmica
>> exp (2 pi i )
>> exp ( l og ( 2) )
>> 2 exp ( i pi )
>> 2( cos ( pi )+i s i n ( pi ) )
>> l og (3+2 i )
Algunas propiedades de las funciones trigonometricas
>> s i n ( pi /4)2+cos ( pi /4) 2
>> ( exp ( 5)+exp(5) ) /2
>> cosh ( 5)
>> cosh ( pi )2s i nh ( pi ) 2
>> 1+t an ( pi /4) 2
>> s ec ( pi /4) 2
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 160/215
Funciones de transformaci

on de coordenadas
Funcion Comentario
cart2pol,pol2cart Transforma cartesianas a polares (cilndricas 3D)
cart2sph,sph2cart Transforma cartesianas a esfericas
Ejemplo de transformacion de coordenadas DCoor1.m
Transforma el punto (3, 2, 5) de cilndricas a cartesianas:
>> [ x , y , z]= p o l 2 c a r t ( 3 , 2 , 5)
Transforma el punto (1, 1, 1) de cartesianas a cilndricas y a esfericas:
>> [ c1 , c2 , c3]= c a r t 2 p o l ( 1 , 1 , 1)
>> [ c1 , c2 , c3]=c ar t 2s ph ( 1 , 1 , 1)
Transforma el punto (5, /3) de cilndricas a cartesianas:
>> [ x , y]= p o l 2 c a r t ( 5 , pi /3)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 161/215
Funciones estad

sticas b

asicas (I)
Funcion Comentario
max Maximo de vector
mean Media
median Mediana
min Maximo
perms Permuta las las de una matriz
sort Datos ordenados
sortrows Ordena las de una matriz
std Desviaci on estandar.
var Varianza
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 162/215
Funciones estad

sticas b

asicas (II)
Funcion Comentario
corr Correlaci on entre variables
cov Matriz de covarianzas
corrcoef Matriz de correlaciones
xcorr Correlaci on cruzada entre variables
xcov Covarianzas cruzadas entre variables
cumprod Producto acumulativo
cumsum Suma acumulativa
cumtrapz Integraci on acumulativa trapezoidal
diff Funci on diferencial y aproximaci on acumulativa
find Busca datos en vectores
hist,histc Histograma y contaje de histograma
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 163/215
Ejemplo funciones b

asicas estad

stica DStat1.m (I)


Generamos dos series de 1000 n umeros cada una que se almacenan en los
vectores x e y. Estos vectores representan un conjunto de medidas
obtenidas de muestrear dos variables aleatorias X e Y.
>> r andn ( s eed , 1) ;
>> x = r andn ( 1000 , 1) ;
>> y = r andn ( 1000 , 1) ;
El valor medio de x se calcula con el comando:
>> mean( x )
Si hubiera alg un valor NaN en el vector x, el comando mean(x) devuelve
NaN como media, para descontar estos valores se utiliza el comando NaN
>> xn=x ;
>> xn ( 200)=NaN;
>> mean( xn )
>> nanmean ( xn )
La mediana se calcula con el comando:
>> medi an ( x )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 164/215
Ejemplo funciones b

asicas estad

stica DStat1.m (II)


La desviaci on tpica se calcula con el comando
>> s t d ( x )
La varianza se calcula con el comando
>> var ( x )
El valor mas grande de la serie se obtiene con el comando
>> max( x )
El valor mas peque no de la serie se obtiene con el comando
>> min ( x )
El rango de valores de la serie se obtiene con el comando
>> r ange ( x )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 165/215
Ejemplo funciones b

asicas estad

stica DStat1.m (III)


La matriz de covarianza cruzada entre las dos variables aleatorias X e Y
se obtiene con el comando:
>> cov ( x , y )
La matriz de correlaci on cruzada entre las dos variables aleatorias X e Y
se obtiene con el comando:
>> c o r r c o e f ( x , y )
Para obtener la posici on o ndice del mayor o menor valor dentro del
vector x, se puede utilizar el comando max o min con argumentos de
salida.
>> [ a i ] = max( x )
El mayor valor es a, y su posici on dentro del vector x queda almacenado
en la posicion i.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 166/215
Ejemplo funciones b

asicas estad

stica DStat1.m (IV)


Los valores del vector x pueden ordenarse con el comando sort
>> xs = s o r t ( x ) ;
Se puede obtener el ndice de ordenaci on utilizando sort con un segundo
argumento de salida
>> [ xs i ] = s o r t ( x ) ;
Tanto xs, como x(i) contienen los valores ordenados de menor a mayor,
para ver los que van de la posici on 201 a 210 se hace:
>> [ xs ( 201: 210) x ( i ( 201: 210) ) ]
El histograma de los datos se calcula con el comando
>> h i s t ( x )
Por defecto el comando hist utiliza 10 intervalos. Para utilizar un n umero
diferente de intervalos, por ejemplo 50, hacer
>> h i s t ( x , 50)
La cuenta de elementos h por intervalo i se obtiene con el comando
>> [ h i ] = h i s t ( x , 50) ;
i contiene el valor medio del intervalo y h la cuenta de elementos
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 167/215
Ejercicios de tratamiento de datos
En un chero script de nombre Gejer1.m realizar las siguientes
operaciones:
Generar una variable aleatoria x con distribucion normal y otra y con
distribucion uniforme, ambas con 1000 elementos.
Hallar la media, varianza y mediana de ambas variables.
Hallar el histograma de ambas variables.
Representar la funcion de distribucion acumulada de ambas variables a
partir de los datos ordenados.
Representar la funcion de distribucion de ambas variables a partir de la
diferencia de los datos obtenidos en el apartado anterior.
Hallar el diagrama Q-Q entre ambas variables, es decir, el diagrama de los
datos ordenados de una variable con respecto a la otra.
Hallar la correlacion y convarianza entre ambas variables.
Hallar la correlaci on y covarianza cruzadas de las variables consigo mismas
y entre ellas para un tiempo de [, ].
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 168/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 169/215
Funciones b

asicas de

algebra matricial (I)
Funcion Comentario
expm Exponencial de una matriz e
A
logm Logaritmo neperiano de una matriz
sqrtm Raz cuadrada de una matriz
funm Cualquier funci on matematica aplicada a una matriz
transpose, () Transpuesta de una matriz
inv Inversa de una matriz
det Determinante de una matriz
rank Rango de una matriz
trace Traza de una matriz
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 170/215
Funciones b

asicas de

algebra matricial (II)
Funcion Comentario
eig Valores propios de una matriz
svd Valores singulares de una matriz
cond N umero de condici on de una matriz
rcond Recproco del n umero de condici on (estimado)
norm Norma de una matriz
null Base ortonormal del n ucleo de una matriz
orth Base ortonormal de la imagen de una matriz
subspace

Angulo entre los subespacios de dos matrices
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 171/215
Ejemplo de Matlab de funciones de

algebra de matrices DAlg1.m (I)
Formamos una matriz cuadrada aletoria de dimensi on 3
>> A=r andn ( 3)
Calculamos su traspuesta
>> A
Calculamos su rango con rank
>> r ank (A)
Calculamos su determinante con det
>> det (A)
Calculamos sus autovalores con eig
>> e i g (A)
Calculamos su traza con eig
>> e i g (A)
Comprobamos que la traza es la suma de los autovalores
>> [ sum( e i g (A) ) t r a c e (A) ]
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 172/215
Ejemplo de Matlab de funciones de

algebra de matrices DAlg1.m (II)
Comprobamos que el determinante es el producto de los autovalores
>> [ pr od ( e i g (A) ) det (A) ]
Calculamos el n umero de condici on
>> cond (A)
Comprobamos que el n umero de condici on es el cociente entre el maximo
y el mnimo autovalor
>> s q r t ( max( e i g (A A) ) /min ( e i g (A A) ) )
>> max( svd (A) ) /min ( svd (A) )
Estimamos el recproco del n umero de condici on con rcond
>> r cond (A)
Obtenemos el error relativo de estimaci on obtenido con rcond)
>> abs ( cond (A)1/r cond (A) ) /cond (A)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 173/215
Ejemplo de Matlab de funciones de

algebra de matrices DAlg2.m (I)
Formamos una matriz cuadrada compleja aleatoria de dimensi on 3
>> B=r andn ( 3)+j r andn ( 3)
Calculamos B elevada al cubo
>> B3
Calculamos 2 elevado a B
>> 2B
Calculamos la exponencial de B por dos metodos
>> expm(B)
>> exp ( 1) B
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 174/215
Ejemplo de Matlab de funciones de

algebra de matrices DAlg2.m (II)
Calculamos el logaritmo neperiano de B por dos metodos
>> l ogm(B)
>> funm(B, l og )
Calculamos la raz cuadrada de B por tres metodos
>> sqrtm (B)
>> funm(B, s q r t )
>> B. 5
Calculamos el seno y coseno de B
>> funm(B, s i n )
>> funm(B, cos )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 175/215
Descomposici

on de matrices
Funcion Comentario
[V,D]=eig(A) AV = VD, D diagonal
[T,B]=balance(A) TB = AT, eig(A) eig(B)
[U,T]=schur(A) UT = AU, U

U = I , T triangular superior
[L,U,P]=lu(A) PA = LU, P permutaci on, L triangular inferior,
U triangular superior
R=chol(A) R

R = A para A denida positiva, R triangular superior


[Q,R,P]=qr(A) AP = QR, P permutaci on, Q ortogonal,
R triangular superior
[V,J]=jordan(A) AV = VJ, J matriz de Jordan
pinv Pseudoinversa de una matriz
poly Polinomio caracterstico de una matriz
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 176/215
Ejemplo de descomposici

on de matrices DAlg3.m (I)


Formamos una matriz cuadrada aletoria de dimensi on 3
>> A=r andn ( 3)
Calculamos su descomposici on en valores propios con svd
>> [ V, D]=svd (A)
Comprobamos la descomposici on:
>> AVVD
Calculamos la matriz balanceada de A
>> [ T, B]=bal anc e (A)
Comprobamos la descomposici on
>> [ B T\AT]
>> e i g (A)
>> e i g (B)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 177/215
Ejemplo de descomposici

on de matrices DAlg3.m (II)


Calculamos la descomposicion de Schur de A
>> [ U, T]=s chur (A)
Comprobamos la descomposici on
>> [ UTU A]
>> UU
Calculamos la descomposicion QR de A
>> [ Q, R, E]=qr (A)
Comprobamos la descomposici on
>> [QR AE]
>> QQ
Calculamos la descomposicion LU de A
>> [ L , U, P]=l u (A)
Comprobamos la descomposici on
>> [ LU PA]
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 178/215
Ejemplo de descomposici

on de matrices DAlg3.m (III)


Calculamos la descomposicion SVD de A
>> [ U, S , V]=svd (A)
Comprobamos la descomposici on
>> [ USV A]
>> U U
>> VV
Para calcular el factor de Choleski necesitamos una matriz denida
positiva que calculamos premultiplicando A por su transpuesta
>> AA=A A
>> R=c hol (AA)
Comprobamos la descomposici on
>> [ R R AA]
Comprobamos que si la matriz no es denida positiva no tiene factor de
Choleski y se obtiene un error
>> R=c hol (A)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 179/215
Soluci

on de sistemas de ecuaciones
Funcion Comentario
X=A/B Resuelve XA = B
X=A\B Resuelve AX = B por mnimos cuadrados
X=lsqnonneg(A,b) Soluci on de mnimos cuadrados de Ax = b, x 0
X=linsolve(A,B) Resuelve AX = B, A matriz cuadrada, B matriz
r=roots(p) Races de un polinomio p
p=poly(r) Polinomio de races v
x=fzero(fun,x0) Calcula un cero de la funci on fun pr oximo a x0
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 180/215
Ejemplo soluci

on de sistemas DAlg4.m (I)


Obtenemos las races del polinomio p(x) = x
3
+ 2x
2
3x + 1
>> v = r o o t s ( [ 1 2 3 1 ] )
Obtenemos el polinomio que tiene races 1, +2, +j y j
>> p = pol y ([ 1 2 j j ] )
Sea el sistema de ecuaciones lineales
x + 2y + 3z = 3
2x + 3y + z = 1
x + y + 5z = 5
Para resolverlo se forman las matrices A y b
>> A = [ 1 2 3; 2 3 1; 1 1 5]
>> b = [ 3 1 5]
La soluci on es:
>> X=A\b
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 181/215
Ejemplo soluci

on de sistemas DAlg4.m (II)


La soluci on de mnimos cuadrados no negativa es:
>> Xn=nl s qnoneg (A, b)
La ecuacion x sin(x) = 1/2 puede resolverse con fzero en el entorno de
los puntos 2, 4 y 6:
>> [ f z e r o ( x s i n ( x ) .5 , 2) f z e r o ( x s i n ( x ) .5 , 4) . . .
>> f z e r o ( x s i n ( x ) .5 , 6) ]
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 182/215
Ejercicios de

algebra de matrices
En un chero script de nombre Gejer1.m realizar el siguiente ejercicio.
Dada la siguiente matriz:
A =

2/3 2/5 2/7 2/9 2/11


2/5 2/7 2/9 2/11 2/13
2/7 2/9 2/11 2/13 1/15
2/9 2/11 2/13 2/15 2/17
2/11 2/13 2/15 2/17 1/19

Autovalores, autovectores, polinomio caracterstico y n umero de la


condicion.
Hallar al inversa de la matriz.
Hallar la descomposicion por los siguientes metodos: Jordan, Schur, LU,
QR, Choleski y SVD. Comprobar si es posible la descomposiciony si los
valores obtenidos son ciertos.
Si b = [1, 3, 5, 7, 9]

resolver el valor de debe tener x para que se cumpla


la ecuacion Ax = b.
En un chero script de nombre Gejer2.m realizar el siguiente ejercicio.
Sea x y n dos vectores aleatorios de distribuci on uniforme entre [0, 1] de
100 elementos.
Fijar un valor para los parametros [a, b, c].
Obtener el valor de y de la formula y = a x + b x
2
+ c x
3
+ 0,1 n.
Estimar el valor de los parametros [a, b, c] a partir del valor de x e y
usando mnimos cuadrados. Se considera que n es un ruido.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 183/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 184/215
Funciones de relaci

on y filtros.
Funcion Comentario
cov Varianza de un vector
corrcoef Coecientes de correlaci on (normalizados)
conv Convoluci on de datos, producto de polinomios
diff Diferencias entre elementos de un vector
gradient Derivadas parciales numericas de una matriz
del2 Laplaciano discreto de una matriz
filter Filtro FIR y IIR de datos
ltitr Respuesta lineal
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 185/215
Pr

acticas con funciones de relaci

on y filtros, Bscript2.m (I)


Varianza de un vector
>> l oad count . dat
>> a= cov ( count ( : , 1 ) ) ;
Coeciente de correlaci on:
>> b= c o r r c o e f ( count ) ;
Convoluci on entre dos vectores:
>> c= conv ( [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ) ;
>> d= conv ( count ( : , 1 ) , count ( : , 2 ) ) ;
Diferencial., Derivada aproximada:
>> a=d i f f ( count ) ;
>> s i z e ( a ) , s i z e ( count )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 186/215
Pr

acticas con funciones de relaci

on y filtros, Bscript2.m (II)


Gradientes, derivada parcial aproximada:
>> [ px , py]= g r a d i e n t ( count ) ;
Laplaciano discreto de un vector del
2
u = (d
2
u/dx
2
+ d
2
/dy
2
):
>> l p= de l 2 ( count )
Filtro FIR y IIR de vectores:
>> b =[ 1 , 1 , 1] /3; a=1;
>> f= f i l t e r ( b , a , count ) ;
Simulaci on de un sistema lineal en ecuaciones de estado:
>> A= [ 0 . 9 , 0 ; 0 , 0 . 9 ] ; B=[ 0 , 1] ;
>> x= l t i t r (A, B, ones ( 100 , 1) ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 187/215
An

alisis en frecuencia
Funcion Comentario
fft Transformada de Fourier discreta
fft2 Transformada de Fourier en dos dimensiones
ifft Inversa transformada de Fourier
ifft2 Inversa transformada de Fourier en dos dimensiones
abs Magnitud
angle

Angulo
fftshift Mueve el retraso cero al centro del espectro
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 188/215
Pr

acticas de an

alisis en frecuencia,Bscript3.m
Toma de datos:
>> l oad s uns pot . dat ;
>> ye ar= s uns pot ( : , 1 ) ; wo l f e r= s uns pot ( : , 2 ) ;
Transformada de Fourier, se le quita el primer dato:
>> y= f f t ( wo l f e r ) ; y ( 1) =[ ] ;
Gracas con eje frecuencia [0, nf, 0] y [nf, 0,nf]:
>> f i g u r e ; s ubpl ot ( 2 , 1 , 1) ; p l o t ( abs ( y ) )
>> s ubpl ot ( 2 , 1 , 2) ; p l o t ( f f t s h i f t ( abs ( y ) ) ) ;
Gracas en funci on de la frecuencia de Nyquist:
>> N= l e nght ( y ) ; power = abs (Y( 1 : N/2) ) . 2 ;
>> ny qui s t = 1/2; f r e q = ( 1 : N/2) /(N/2) ny qui s t ;
>> f i g u r e ; s ubpl ot ( 2 , 1 , 1) ; p l o t ( f r eq , power ) ;
>> s ubpl ot ( 2 , 1 , 2) ; p l o t ( f r eq , unwrap ( angl e ( y ( 1 : N/2) ) ) ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 189/215
Ejercicios de filtro y transformada de Fourier
En un chero script de nombre Hejer1.m responder a las siguientes
preguntas.
Obtener una se nal de [0, 3] segundos con periodo de muestreo 0,001 s.
y = sin(2 2 t) +0,5 sin(2 5 t +/3) +0,1 sin(2 50 t)
Filtrar la se nal para eliminar el componente de alta frecuencia, producto
del acoplamiento con la red a 50 Hz. Proponer para ello diferentes tipos
de ltros.
Obtener la transformada de Fourier de la se nal ltrada y sin ltrar viendo
las diferencias. Se precisa que la frecuencia cero este en el centro de la
graca.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 190/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 191/215
Funciones para polinomios
Funcion Comentario
conv Producto de polinomios
deconv Divisi on de polinomios
poly Denici on de polinomios por races
polyder Derivada de polinomios
polyfit Interpola por mnimos cuadrados
polyval Valor polinomio en un punto
polyvalm Valor polinomio con matrices
residue Fracciones parciales
roots Races de un polinomio
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 192/215
Pr

acticas con funciones de polinomios, Cscript1.m (I)


Polinomio y sus races. Coecientes a partir de races:
>> p = [ 1 0 2 5] ; r= r o o t s ( p) ;
>> pol y ( r )
Polinomio caracterstico:
>> A = [ 1 . 2 3 0. 9; 5 1. 75 6; 9 0 1 ] ;
>> pol y (A)
Valor del polinomio en un n umero o matriz:
>> p o l y v a l ( p , 5 )
>> pol yval m ( p , A) % p(A)= A32A5 I
Convoluci on (producto) y deconvoluci on:
>> a= [ 1 , 2 , 3 ] ; b= ones ( 1 , 5) ; c= conv ( a , b) ;
>> [ q , r ]= deconv ( c , a ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 193/215
Pr

acticas con funciones de polinomios, Cscript1.m (II)


Derivada de un polinomio, del producto y de la divisi on:
>> q = pol y de r ( p)
>> c = pol y de r ( a , b) % de r i v a da de l pr oduct o
>> [ q , d ] = pol y de r ( a , b) % de r i v a d a s de l a d i v i s i o n
Residuos de un polinomio:
>> b = [ 4 8 ] ; a = [ 1 6 8 ] ;
>> [ r , p , k ] = r e s i d u e ( b , a )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 194/215
Pr

acticas regresiones basadas m

nimos cuadrados, Cscript2.m (I)


Datos para la regresi on:
>> t = [ 0 . 3 . 8 1. 1 1. 6 2 . 3 ] ; y = [ 0 . 5 0. 82 1. 14 1. 25
1. 35 1 . 4 0 ] ;
>> p l o t ( t , y , o ) , g r i d on ;
Regresi on, y = a(0) + a(1) t + a(2) t
2
:
>> X= [ ones ( s i z e ( t ) ) , t , t . 2 ] ; a= X\y ;
>> t hat = ( 0 : 0 . 1 : 2 . 5 ) ; yhat = [ ones ( s i z e ( t hat ) ) t hat
t hat . 2 ] a ;
>> p l o t ( t hat , yhat , , t , y , o ) , g r i d on ;
Soluci on: a = inv(X

X) X

y
Regresi on exponencial: y = a(0) + a(1) exp(t) + a(2) t exp(t):
>> X = [ ones ( s i z e ( t ) ) exp(t ) t . exp(t ) ] ; a = X\y ;
>> t hat = ( 0 : 0 . 1 : 2 . 5 ) ;
>> yhat = [ ones ( s i z e ( t hat ) ) exp(t hat ) t hat . exp(t hat )
] a ;
>> f i g u r e ; p l o t ( t hat , yhat , , t , y , o ) , g r i d on ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 195/215
Pr

acticas regresiones basadas m

nimos cuadrados, Cscript2.m (II)


Regresiones multiples: y = a(0) + a(1) x1 + a2 x2:
>> x1 = [ . 2 . 5 . 6 . 8 1. 0 1 . 1 ] ; x2 = [ . 1 . 3 . 4 . 9 1. 1
1 . 4 ] ;
>> y = [ . 1 7 . 26 . 28 . 23 . 27 . 2 4 ] ;
>> X = [ ones ( s i z e ( x1 ) ) x1 x2 ] ; a = X\y ;
y estimada y error maximo:
>> yhat = Xa ; MaxErr = max( abs ( yhat y ) )
Obtenci on de los coecientes de un polinomio que se aproxime:
>> x = [ 1 2 3 4 5 ] ; y = [ 5 . 5 43. 1 128 290. 7 4 9 8 . 4 ] ;
>> p = p o l y f i t ( x , y , 3 )
>> x2 = 1 : . 1 : 5 ; y2 = p o l y v a l ( p , x2 ) ;
>> p l o t ( x , y , o , x2 , y2 ) ; g r i d on
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 196/215
Ejercicios de polin

omios y regresi

on
Sea x un vector aleatorio uniforme de 1000 componentes. Comprobar en
un chero script de nombre Iejer1.m que la convoluci on de ese vector
con el polinomio [1, 1, 1]/3 da el mismo resultado que la se nal obtenida
con y= filter([1,1,1]/3,1,x). Dar una explicaci on a este hecho.
En un chero script de nombre Iejer2.m realizar el siguiente ejercicio.
Sea t un intervalo de tiempo entre [0, 3] con un periodo de muestreo de
0,1 s y n un vector aleatorio de distribuci on uniforme entre [0, 1] del
mismo n umero de elementos.
Fijar un valor para los parametros [a, b, c].
Obtener el valor de y de la formula y = a + b x + c x
2
+ 0,1 n.
Estimar el valor de los parametros [a, b, c] a partir de la funcion polyfit
y con mnimos cuadrados.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 197/215
Funciones para interpolar datos, splines
Funcion Comentario
interp1 Interpolacion en una dimensi on
inter2, inter3 Interpolacion en dos y tres dimensiones
interpft Interpolacion una dimension t.
mkpp Compone un spline a partir de propiedades
spline Genera splines cubicos
pchip Genera splines c ubico de Hermite
ppval Valor de un spline en puntos
unmkpp Propiedades de un spline
mmppint, mmppder Spline integral y derivada
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 198/215
Pr

acticas con funciones para interpolar datos


Interpolaci on de datos en una dimensi on por distintos metodos:
>> x = [ 1 2 3 4 5 ] ; y = [ 5 . 5 43. 1 128 290. 7 4 9 8 . 4 ] ;
>> s= i n t e r p 1 ( x , y , 2. 5 , l i n e a r )
>> s= i n t e r p 1 ( x , y , 2. 5 , c ubi c )
>> s= i n t e r p 1 ( x , y , 2. 5 , s p l i n e )
>> s= i n t e r p 1 ( x , y , 2. 5 , ne a r e s t )
>> xhat= l i n s p a c e ( 1 , 5 , 100) ;
>> yhat= i n t e r p 1 ( x , y , xhat , s p l i n e ) ;
>> p l o t ( xhat , yhat , , x , y , o ) ;
Interpolaci on de datos en dos dimensiones por distintos metodos:
>> [ x , y ] = mes hgr i d ( 3: 1: 3) ;
>> z = peaks ( x , y ) ; s u r f ( x , y , z )
>> [ xi , y i ] = mes hgr i d ( 3: 0. 25: 3) ;
>> z i 1 = i n t e r p 2 ( x , y , z , xi , yi , ne a r e s t ) ;
>> s u r f ( xi , yi , z i 1 ) ;
>> z i 2 = i n t e r p 2 ( x , y , z , xi , yi , b i l i n e a r ) ;
>> s u r f ( xi , yi , z i 2 ) ;
>> z i 3 = i n t e r p 2 ( x , y , z , xi , yi , b i c u b i c ) ;
>> s u r f ( xi , yi , z i 1 ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 199/215
Pr

acticas splines, Cscript3.m (I)


Datos:
>> x= 0 : 1 2 ; y= t an ( pi x /25) ;
>> x i = l i n s p a c e ( 0 , 12 , 100) ;
Interpola datos:
>> yp= s p l i n e ( x , y , x i ) ;
>> p l o t ( x , y , o , xi , yp ) ;
Genera los coecientes de spline, interpola y propiedades:
>> pp= s p l i n e ( x , y )
>> yp= ppval ( pp , x i ) ;
>> [ br eak , coef s , npol ys , ncoef s , dim]= unmkpp( pp )
>> pp= mkpp( br eaks , c o e f s ) % compos i ci on
Spline con el metodo de Hermite:
>> x =[ 0 , 2 , 4 , 5 , 7. 5 , 10] ; y= exp(x /6) . cos ( x ) ;
>> ch= pchi p ( x , y ) ; ych= ppval ( ch , x i ) ;
>> p l o t ( x , y , o , xi , yp , : , xi , ych ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 200/215
Pr

acticas splines, Cscript3.m (II)


Spline integral y derivada de otro:
>> ppi= mmppint ( pp ) ; ppd= mmppder ( pp ) ;
>> y i = ppval ( ppi , x i ) ; yd= ppval ( ppd , x i ) ;
>> p l o t ( x , y , o , xi , yp , , xi , yi , , xi , yd ,
. ) ;
Splines para dos dimensiones:
>> t= l i n s p a c e ( 0 , 3 pi , 15) ;
>> x= s q r t ( t ) . cos ( t ) ; y= s q r t ( t ) . s i n ( t ) ;
>> ppxy= s p l i n e ( t , [ x ; y ] )
>> t i = l i n s p a c e ( 0 , 3 pi , 1000) ;
>> xy= ppval ( ppxy , t i ) ;
>> p l o t ( x , y , d , xy ( 1 , : ) , xy ( 2 , : ) ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 201/215
Funciones para interpolar superficies e hiperplanos
Funcion Comentario
meshgrid Mallado de dos o tres dimensiones
ndgrid Mallado de dimensi on n
surf, mesh Dibuja supercies y mallados
slide Dibuja cortes dentro de un volumen
griddata Interpolaci on una supercie
griddata3 Interpolaci on una hipersupercie, datos orden 3
griddatan Interpolaci on una hipersupercie, datos orden n
interpn Interpolaci on en n dimensiones
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 202/215
Pr

acticas para interpolar superficies e hiperplanos, Cscript5.m


Datos X, Y reales e interpolados:
>> x1 = 2: 0. 2: 2; x2 = 2: 0. 25: 2;
>> [ X1 , X2 ] = ndgr i d ( x1 , x2 ) ;
>> x i 1 = 2: 0. 1: 2; x i 2 = 2: 0. 1: 2;
>> [ Xi 1 , Xi 2 ] = ndgr i d ( xi 1 , x i 2 ) ;
Z real e interpolada:
>> Z = X2 . exp(X1. 2 X2 . 2) ;
>> Zi = g r i dda t a (X1 , X2 , Z, Xi 1 , Xi 2 )
>> s ubpl ot ( 2 , 1 , 1) ; mesh (X1 , X2 , Z) ;
>> s ubpl ot ( 2 , 1 , 2) ; mesh ( Xi 1 , Xi 2 , Zi ) ;
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 203/215
Pr

acticas de interpolaci

on de datos.
Representar en un script de nombre Iejer3.m la diferencia entre el
polinomio interpolador c ubico hermitiano a trozos y el polinomio
interpolador spline cuando x y t varan entre 3 y 3 (t varia entre decima
y decima) y x = [1, 1, 1, 0, 1, 1].
Se considera un conjunto de temperaturas medidas sobre las cabezas de
los cilindros de un motor que se encuentra en perodo de pruebas para
utilizar en coches de carreras. Los tiempos de funcionamiento del motor
en segundos y las temperaturas en grados Fahrenheit son las siguientes:
Tiempo = [0, 1, 2, 3, 4, 5]
Temperaturas = [0, 20, 60, 68, 77, 110]
Realizar una regresi on lineal en un chero Iejer4.m que ajuste las
temperaturas en funci on de los tiempos. Realizar tambien el ajuste
mediante regresiones polin omicas de grados 2, 3 y 4 representando los
resultados.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 204/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 205/215
Funciones de optimizaci

on e integraci

on
Funcion Comentario
fplot Dibuja la funci on
fminbnd Minimiza funcion con una variable con restricciones
fminsearch Minimiza funcion con varias variables
fzero Encuentra el cero en funci on con una variable
optimset, optimget Parametros de resoluci on
quad Integraci on numerica, Simpson
quadl Integraci on numerica, Lobatto
dblquad Integraci on numerica, doble integral
triplequad integraci on numerica, triple integral
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 206/215
Pr

acticas funciones de optimizaci

on, Dscript1.m (I)


Parametros de la optimizaci on:
>> he l p opt i ms et
Funci on denida como an onima (versi on 7):
>> humps= @( x ) 1 . / ( ( x 0. 3) . 2+0. 01) +1. /(( x 0. 9)
. 2+0. 04) 6;
Funci on denida como an onima (versiones anteriores):
>> humps= i n l i n e ( 1 . / ( ( x 0. 3) . 2+0. 01) +1. /(( x 0. 9)
. 2+0. 04)6 ) ;
Entradas y salida de la funci on, representacion:
>> x= l i n s p a c e ( . 5 , 1. 5 , 100) ; y= humps ( x ) ;
>> f p l o t ( humps , [ 5 5 ] ) ; g r i d on ;
Ejemplo de modicaci on de parametros (ver valor en cada iteraci on):
>> opt i on= opt i ms e t ( Di s pl a y , i t e r ) ; opt i mget
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 207/215
Pr

acticas funciones de optimizaci

on, Dscript1.m (II)


Algorithmo: Nelder-Mead simplex, x [0,3 < x < 1], espacio de
b usqueda de una dimensi on:
>> x = f mi nbnd ( humps , 0. 3 , 1 , opt i on ) ;
Espacio de b usqueda de varias dimensiones:
>> t v a r= @( x ) x ( 1) . 2 + 2. 5 s i n ( x ( 2) ) x ( 3) 2x ( 1) 2
x ( 2) 2;
Mnimo cercano a v, valor desde donde se empieza a buscar:
>> v = [ 0. 6 1.2 0 . 1 3 5 ] ;
>> [ vmin , val ue s , f l a g , out put ] = f mi ns e ar c h ( t v ar , v )
Punto f (x) = sin(3 x) = 0 cercano a x = 2, donde se empieza a buscar:
>> x = f z e r o (@( x ) s i n (3 x ) , 2)
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 208/215
Pr

acticas funciones de optimizaci

on, Dscript1.m (III)


Funci on de control del algoritmo:
>> opt i ons = opt i ms et ( OutputFcn , @outf un ) ;
Forma de la funci on de control, saca gracos en cada iteracion:
f u n c t i o n s t op = out f un ( x , opt val , s t a t e )
% opt v a l campos : f uncount , f v a l , i n t e r a t i o n , pr oc e dur e
% s t a t e : i n i t , i n t e r r u p t , i t e r , done
% s t op : f a l s e , t r ue
s t op = [ ] ; hol d on ;
p l o t ( x ( 1) , x ( 2) , . ) ;
drawnow
Prueba con la minimizacion anterior:
>> v = [ 0. 6 1.2 0 . 1 3 5 ] ; % Empi eza a bus car en v
>> [ vmin , val ue s , f l a g , out put ] = f mi ns e ar c h ( t v ar , v ,
opt i ons )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 209/215
Pr

acticas funciones de integraci

on, Dscript1.m
Integral simple:
>> quad ( humps , 1, 2) %I n t e g r a c i o n s i mpl e
>> quadl ( humps , 1, 2) %I nt e g r a c i o n , mayor e x a c t i t u d
Integral doble:
>> out= @( x , y ) y s i n ( x ) + x cos ( y ) ;
>> xmi n= pi ; xmax= 2 pi ; ymi n= 0; ymax= pi ;
>> r e s u l t = dbl quad ( out , xmin , xmax , ymin , ymax )
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 210/215
Optimizaci

on con restricciones: Funciones peso


Restricci on del problema: mn
x
{f (x)}, g(x) > 0,
if g(x) < 0, cost = f (x),
else cost = f (x) P(g(x)), P(g(x)) > 0.
Problema minimax: mn
x
{max
f
{[f
1
(x), . . . , f
n
(x)]}},
cost = max([f
1
(x), . . . , f
n
(x)]).
Sistema de ecuaciones no lineales: {f
1
(x) = 0, . . . , f
n
(x) = 0}:
cost = max(abs([f
1
(x), . . . , f
n
(x)])).
Problema multiobjetivo: mn
x
[f
1
(x), . . . , f
n
(x)].
cost =

i
p
i
f
i
(x).
La solucion depende de los p
i
elegidos.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 211/215
Pr

acticas con funciones de optimizaci

on (I)
Minimizar la funci on f (x) = (x 3)
2
1 en el intervalo (0, 5).
Encontrar el valor de x que minimiza el valor maximo de [f
1
(x), . . . , f
5
(x)],
f
1
(x) = 2x
2
1
+ x
2
2
48 x
1
40x
2
+ 304
f
2
(x) = x
2
2
3x
2
2
f
3
(x) = x
1
+ 2x
2
18
f
4
(x) = x
1
x
2
f
5
(x) = x
1
+ x
2
8
Minimizar la funci on siguiente f (x) = 3x
2
1
+ 2x
1
x
2
2
.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 212/215
Pr

acticas con funciones de optimizaci

on (II)
Encontrar en un chero script de nombre Jejer1.m los valores de x
que minimizan la funcion f (x) sujeta a las restricciones k
1
(x, w
1
) y
k
2
(x, w
2
con w
1
y w
2
en [1, 100]. La funci on y las restricciones se denen
en el problema y el punto inicial es (0,5, 0,2, 0,3),
f (x) = (x
1
0,5)
2
+ (x
2
0,5)
2
+ (x
2
0,5)
2
k(x, w
1
) = sin(w
1
x
1
) cos(w
2
x
2
) 1/100(w
1
50)
2
sin(w
1
x
3
) x
3
1
k(x, w
2
) = sin(w
2
x
2
) cos(w
2
x
1
) 1/100(w
2
50)
2
sin(w
2
x
3
) x
3
1
Dado el conjunto de datos:
xdata = [3,6, 7,7, 9,3, 4,1, 8,6, 2,8, 1,3, 7,9, 10,0, 5,4]
ydata = [16,5, 150,6, 263,1, 24,7, 208,5, 9,9, 2,7, 163,9, 325,0, 54,3]
se trata de encontrar los coecientes x que minimizan la funci on ydata(i )
del tipo,
ydata(i ) = x(1)xdata(i )
2
+ x(2) sin(xdata(i )) + x(3)xdata(i )
2
Los resultados se escribiran en un chero script de nombre Jejer2.m.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 213/215
Contenidos
1
Introduccion
2
Programaci on con Matlab
3
Optimizaci on del c odigo de programacion
4
Gracas en dos y tres dimensiones
5
Programaci on orientada a objetos
6
Simulaci on en Matlab y Simulink
7
GUIDE: Interface graco de matlab
8
Funciones para tratamiento de datos
9
Funciones para algebra de matrices
10
Filtros y analisis en frecuencia
11
Funciones para polinomios e interpolaci on de datos
12
Funciones de funciones: Optimizaci on e integraci on
13
Bibliografa
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 214/215
Bibliograf

a
Matlab y sus aplicaciones en la ciencia y la ingeniera, (Cesar Perez).
Prentice Hall.
Mastering Matlab 7, (Duane Hanselman, Bruce Littleeld). Prentice Hall,
Internaltional Edition.
A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 215/215

Potrebbero piacerti anche