Professional Documents
Culture Documents
E.T.S.I – I.C.A.I
Departamento de Electrónica y Automática
Manual de referencia de
Febrero 2000
Tabla de Contenidos
1. INTRODUCCIÓN................................................................................................................... 3
4. M-FILES ................................................................................................................................ 7
8. AYUDA................................................................................................................................ 22
9. SIMULINK ........................................................................................................................... 23
2
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
1. Introducción
MATLAB es una aplicación destinada a cálculos matemáticos, si bien dispone de
ciertas funciones destinadas a temas más específicos, como por ejemplo la ToolBox
de control, que facilita el estudio de sistemas dinámicos y su regulación.
Además, existe un complemento de MATLAB llamado SIMULINK, que nos permite un
enfoque más gráfico 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
» 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 mayúsculas de
minúsculas, 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
Para borrar todas las variables, existe el comando clear: tecleando clear iva borraría
esta variable , pero si escribimos sólo clear, borrará todo lo que hay en memoria; por
desgracia, una vez eliminadas, las variables no se pueden recuperar.
Podemos recuperar cualquier instrucción escrita previamente pulsando la tecla del
cursor . Para detener la ejecución de cualquier instrucción, hay que pulsar la
combinación de teclas Ctrl+C.
3
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
» x = 3 - sqrt (5/6) * 2
x=
1.1743
FUNCIONES HABITUALES
1
MATLAB trabaja únicamente en radianes.
4
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
Es recomendable trabajar con atan2 en vez de atan, pues si la parte real del número
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 función atan los números 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 grados2.
Para definir un número 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
5
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
6
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
4. M-files
Cuando realizamos cálculos simples, es habitual escribir las instrucciones en la
ventana de comandos. Sin embargo, cuando se van a realizar una serie de
operaciones más 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:
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 sólo para los complejos
comp1 y comp2. Para ello, bastará con borrar las dos primeras líneas 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 están
definidas):
» comp1=-3+2i;
» comp2=-10+j;
» trabajo
modulo =
13.3417
fase =
160.7222
3
El símbolo % indica que esa línea es comentario.
7
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
También podíamos hacer que el programa pidiese los números complejos al usuario
(pues éste no tiene por qué saber qué es comp1 y comp2):
8
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
» 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 función seno(x), necesitaríamos bastantes más de 11
elementos para obtener una gráfica aceptable. Escribir 1000 elementos resultaría
bastante tedioso. Como era de suponer, existe una forma “automática” de crear un
vector. La instrucción es: x= (valor_inicial:incremento:valor_final). Por ejemplo:
X=(0:0.01:pi); %Esta instrucción nos crea un vector x con valor inicial x, valor
%final pi, y la diferencia entre elementos consecutivos es 0.01*pi
9
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
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
10
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
6. Representaciones gráficas
» x = (0:0.01:2*pi);
» y = sin(x);
» plot (x,y)
Esta gráfica se puede ampliar, reducir , cambiar su color y copiar para utilizarla en otro
documento.
Si ya teníamos abierta una ventana Figure, al usar plot, desaparecerá la gráfica
anterior sin previo aviso. Para evitarlo, añadiremos una nueva ventana tecleando
figure en MATLAB. Es posible dibujar más de una gráfica en una ventana, escribiendo
plot(eje x1, eje y1, eje x2, eje y2,...); por ejemplo:
11
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
» z = cos(x);
» plot(x,y,x,z)
También 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 pequeñas ventanas, y se
seleccionará la ventana i-ésima. Por ejemplo:
0.5
-0.5
-1
0 1 2 3 4 5 6 7
0.5
-0.5
-1
0 1 2 3 4 5 6 7
12
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
Por ejemplo:
13
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
14
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
s 0.5 sen(x)
et cos(x)
n
ei
d
n
e
p 0
e
d
s
el
b -0.5
ai
r
a
v
-1 variable Z
variable Y
-1.5
0 1 2 3 4 5 6
variable independiente
15
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
7. Toolbox de control 4
» planta = tf ( [ 1 1] , [3 2 5] );
1+ S
nos definiría F ( s) = 2
3× S + 2× S + 5
De esta representación, podemos quedarnos únicamente con el numerador y/o
denominador:
» [num,den] = tfdata (planta , ' v ' )5
num = 0 1 1
den =
3 2 5
4
Teclear ctrldemo para ver una demostración de las posibilidades que ofrece esta Toolbox
5
El argumento 'v' se incluye para obtener numerador y denominador en forma de vectores
16
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
p=
-0.3333 + 1.2472i
-0.3333 - 1.2472i
k=
[]
» w = logspace (-2, 3, 1001); % Creamos vector w, con valor inicial en 10-2, valor
% final = 103, con 1001 puntos
» bode (planta,w)
Podemos hallar también los márgenes de ganancia y/o fase y pulsaciones asociadas:
17
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
Mf =
Inf
wu =
1.8258
wo =
NaN
En este caso, no tenemos margen de fase, y por tanto no existe la pulsación de cruce
(el término NaN significa Not-A-Number).
Existen también funciones para dibujar el lugar de las raíces:
» rlocus(planta)
1.5
0.5
si
x 0
A
g
a
mI
-0.5
-1
-1.5
-4 -3 -2 -1 0 1
Real Axis
Con este gráfico, es posible diseñar para obtener unos polos determinados. Para
obtener mayor precisión, 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
18
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
19
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
7.3 LTIVIEW
Todo lo que hemos visto hasta ahora se puede hacer con un único comando de
forma más intuitiva. Para ello, tecleamos ltiview. Nos aparecerá la siguiente pantalla:
20
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
Al seleccionar una de estas opciones, nos aparecerá un punto en la gráfica; para ver
cuál es el valor en concreto, es necesario mantener pulsado el ratón en ese punto.
21
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
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.
» 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 pequeña descripción de la función, y también una
serie de comandos relacionados (en este caso sqrtm, que nos permite hacer raíces
cuadradas de matrices).
Aunque en la ayuda aparezca la función en mayúsculas, al usarla hemos de escribirla
en minúscula (pues SQRT daría error).
Si no conocemos en concreto el nombre de la función, podemos usar el comando
lookfor:
»lookfor complex
nos mostrará todas las funciones relacionadas con números complejos.
También es útil el comando demo , que nos mostrará una pantalla con demostraciones
de todas las posibilidades que ofrece MATLAB.
22
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
9. Simulink
9.1 Introducción
Simulink es una extensión de MATLAB para la simulación de sistemas dinámicos.
Al ser un entorno gráfico, 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 aparecerán dos ventanas: una con las librerías de Simulink, y otra en blanco
donde construiremos nuestro nuevo modelo.
En cada uno de los grupos que aparecen en la fig. 3, estarán los bloques necesarios
para simular nuestro sistema de control. Por ejemplo, haciendo doble clic en Linear
aparecerá la siguiente ventana:
23
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
ref Salida
10 S +1
_ S + 3·S + 5
24
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
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 ratón 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 escalón, y el tiempo en que éste se produce, hacemos
doble clic en el bloque. Por defecto, el escalón es unitario y se da en t=1.
Por último, para ver la salida (o cualquier otra señal) hay varias posibilidades. Las dos
más utilizadas son los bloques Scope y To Workspace (en el grupo Sinks).
El bloque Scope nos permite ver el comportamiento de una señal mientras se simula.
Por el contrario, To Workspace guarda la señal en memoria, para poder dibujarla
después de la simulación (con el comando plot) o guardarla en un fichero de datos
.mat.
25
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
La orientación 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.
26
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
9.3. Simulación
Para simular el sistema ya construido, elegimos Start del menú Simulation. En
este menú también hay otras opciones; la única que usaremos es Parameters:
Si queremos ver la salida, hacemos doble clic en el bloque Scope. Nos aparecerá la
siguiente pantalla:
27
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
En la barra de herramientas existen varios iconos: los tres primeros fijan el tipo de
zoom (ampliar eje x y eje y, sólo eje x o solo eje y ). El cuarto icono (con el símbolo de
los prismáticos) hará que aparezca en pantalla la gráfica completa. El quinto nos
guarda la configuración de los ejes para posteriores simulaciones, y el último nos
permite fijar los ejes, y la cantidad de datos que queremos guardar.
28
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
Datos:
Potencia inyectada en bloque 3
Temperatura controlada en bloque 3
C1= 2 min kW / ºC C2= 2.5 min kW / ºC C3= 3.5 min kW / ºC
R13 = 7.5 ºC / kW R23 = 10 ºC / kW R30 = 15 ºC / kW
6
Las ecuaciones que nos describen este sistema son:
1 1 1
Pg ( s ) = C3 ·T3 ( s )·s + ·(T3 ( s ) - T2 ( s )) + ·(T3 ( s ) - T1 ( s )) + ·(T3 ( s ) - T0 ( s ))
R32 R31 R30
1
·(T3 ( s ) - T1 ( s )) = C1·T1 ( s )·s
R31
1
·(T3 ( s ) - T2 ( s )) = C2 ·T2 ( s )·s
R32
6
No se ha considerado el efecto de una posible perturbación, pues hemos de definir una única entrada y salida
29
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
[T3]
1
1/15 1/60 [T1]
s
[T1]
[T3]
1
1/25 1/60 [T2]
s
[T2]
[T3]
1/7.5
[T1]
[T3]
1/10 1
Out
[T2]
1
1/3. 1/60 [T3]
[T3] 1/15 s
1
In
Para construir el modelo de una forma más clara, se han utilizado Tags o etiquetas
(que se encuentran en Connections)
El término 1/60 corresponde al cambio de unidades de minutos a segundos
30
UPCo MATLAB & SIMULINK
ICAI - DEA Manual de referencia
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 opción
Edit/Select all). Después hacemos clic en Edit/Create subsystem, que debería
aparecer habilitada. Debería quedarnos una ventana así:
31