You are on page 1of 231

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





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

You might also like