Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin a Matlab-Simulink
Nota: La presente memoria se basa en la prctica elaborada por los profesores ngel
Valera Fernndez y Julin J. Salt Llobregat. Posteriormente ha sido mejorada por los
profesores Ral Simarro Fernndez, Marina Valls Miquel, Juan Manuel Herrero Dur
y Cesar Ramos Fernndez. Para la elaboracin de la misma se ha utilizado el Matlab
v7.0.2. Las versiones anteriores y posteriores de Matlab tambin pueden ser utilizadas
para la realizacin de la prctica, sin embargo, la ubicacin de los bloques y algunas
funciones pueden cambiar, fundamentalmente de aspecto.
Introduccin a Matlab-Simulink
ndice
1.
2.
3.
Introduccin .............................................................................................................. 3
Arrancar Matlab. ....................................................................................................... 3
Creacin de Variables. .............................................................................................. 4
3.1. La variable ans. .................................................................................................. 4
3.2. Definicin de variables. ..................................................................................... 4
3.3. Listar y borrar las variables definidas. ............................................................... 5
4. Utilizacin de matrices con Matlab .......................................................................... 5
4.1. Crear matrices en Matlab ................................................................................... 5
4.1.1. Lista explcita de elementos ....................................................................... 5
4.1.2. Reusando matrices ya definidas ................................................................. 5
4.1.3. Generacin automtica ............................................................................... 6
4.1.4. Generacin a partir de funciones ................................................................ 7
4.1.5. Referencia a elementos de matrices / Creacin de submatrices ................. 8
5. Almacenamiento de sesin. ...................................................................................... 9
6. Operaciones con matrices ....................................................................................... 10
7. Funciones escalares ................................................................................................ 10
8. Funciones vectoriales ............................................................................................. 11
9. Funciones matriciales ............................................................................................. 11
10. For, while, if y relaciones .................................................................................... 12
11. Archivos *.m ....................................................................................................... 12
12. Archivos de funciones ......................................................................................... 12
13. Grficos ............................................................................................................... 13
14. Arrancar Simulink ............................................................................................... 17
15. Bloques ................................................................................................................ 17
16. Modelos continuos............................................................................................... 22
17. Modelos discretos ................................................................................................ 34
18. Funciones avanzadas ........................................................................................... 35
Introduccin a Matlab-Simulink
1. Introduccin
MATLAB es el nombre abreviado de MATrix LABoratory. MATLAB es un
programa para realizar clculos con vectores y matrices. Resulta una magnfica
herramienta de alto nivel para desarrollar aplicaciones tcnicas, fcil de utilizar
y que permite la simulacin de sistemas dinmicos mediante Simulink.
2. Arrancar Matlab.
Matlab se puede arrancar, o bien haciendo doble clic sobre el icono del
escritorio o bien a travs del men Inicio, en UPVnet/Aplicaciones Cientficas de
Windows. Se abrir la ventana de Matlab que tiene un aspecto como el que
sigue:
Introduccin a Matlab-Simulink
3. Creacin de Variables.
Una variable ser, bsicamente, un lugar en donde guardar un valor y a la que
se le puede dar un nombre. La idea es que cuando, posteriormente, se quiera
realizar un clculo, sea posible utilizar el valor al que se refiere la variable como
parte del nuevo clculo.
La forma ms sencilla de utilizar Matlab es como una calculadora, por ejemplo:
>>4+10
ans =
14
Introduccin a Matlab-Simulink
Ejercicio 1
Introduce en Matlab las siguientes matrices:
1 2 3
10
A 4 5 6 , B , C 12 13
11
7 8 9
Introduccin a Matlab-Simulink
Ejemplo.
1 2 3
2
2
3
1
Ejercicio 2
Haciendo uso de lo anteriormente mencionado, define la matriz:
1 2 3 10 1
B 4 5 6 11 1
7 8 9 12 13
15
16
17
18
Columns 11 through 20
10
11
12
13
14
19
Columns 21 through 24
21
22
Introduccin a Matlab-Simulink
23
Ejercicio 3
Crea una base de tiempos desde las 0 a 3seg., teniendo en cuenta que en este
caso, se toman muestras de temperatura cada 0.1seg.
matriz identidad
matriz de ceros
matriz de unos
matriz diagonal
triangular superior
tril
triangular inferior
rand generada aleatoriamente
hilb matriz de hilbert
magic matriz mgica
toeplitz
Ejercicio 4
Crea la siguiente matriz usando conceptos vistos anteriormente como las
funciones vistas en este apartado.
1 2 3 0
4 5 6 0
C
7 8 9 0
0 0 0 1
7
Introduccin a Matlab-Simulink
8
6
6
2
2
7
8
3
3
Introduccin a Matlab-Simulink
5
8
6
6
2
2
2
2
7
8
4
8
3
3
4
Ejercicio 5
A partir de la matriz obtenida en el ejercicio anterior, obtener una nueva
formada con los elementos de la fila 2 a la 3 y la columna 3.
5. Almacenamiento de sesin.
Es posible almacenar las variables definidas en una sesin de trabajo para ser
reutilizadas en otras sesiones.
Para ello se puede proceder de varias formas. O bien se escribe desde la lnea de
comando de Matlab :
>>save nombre_fichero
Esto provocar que aparezca un nuevo fichero en nuestro directorio de trabajo,
con nombre nombre_fichero y extensin .mat.
Esto mismo es posible conseguirlo a partir de la opcin de men File,
seleccionando la opcin Save Workspace As.
Una vez se tiene almacenado el fichero es posible cargarlo de nuevo para una
sesin posterior, o bien usando el comando
>>load nombre_fichero
o bien seleccionando File/Open y el nombre del fichero .mat.
Ejercicio 6
Guarda un fichero con las variables definidas hasta ahora, borra todas las
variables y vuelve a cargarlas a travs del fichero previamente grabado.
Introduccin a Matlab-Simulink
adicin / sustraccin
multiplicacin
potenciacin
\
/
traspuesta
divisin izquierda
divisin derecha
7. Funciones escalares
Sobre escalares o matrices (elemento a elemento):
sin
atan
cos
exp
tan
log
asin
rem(resto)
acos
abs
sqrt
sign
round
floor
ceil
Ejemplo.
>>sin((0:30:360)*pi/180)
El resultado es: [0 0.5 0.866 1 0.866 0.5 0]
>> exp(log(10))
El resultado es 10.
>> floor(10.1)
El resultado es 10
>> ceil(10.1) El resultado es 11
>> round(10.1)
El resultado es 10
Mientras que,
>> floor(10.6)
El resultado es 10
>> ceil(10.6) El resultado es 11
>> round(10.6)
El resultado es 11
10
Introduccin a Matlab-Simulink
8. Funciones vectoriales
Sobre vectores o columnas de matrices o filas ()
max
prod
min
median
sort
mean
sum
std
any
al
Ejemplo.
>> max(sin((0:1:360)*pi/180))
Mientras que,
>> min(sin((0:1:360)*pi/180))
El resultado es 1
El resultado es -1
9. Funciones matriciales
eig
autovalores y autovectores
chol factorizacin Cholesky
svd descomposicin en valores
singulares
inv inversa
lu
factorizacin LU
qr
factorizacin QR
hess forma de Hessenberg
schur descomposicin de Schur
rref forma escalonada reducida
por filas
11
Introduccin a Matlab-Simulink
&
|
~
y lgico
o lgico
no
Ejercicio 7
Crea un fichero .m para que genere un vector fila de 10 elementos en donde sus
elementos tengan como valor el doble de la posicin que ocupan. Ejectalo para
comprobar que funciona (escribe su nombre en la lnea de comandos de Matlab
y pulsa Enter)
Ejercicio 8
Crea un fichero .m para que genere 2 vectores de tal manera que en uno se
almacenen los valores pares del 1 al 10 y en otro los valores impares.
Introduccin a Matlab-Simulink
Ejemplo.
function [media, desv]=estad(x)
%ESTAD Media y desviacin tpica
[m n]=size(x);
if m==1
m=n; %caso de un vector fila
end
media=sum(x)/m;
desv=sqrt(sum(x .^2)/m - media .^2)
Ejercicio 7
Implementa una funcin que permita calcular los dos resultados de una
ecuacin de segundo grado. Ejectalo para comprobar que funciona (escribe su
nombre en la lnea de comandos de Matlab y pulsa Enter)
13. Grficos
Grficos planos:
plot(x,y): grfico plano de los elementos de x contra los de y.
grid: activa la rejilla
title: ttulo del grfico
xlabel: comentario eje x
ylabel : comentario eje y
gtext: texto posicionado interactivamente
text: texto posicionado mediante coordenadas
axis: definir la escala de los ejes
hold: congela la pantalla grfica. Posteriores dibujos se representan encima.
plot(x,y,+): cambia el tipo de lnea por defecto.
subplot: divide la pantalla de forma que se vean varios grficos a la vez
Grficos de malla de superficies tridimensionales:
mesh(z): Grfico tridimensional en perspectiva de la matriz z
La instruccin ms utilizada es plot. Esta instruccin abrir una ventana grfica
en donde aparecern representados los datos pasados como parmetros, en
donde, Matlab ofrece comandos que permiten aadir ttulos y etiquetas a las
grficas.
Ejemplo. Definamos inicialmente dos vectores:
>> puntos_x=[1 2 3 4 5]
13
Introduccin a Matlab-Simulink
puntos_x =
1
20
15
Introduccin a Matlab-Simulink
Ejercicio 8
Define un vector x con valores desde -5 a 5 en incrementos de 0.1 y un vector y
con los mismos componentes que el vector x pero elevados al cuadrado.
Dibuja los valores anteriores en un grfico.
Aade el ttulo de Una Parbola al grfico y el de eje x y eje y en los ejes
correspondientes.
Aade la rejilla al grfico.
Copia el grfico generado y pgalo en un documento WORD
Cuando se quiere representar ms de una seal en un mismo grfico existen
varias opciones:
1)
Representar el grfico mediante un nico comando plot que exige te
las dimensiones de todas las seales sea la misma. En este caso MATLAB
escoger los colores de las seales por defecto (azul, verde, etc.):
>> x=[1 4 5 4 6 3]
>> y=[5 3 1 9 2 4]
>> t=[0 0.1 0.2 0.3 0.4 0.5]
>> plot(t,[x y])
2)
Representar el grfico mediante varios comandos plot manteniendo la
representacin anterior. Se utiliza el comando hold on y hold off para
mantener o borrar los datos del grfico anterior cada vez que realizamos un
comando plot. En este caso, NO es necesario que las seales tengan la misma
dimensin:
>> plot(x,r)
>> hold on
>> plot(y,k)
3)
Representar las seales mediante diferentes grficos en una misma
ventana. Con el comando subplot es posible subdividir el grfico en una
matriz de grficos, habitualmente en filas, columnas y/o en forma matricial
(2x2, 3x3, etc.):
>> figure
>> subplot(2,1,1)
>> plot(t,x)
>> subplot(2,1,2)
>> plot(t,y)
Habitualmente se realizan dos tipos de representaciones en la ingeniera:
grfico temporal y grfico XY. En el grfico temporal se representa la evolucin
de una variable con respecto del tiempo, mientras que en el grfico XY se
representan los valores que toma una seal X con respecto a los valores que
toma en Y. En este sentido, para los grficos XY es habitual que si ambas seales
tienen las mismas unidades y orden de magnitud, entonces se realice un
escalado de los ejes mediante el comando axis equal. Mientras que para los
grficos temporales, no suele realizarse este ajuste.
15
Introduccin a Matlab-Simulink
Ejercicio 9
Define dos vectores x(t)=2*sin(2*pi*omega*t) e y(t)=cos(2*pi*omega*t) con
valores omega=0.25 y t un vector de 0 a 4 con incrementos de 0.1.
Genera un primer grfico temporal subdividido en dos, uno para representar la
evolucin temporal de x y otro la evolucin temporal de y. Aade los ttulos X
[m.] e Y [m.] en el eje Y de ambos grficos y Tiempo [seg.] en el eje X del
segundo grfico. Ajusta la escala vertical de ambos grficos para que vaya de 2.2 a 2.2 para X y de -1.1 a 1.1 para Y.
Representar las seales en un nuevo grfico XY ajustando debidamente la
escala para conseguir que sea la misma en ambos grficos. Modificar el tipo de
lnea, para que sea del tipo .- e introducir los siguientes ttulos en los ejes X e
Y: X [m.] y Y [m.].
16
Introduccin a Matlab-Simulink
15. Bloques
Como se ha visto, al arrancar Simulink se genera una ventana donde estn las
libreras (o bloques) con las que podemos trabajar. En este apartado
pretendemos realizar una introduccin a las funciones ms usadas dentro de
cada librera.
El acceso a cada librera se realiza haciendo clic sobre su icono.
17
Introduccin a Matlab-Simulink
Sources
Como el nombre indica esta librera contiene fuentes de seales, de entre las
que cabe destacar el escaln (Step), el seno (Sine Wave) y el generador de
seales (Signal Generador).
Sinks
La librera Sinks proporciona sumideros o lugares de salida que se desean para
la simulacin. Es decir, proporciona un osciloscopio para visualizar la salida
(Scope), o bien la salida la podemos redirigir a una variable de tipo matriz (To
Workspace) o a un fichero (To File).
18
Introduccin a Matlab-Simulink
Discrete
La librera discrete proporciona los bloques necesarios para la simulacin de
sistemas discretos, tales como retardos (Unit Delay), filtros (Discrete Filter),
funciones de transferencia discreta (Discrete Transfer Fcn), espacio de estados
(Discrete State-Space), etc. Los bloques discretos disponen a su entrada un de
muestreador y a su salida un de retenedor de orden cero, de forma que las
entradas tan slo se actualizan en los instantes de muestreo.
Continuous
Esta librera proporciona los elementos necesarios para la simulacin de
sistemas lineales continuos. Los bloques ms usados son: el integrador
(Integrator), la funcin de transferencia (Transfer Fcn), la funcin de
transferencia en forma de polos y ceros (Zero-Pole) y el espacio de estados
continuo (State-Space).
19
Introduccin a Matlab-Simulink
Math Operations
En esta librera los bloques ms usados son: la ganancia (Gain), el producto
(Product) y el bloque sumador (Sum).
20
Introduccin a Matlab-Simulink
User-Defined Functions
En esta librera cabe destacar las funciones Matlab (Matlab Fcn) y las SFunciones (S-Function) que nos permiten usar funciones existentes como
bloques.
Signal Routing
Esta librera proporciona los elementos de multiplexacin y demultiplexacin
(Mux y Demux) de seales:
21
Introduccin a Matlab-Simulink
b)
22
Introduccin a Matlab-Simulink
Amplitud de la seal.
Frecuencia de la seal.
Nmero de decimales.
23
Introduccin a Matlab-Simulink
24
Introduccin a Matlab-Simulink
Si hacemos doble clic sobre los osciloscopios podremos ver la respuesta del
sistema: el efecto de introducir la ganancia (Scope1) es el de amplificar la seal
original (Scope).
25
Introduccin a Matlab-Simulink
Una vez borrado todo nos queda introducir el multiplexor (Mux) que se
encuentra en Signal Routing. Pinchamos sobre el multiplexor y lo arrastramos
hasta el modelo, podremos cambiarle el nmero de entradas, si es necesario,
pulsando dos veces sobre l. As el montaje queda de la siguiente forma:
26
Introduccin a Matlab-Simulink
Para traerlo al fichero de trabajo y para cambiar sus parmetros se hace igual
que con el resto de elementos vistos hasta ahora. Los parmetros que tiene el
elemento pueden verse en la siguiente figura:
27
Introduccin a Matlab-Simulink
Size
51x2
Bytes
816
Class
double array
28
Introduccin a Matlab-Simulink
y ay bu
Donde:
u = entrada del sistema
y = salida del sistema
29
Introduccin a Matlab-Simulink
y(s) [s a] bu(s)
y( s)
b
u ( s) s a
y(s)
b
k
u ( s) s a 1 s
Donde:
k = ganancia esttica del sistema
= constante de tiempo
Para analizar el comportamiento de sistemas vamos a partir de uno muy
simple:
Para este circuito simular la respuesta del sistema ante escaln a la entrada. El
valor inicial del escaln debe ser 0, y el valor final 1, empezando en el instante
inicial (Step Time = 0). La simulacin debe ser de 10 segundos y el Max Step
Size de 0.01 segundos.
Cul es el valor final de la salida del sistema?
Para analizar el efecto de la variacin de la ganancia se propone variar el
esquema anterior:
30
Introduccin a Matlab-Simulink
31
Introduccin a Matlab-Simulink
G BC ( s)
GP ( s)
1 GP ( s)
1 GP ( s) 0
y de esta forma, se pueden obtener la ganancia y la constante de tiempo del
sistema en bucle cerrado:
k BC
BC
por lo que:
k BA
1 k BA
BA
1 k BA
32
Introduccin a Matlab-Simulink
Siendo Qe=1 el caudal de entrada (constante), S1=1 y S2=1 las secciones de los
depsitos y K12=1 y K2=1 constantes de los depsitos.
Utilizar el bloque de Simulink Integrator para la implementacin de la
ecuacin diferencial.
Implementar el diagrama Simulink y representar la evolucin de la curva de
llenado de los depsitos.
33
Introduccin a Matlab-Simulink
De esta forma tenemos que los sistemas pueden ser de primer orden,
G( s)
b z 1
1 a z 1
de segundo orden:
G( s)
b1 z 1 b2 z 2
1 a1 z 1 a 2 z 2
34
Introduccin a Matlab-Simulink
1.5
GM ( s)
1 0.5 s
adems, se obtiene la posicin del eje del motor mediante un integrador:
GI (s)
1
s
Si queremos que este motor sea una caja negra en la que tengamos una entrada
(la tensin de control del motor) y dos salidas (la posicin y la velocidad del
motor), tendremos que utilizar el comando Subsystem. Para ello:
Arrastramos con el botn izquierdo del ratn, seleccionando todo lo que
queramos agrupar, dejando fuera las entradas y salidas a ese subsistema.
35
Introduccin a Matlab-Simulink
Una vez seleccionado, le damos al botn derecho del ratn y nos aparecer un
men contextual, en el que seleccionaremos la opcin Create Subsystem.
36
Introduccin a Matlab-Simulink
El paso siguiente ser hacer doble clic sobre la funcin de transferencia del
sistema de primer orden de dicho motor. Cuando aparezca la caja de dilogo,
en vez de teclear directamente los polinomios del numerador y del
denominador, vamos a teclear el nombre de dos variables (num para el
numerador y den para el denominador, por ejemplo).
37
Introduccin a Matlab-Simulink
38
Introduccin a Matlab-Simulink
Una vez se han introducido estos valores, el bloque del motor ha cambiado,
ahora si hacemos doble clic con el botn izquierdo del ratn se abre una nueva
ventana en la que podremos introducir los dos parmetros que hemos aadido
y nos modificar el valor del numerador y del denominador tal y como le
hemos indicado en la inicializacin.
39
Introduccin a Matlab-Simulink
40