Documente Academic
Documente Profesional
Documente Cultură
Nota: Esta prctica se basa en la 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.
Prctica: Introduccin a Matlab-Simulink
ndice
1. Introduccin .............................................................................................................. 3
2. Arrancar Matlab. ....................................................................................................... 3
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 ................................................................. 6
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 ............................................................................................. 12
10. For, while, if y relaciones .................................................................................... 12
11. Archivos *.m ....................................................................................................... 13
12. Archivos de funciones ......................................................................................... 13
13. Grficos ............................................................................................................... 14
14. Arrancar Simulink ............................................................................................... 17
15. Bloques ................................................................................................................ 17
16. Modelos continuos............................................................................................... 22
17. Modelos discretos ................................................................................................ 34
18. Funciones avanzadas ........................................................................................... 35
2
Prctica: 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:
3
Prctica: 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.
>>4+10
ans =
14
>>a=10
a =
10
>>b=20
b =
20
>> media=(a+b)/2
media =
15
4
Prctica: Introduccin a Matlab-Simulink
Ejemplo.
3 6
Sea A = , para introducir la matriz en Matlab haremos lo siguiente:
2 8
>>A=[3 6;2 8]
Esta es una de las formas de crear una matriz, como una lista explcita de
elementos, pero existen otras ms.
Ejercicio 1
5
Prctica: Introduccin a Matlab-Simulink
Ejemplo.
1 2 3
Imaginemos que queremos formar la matriz A = y tenemos definidos
3 2 1
los vectores v1 = [1 2 3] y v 2 = [3 2 1] . En lugar de introducir explcitamente los
elementos de A podemos hacer lo siguiente:
>> A=[v1;v2]
A =
1 2 3
3 2 1
Ejercicio 2
Ejemplo.
Se desea crear un vector que contenga los valores temporales para representar
los datos de la temperatura a lo largo del da, tomada cada hora. Haciendo uso
de este operador, haramos:
>>t=0:23
t =
Columns 1 through 10
0 1 2 3 4 5 6 7 8 9
Columns 11 through 20
10 11 12 13 14 15 16 17 18 19
6
Prctica: Introduccin a Matlab-Simulink
Columns 21 through 24
20 21 22 23
>> t_dec=23:-1:0
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.
Ejercicio 4
Crea la siguiente matriz usando los conceptos y funciones estudiadas
1 2 3 0
4 5 6 0
C=
7 8 9 0
0 0 0 1
7
Prctica: Introduccin a Matlab-Simulink
>> mat=[1 8 9 4 5 2 4 8
9 3 7 4 8 2 8 8
1 2 9 4 6 2 3 4
10 2 2 4 6 7 3 2
3 12 3 3 2 8 4 9]
mat =
1 8 9 4 5 2 4 8
9 3 7 4 8 2 8 8
1 2 9 4 6 2 3 4
10 2 2 4 6 7 3 2
3 12 3 3 2 8 4 9
Si hacemos:
>> nueva_mat=mat(2:4,4:7)
nueva_mat =
4 8 2 8
4 6 2 3
4 6 7 3
8
Prctica: Introduccin a Matlab-Simulink
>> nueva_mat=mat(:,4:7)
nueva_mat =
4 5 2 4
4 8 2 8
4 6 2 3
4 6 7 3
3 2 8 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
Una vez se tiene almacenado el fichero es posible cargarlo de nuevo para una
sesin posterior, o bien usando el comando
>>load nombre_fichero
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.
9
Prctica: Introduccin a Matlab-Simulink
Ejemplo.
>>[1 2 3 4].*[1 2 3 4]
El resultado es [1 4 9 16]
7. Funciones escalares
Sobre escalares o matrices (elemento a elemento):
sin atan sqrt
cos exp sign
tan log round
asin rem(resto) floor
acos abs ceil
Ejemplo.
>>sin((0:30:360)*pi/180)
>> exp(log(10))
El resultado es 10.
Mientras que,
10
Prctica: Introduccin a Matlab-Simulink
8. Funciones vectoriales
Sobre vectores o columnas de matrices o filas ()
max prod any
min median all
sort mean var
sum std cov
Ejemplo.
Mientras que,
ans =
3.5000 0.6000
0.6000 6.8000
>>var(x)
>> sum((x-mean(x)).^2)/5
>> sum((x-mean(x)).*(y-mean(y)))/5
11
Prctica: Introduccin a Matlab-Simulink
9. Funciones matriciales
eig autovalores y autovectores expm matriz exponencial
chol factorizacin Cholesky sqrtm matriz raz cuadrada
svd descomposicin en valores poly polinomio caracterstico
singulares det determinante
inv inversa size tamao
lu factorizacin LU norm norma 1, norma 2, norma de
qr factorizacin QR Frobenius, norma infinita
hess forma de Hessenberg cond nmero de condicin en la
schur descomposicin de Schur norma 2
rref forma escalonada reducida rank rango
por filas
For:
x=[];
for i=1:n
x=[x, i^2];
end
while:
while relacin
instrucciones
end
if:
siguiente bifurcacin elseif
if relacin
instrucciones
end
Relaciones
== igual & y lgico
~= distinto | o lgico
~ no
12
Prctica: Introduccin a Matlab-Simulink
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.
Ejemplo.
function a=ental(m,n)
%ENTAL Matriz entera generada aleatoriamente.
% ental(m,n) produce una matriz mxn con entradas
% enteras entre 0 y 9
a=floor(10*rand(m,n));
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
Prctica: Introduccin a Matlab-Simulink
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, 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
polar: representacin en coordenadas polares
>> puntos_x=[1 2 3 4 5]
puntos_x =
1 2 3 4 5
puntos_y =
25 0 20 5 15
>> plot(puntos_x,puntos_y)
14
Prctica: 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.
15
Prctica: Introduccin a Matlab-Simulink
>> 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)
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.
16
Prctica: 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.
17
Prctica: 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), el generador de seales
(Signal Generador) y el reloj con los tiempos de la simulacin (Clock).
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
Prctica: 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 bloque discretos disponen a su entrada un
muestreador y a su salida un 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
Prctica: 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
Prctica: Introduccin a Matlab-Simulink
User-Defined Functions
En esta librera cabe destacar las funciones Matlab (Matlab Fcn) y las S-
Funciones (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
Prctica: Introduccin a Matlab-Simulink
22
Prctica: Introduccin a Matlab-Simulink
23
Prctica: Introduccin a Matlab-Simulink
Lo primero que tendremos que hacer ser abrir el archivo utilizando cualquiera
de los siguientes mtodos:
Entrar en Simulink y mediante la opcin FileOpen buscar el fichero y abrirlo.
Sin llegar a entrar en Simulink, teclear el nombre del modelo (sin la
extensin .m) en la lnea de comandos de Matlab (El directorio de trabajo
de Matlab deber ser el mismo en el que se encuentra en fichero).
24
Prctica: 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
Prctica: 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
Prctica: 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
Prctica: Introduccin a Matlab-Simulink
>> whos
Name Size Bytes Class
28
Prctica: Introduccin a Matlab-Simulink
Los sistemas ms simples que podemos encontrar son los sistemas de primer
orden, los cuales se rigen mediante una ecuacin diferencial de primer grado:
y + ay = bu
Donde:
u = entrada del sistema
y = salida del sistema
y = primera derivada de la salida del sistema
a, b = constantes del sistema
Para poder trabajar cmodamente con este tipo de sistemas, vamos a aplicar la
Transformada de Laplace, de forma que tenemos:
sy ( s ) + ay ( s ) = bu ( s )
29
Prctica: Introduccin a Matlab-Simulink
y ( s ) [ s + a ] = bu ( s )
y( s) b
G (s) = =
u (s) s + a
y( s) b k
G (s) = = =
u ( s ) s + a 1 + s
Donde:
k = ganancia esttica del sistema
= constante de tiempo
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.
30
Prctica: Introduccin a Matlab-Simulink
31
Prctica: Introduccin a Matlab-Simulink
G P ( s)
G BC ( s ) =
1 + G P (s)
1 + GP (s) = 0
k BA
k BC =
1 + k BA
BA
BC =
1 + k BA
por lo que:
La ganancia en bucle cerrado es menor con tendencia a la unidad.
El sistema se hace ms rpido.
32
Prctica: Introduccin a Matlab-Simulink
nombrematriz(:, numero_columna)
significa que de la matriz nombrematriz, vamos a tomar todas las filas y slo
la columna que indiquemos. Por lo tanto, para representar la salida del sistema
en bucle cerrado en funcin del tiempo lo haremos de la siguiente forma:
plot(senyal(:,3), senyal(:,1))
33
Prctica: Introduccin a Matlab-Simulink
z = e sT
De esta forma tenemos que los sistemas pueden ser de primer orden,
b z 1
G (s) =
1 + a z 1
de segundo orden:
b1 z 1 + b2 z 2
G (s) =
1 + a1 z 1 + a 2 z 2
34
Prctica: Introduccin a Matlab-Simulink
1.5
GM (s) = =
1 + 0.5 s
1
G I ( s) = =
s
Por lo tanto, el sistema ser:
35
Prctica: Introduccin a Matlab-Simulink
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:
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
Prctica: Introduccin a Matlab-Simulink
37
Prctica: 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).
38
Prctica: Introduccin a Matlab-Simulink
39
Prctica: 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.
40
Prctica: Introduccin a Matlab-Simulink
41