43
Práctica 1. Análisis de datos utilizando Matlab
44
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
• Las llamadas built-in functions. Son funciones que Matlab tiene incorporadas internamente y
por tanto sus códigos no son accesibles al usuario.
• Funciones m functions. Son funciones cuyo código es accesible y que están escritas a base de
órdenes de Matlab con objeto de realizar una función determinada.
En el caso de las versiones para Windows, la ejecución del programa se realiza pulsando con el
ratón sobre el icono correspondiente disponible en el escritorio, o bien, accediendo desde
• Una línea de menús desplegables con el fondo gris que contiene funciones típicas de
cualquier editor de textos (File, Edit, View, Window, Help, etc.). Aunque se hará referencia a
esta línea de menús desplegables con posterioridad, se comentarán brevemente sus
funcionalidades:
o File. Al desplegar la ventana aparecen opciones que permiten editar un nuevo archivo
(.m, de texto, figura, etc.), cargar uno existente, grabar uno sobre el que se esté
trabajando, imprimir, salir de Matlab, etc. Otras opciones particulares de Matlab
disponibles desde este menú son Save Workspace, que permite grabar en archivo todas
las variables almacenadas en la memoria particular de Matlab denominada espacio de
trabajo, Set Path que permite añadir, eliminar y/o modificar las rutas de trabajo de
Matlab, y Preferences donde es posible cambiar el aspecto del entorno, seleccionar el
editor de texto que se desea utilizar, etc.
45
Práctica 1. Análisis de datos utilizando Matlab
Barra de Herramientas
Zona de
Accesibilidad
Ventana de
Historial de Órdenes
Órdenes
Menú Inicio
Figura 1.1. Pantalla principal de Matlab
o Edit. Presenta las funciones típicas de cualquier editor de texto Cut, Copy y Paste, que
permiten “cortar” un trozo de texto, copiarlo y “pegarlo” en otro lado.
o View. Contiene una serie de opciones que permiten ocultar o mostrar las distintas zonas
de trabajo que componen el entorno de Matlab (ventana de órdenes, espacio de trabajo,
directorio actual, historial, etc.)
o Windows. Permite seleccionar entre distintas ventanas que se tengan abiertas en una
misma sesión (por ejemplo, trabajando con cinco archivos distintos, se puede cambiar de
uno a otro). Además muestra la opción de cerrar todas las ventanas.
o Help. Proporciona acceso a una ventana que presenta una ayuda completa de la
herramienta, como se muestra en la figura 1.2. Desde dicha ventana es posible realizar
búsquedas, cargar varias demostraciones de la herramienta, obtener descripción detallada
de las bibliotecas de funciones (toolboxes), etc.
46
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
• Una barra de herramientas (ver figura 1.3) desde la que se encuentran disponibles distintos
accesos directos sobre opciones típicas: abrir archivo, nuevo archivo, guardar archivo, etc. y
otras opciones mas específicas como ejecutar Simulink (software de simulación que será
utilizado en prácticas posteriores), cambiar el directorio actual de trabajo, ayuda, etc.
• La zona restante del entorno Matlab y que se encuentra bajo la barra de herramientas es el
área de trabajo. Dicha área se encuentra divida en distintas partes, cada una de ellas con una
función determinada:
o Zona de accesibilidad. Se trata de la ventana que se encuentra en la parte superior
izquierda de la zona de trabajo. En ella se puede observar el contenido del directorio
actual de trabajo (Current directory, figura 1.4(a)), conocer el contenido del espacio de
trabajo (Workspace, figura 1.4(b)) y acceder a los distintos toolboxes de Matlab
acompañados de ejemplos y documentos de apoyo (Launch Pad, figura 1.4(c)). La
visualización de cada una de las opciones comentadas anteriormente se realiza utilizando
las etiquetas que se encuentran en la parte inferior de la ventana.
(a) Directorio actual (b) Espacio de trabajo (c) Acceso a bibliotecas de funciones
Figura 1.4. Zona de accesibilidad
• Menú inicio. Se trata de una opción semejante al menú de inicio del sistema operativo MS-
Windows. Una vez se pulsa en el botón Inicio (Start) que se encuentra en la parte inferior
izquierda de la ventana de Matlab, se despliega el menú como se muestra en la figura 1.5,
desde el que es posible acceder a todas las opciones disponibles en la barra de menús, en la
barra de herramientas, en la ayuda, etc.
47
Práctica 1. Análisis de datos utilizando Matlab
Para comenzar a utilizar Matlab, el primer orden que se debe ejecutar es la orden de ayuda. El
acceso a la ayuda de Matlab se puede realizar de dos modos distintos, en modo texto o en modo
gráfico. Para el acceso en modo texto se hace uso de la orden help y para el modo gráfico se
utiliza la orden doc. Ambas órdenes tienen dos formas de ejecución, escribiendo en la línea de
órdenes cualquiera de ellos de manera individual y pulsar Intro, o escribirlos seguidos de la
orden sobre el cual se desea obtener ayuda y pulsar igualmente Intro:
En el caso de utilizar help de forma individual aparecerán todas las citadas built-in functions que
incorpora Matlab agrupadas en bibliotecas de funciones o toolboxes. Una breve descripción de
los toolboxes más importantes de Matlab se muestra en la tabla 1.2.
En caso de utilizar la función help seguida de una orden se mostrará la ayuda de dicha orden en
formato de texto, como se puede observar en al figura 1.6(a). Si por el contrario se utiliza la
orden doc, si se usa de manera individual se obtiene una ventana donde se describe cómo
48
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
comenzar a utilizar Matlab, y si se ejecuta con el nombre de una orden aparece una ventana
donde se muestra una descripción de dicha orden, como se observa en la figura 1.6(b).
NOTA IMPORTANTE
Una cuestión importante a tener en cuenta es que Matlab distingue entre mayúsculas y
minúsculas y por tanto, los nombres de función se introducirán en minúsculas.
Funciones Descripción
c:\Matlab Establece los parámetros de la sesión Matlab
Matlab\general Órdenes de propósito general
Matlab\ops Operadores y caracteres especiales
Matlab\lang Construcción del lenguaje y chequeo de errores
Matlab\elmat Matrices elementales y manipulación de matrices
Matlab\specmat Matrices especiales
Matlab\elfun Funciones matemáticas elementales
Matlab\specfun Funciones matemáticas especiales
Matlab\matfun Funciones matriciales y álgebra lineal numérica
Matlab\datafun Análisis de datos y funciones de transformada de Fourier
Matlab\polyfun Funciones polinomiales y de interpolación
Matlab\funfun Funciones de funciones de métodos numéricos no lineales
Matlab\sparfun Funciones para matrices dispersas
Matlab\plotxy Gráficos en dos dimensiones
Matlab\plotxyz Gráficos en tres dimensiones
Matlab\graphics Funciones gráficas de propósito general
Matlab\color Funciones para control de color, brillo y contraste
Matlab\sounds Funciones para procesamiento de sonido
Matlab\strfun Funciones de cadenas de caracteres
Matlab\iofun Funciones de entrada y salida de bajo nivel
Matlab\demos La Expo de Matlab y otras demostraciones
simulink\simulink Análisis de modelos en Simulink y funciones de construcción
simulink\blocks Librería de Bloques de Simulink
simulink\simdemos Demostraciones y ejemplos de Simulink
toolbox\control Control System Toolbox
toolbox\local Librería de funciones locales
Tabla 1.2. Breve descripción de las principales bibliotecas de funciones
49
Práctica 1. Análisis de datos utilizando Matlab
El elemento básico en Matlab es una matriz compleja de doble precisión, de forma que abarca
realmente todo tipo de datos (desde números reales hasta complejos) y de estructuras de datos
(escalares, vectores y matrices). Implícitamente se usa la notación matricial para introducir
polinomios. Así por ejemplo, el polinomio P = x3 + 5 x2 + 2 x + 7 se representará de la forma:
P=[1 5 2 7] y la matriz:
1 2
A=
3 4
se representa por A=[1 2; 3 4]. A partir de esta representación se pueden comentar varias cosas:
50
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
Los elementos de una matriz se referencian de la forma A(i,j), donde i y j son los índices del
elemento correspondiente. En este punto es importante comentar uno de los operadores más
potentes de Matlab, que es el símbolo : (dos puntos), que permite referenciar varios elementos de
una matriz, así por ejemplo: A(1,2:3) se refiere a los elementos de las columnas 2 y 3
pertenecientes a la primera fila. De igual forma, A(:,2) se refiere a todos los elementos
pertenecientes a la segunda columna.
Las operaciones comunes con matrices son las que se muestran en la tabla 1.3.
Las mismas operaciones se pueden realizar elemento por elemento anteponiendo un “.” (punto) a
cualquiera de los operandos anteriores (p.e., en vez del producto matricial normal, al anteponer
un punto al símbolo de producto (.*) el elemento (i,j) de la matriz resultante se obtendría como
resultado de multiplicar los elementos (i,j) de los operandos). El listado de las posibles
operaciones a realizar con matrices se puede obtener desde: >> help (o doc) elmat. Además de
las operaciones anteriores existen entre otras:
Operación Función
Determinante det
Inversa inv
Autovalores eig
Rango rank
Norma norm
Parte real real
Parte imaginaria imag
Valor absoluto abs
Conjugada conj
Tabla 1.4. Funciones de manipulación matricial
51
Práctica 1. Análisis de datos utilizando Matlab
Operación Función
Seno sin
Coseno cos
Tangente tan
Arcoseno asin
Arcocoseno acos
Arcotangente atan
Arcotangente de x/y atan2
Seno hiperbólico sinh
Coseno hiperbólico cosh
Tangente hiperbólica tanh
Arcoseno hiperbólico asinh
Arcocoseno hiperbólico acosh
Arcotangente hiperbólica atahn
Tabla 1.5. Funciones trigonométricas e hiperbólicas
Operación Función
Módulo complejo abs
Argumento complejo angle
Raíz cuadrada sqrt
Parte real real
Parte imaginaria imag
Conjugado complejo conj
Redondeo al entero más cercano round
Redondeo hacia cero fix
Función signo sign
Resto rem
Exponencial base e exp
Logaritmo natural log
Logaritmo en base 10 log10
Tabla 1.6. Funciones transcendentales
Operación Función
Valor máximo max
Valor mínimo min
Valor medio mean
Mediana median
Desviación típica std
Suma de elementos sum
Producto de elementos prod
Suma acumulativa de elementos cumsum
Producto acumulativo de elementos cumprod
Matriz de covarianza cov
Coeficientes de correlación corrcoef
Tabla 1.7. Operaciones comunes de análisis de datos
52
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
Variables Descripción
ans respuesta cuando no se asigna expresión
eps precisión mínima de la máquina
pi π
“ i”, “ j” −1 (variable compleja)
inf ∞
NaN Not a number
clock Reloj
date Fecha
flops Número de operaciones
Tabla 1.8. Variables de entorno y variable especiales
• La orden who muestra las variables existentes en el entorno generadas por el usuario (pero no
las variables especiales). La orden whos muestra igualmente las variables generadas por el
usuario junto con información adicional sobre el tamaño de las variables y el tipo de datos de
las mismas. Toda esta información puede ser consultada en todo momento desde la ventana
Workspace como se comentó en el apartado 2 (ver figura 1.4(b)).
• La orden size devuelve el número de filas y columnas de una matriz y length la mayor
dimensión.
• El formato de salida puede modificarse usando format (short, long, etc.).
1.6. Polinomios
Los polinomios se representan por vectores, conteniendo los coeficientes del polinomio en orden
descendente. Por ejemplo, el polinomio s3 +2 s2 +3 s +4 se escribe como p=[1 2 3 4].
Un polinomio puede ser evaluado en un punto determinado usando polyval. Por ejemplo,
ps=polyval(p,s), donde p es el polinomio y s es el punto donde va a ser evaluado. En el ejemplo:
p2=[1 3 2]; a=[1 2; 3 4]; polyval(p2,a) se ha introducido en lugar de un valor, un vector o una
matriz, de modo que la evaluación se hace elemento a elemento.
Los polinomios se pueden multiplicar y dividir usando las funciones conv y deconv
respectivamente.
Mediante la función roots se pueden encontrar las raíces de esa ecuación, p.e. roots(p). Del
mismo modo, se puede calcular un polinomio a partir de sus raíces usando la función poly, p.e.
p2=poly([1 2]);. Si el argumento de entrada a poly es una matriz, devuelve el polinomio
característico de la matriz (det|λI- A|) como un vector fila.
1.7. Gráficos
Matlab es muy potente a la hora de generar gráficos (sobre todo en sus últimas versiones). En las
demostraciones aparecen varios tipos de gráficos. A continuación, se exponen las órdenes
relacionadas con el dibujo de gráficos, estando contenidos los ejemplos en los listados de las
53
Práctica 1. Análisis de datos utilizando Matlab
demostraciones que se mostrarán en los siguientes apartados. Las órdenes fundamentales son las
que se muestran en la tabla 1.9.
Operación Función
Gráfico lineal en el plano XY plot
Gráfico logarítmico en el plano XY loglog
Gráfico semilogarítmico semilogx
Gráfico semilogarítmico semilogy
Gráfico polar polar
Superficie de malla tridimensional mesh
Plano de contornos contour
Título title
Anotación en eje x xlabel
Anotación en eje y ylabel
Dibuja cuadriculado grid
Posiciona un texto arbitrariamente text
Posiciona un texto con el ratón gtext
Escalado manual de ejes axis
Mantiene gráfico en pantalla hold
Permite representar distintas figuras simultáneamente figure
Divide la pantalla gráfica subplot
Tabla 1.9. Funciones gráficas
Gracias a este conjunto de órdenes, es posible obtener los resultados de los trabajos realizados de
forma gráfica, tanto en 2D (>> help (o doc) graph2d) como en 3D (>> help (o doc) graph3d).
Matlab, además de ser un entorno que permite ejecutar órdenes de manera individual sobre la
ventana de órdenes, es en sí un lenguaje de programación formado por un conjunto de
instrucciones típicas de control de flujo. La sintaxis es muy parecida a la de cualquier lenguaje
de programación y todas las palabras reservadas pueden ser usadas directamente sobre la línea de
órdenes, en forma de script o en forma de funciones (la forma de crear un fichero script o una
función en Matlab será comentada posteriormente). En los siguientes apartados se tratará la
sintaxis de los elementos típicos de programación que posee Matlab.
Una consideración que hay que tener en cuenta es que es importante no dejar espacios entre los
operadores formados por dos símbolos. Para datos complejos se compara (== y ~=) tanto la parte
real como la imaginaria.
54
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
Ejemplo con iterador entero, donde la variable i pasa por los valores 10, 9, ..., 1:
for i=10:-1:1
kk(i)=i;
end
Ejemplo con iterador vector, donde la variable i tomas los valores desde un vector:
t=0:2:10;
for i=t
aux=i+3;
end
while expresión,
hacer algo
end;
else y elseif son opcionales, no así end que es obligatorio para acabar la instrucción.
• Estructura de selección de casos switch. Permite realizar distintas operaciones en función de
los diferentes valores que pueda tomar una posible variable. Sus sintaxis es la siguiente:
switch variable
case valor1
operaciones;
case valor2
operaciones;
...
case valorn
operaciones;
end
55
Práctica 1. Análisis de datos utilizando Matlab
• Interrupción de estructuras de control break. Las distintas órdenes de control flujo pueden ser
interrumpidas en cualquier momento haciendo uso de la orden break. Ejemplo:
t=0:2:10;
for i=t
if i==6
break;
end
aux=i+3;
end
En el ejemplo anterior, el bucle for será interrumpido cuando el valor de la variable i sea
igual a 6.
1.8.3. Archivos .m
Matlab puede ejecutar programas almacenados en archivos ASCII que se encuentren en alguno
de los subdirectorios indicados en el PATH o bien en el subdirectorio de trabajo actual y tengan
además extensión .m. Hay dos tipos de archivos:
• Scripts o módulos. Son archivos .m en los que se ponen secuencialmente órdenes de Matlab
que se ejecutan en ese orden al introducir el nombre del archivo .m (sin extensión). Operan
globalmente con los datos que se encuentran en el espacio de trabajo. Las demostraciones que
acompañan a estas notas son en sí scriptfiles, pues llevan un conjunto de órdenes Matlab y
comentarios.
• Funciones. Son también archivos .m, pero a diferencia de los anteriores, se le pueden pasar
argumentos y pueden devolver resultados. Por tanto, utilizan variables que se pasan por valor.
La mayoría de los archivos contenidos en los toolboxes son funciones. La sintaxis de todas las
funciones almacenadas en archivos .m es la siguiente:
function [out1,out2,...]=nombre_archivo(in1,in2,...)
% Comentarios adicionales para el help
Matlab posee un editor de texto propio sobre el cual es posible desarrollar los script o las
funciones en código Matlab. Es un editor de textos típico pero que resalta las palabras reservadas
escritas en código Matlab. Dicho editor es accesible desde el menú File y eligiendo la opción M-
file. El aspecto del editor se puede observar en la figura 1.7.
56
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
Para finalizar, cabe comentar que existen una serie de utilidades a la hora de programar en
Matlab. Las más comunes son:
57
Práctica 1. Análisis de datos utilizando Matlab
58
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
59
Práctica 1. Análisis de datos utilizando Matlab
60
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
2
Este archivo se puede descargar desde http://aer.ual.es, en la sección de Docencia.
3
Photosynthetically Active Radiation: es la radiación cuya longitud de onda está comprendida entre los 0.4 y los 0.7
µm que es la que utiliza el cultivo para realizar la fotosíntesis.
61
Práctica 1. Análisis de datos utilizando Matlab
Como se puede observar, aparecen tres grupos generales de datos en este archivo:
Una etapa muy importante a la hora de llevar a cabo el control climático de invernaderos es
realizar un análisis de los datos que se van obteniendo de los sensores. El programa Matlab
permite realizar de una forma cómoda este análisis. A continuación, se muestra un script o
módulo denominado datos.m en el que se realiza un estudio de la correlación de los datos
contenidos en el archivo, se representan gráficamente las variables de interés, etc. Los resultados
comentarán a lo largo de la clase de prácticas.
echo off
% Ejemplo de tratamiento de datos del día 07/04/98
load m070498.txt % se carga el archivo de datos muestra el tamaño de la variable v que debe ser
size(m070498) % 1440 21, correspondiendo a 21 columnas (variables) y 1440 filas (1440 muestras)
% Se almacena cada variable de interés en una variable de memoria
t=m070498(:,1); % tiempo
t1=m070498(:,2); % temperatura interior 1
h1=m070498(:,3); % humedad 1
t2=m070498(:,4); % temperatura interior 2
h2=m070498(:,5); % humedad 2
v1=m070498(:,6); % ventila 1
v2=m070498(:,7); % ventila 2
c1=m070498(:,8).*m070498(:,9)/100; % calefacción 1
c2=m070498(:,10).*m070498(:,11)/100; % calefacción 2
te=m070498(:,12); % temperatura exterior
dv=m070498(:,13); % dirección viento
vv=m070498(:,14); % velocidad viento
rad=m070498(:,15); % radiación global exterior
m1=m070498(:,20); % malla de sombreo 1
m2=m070498(:,21); % malla de sombreo 2
ll=m070498(:,16); % lluvia
% Se visualizan los valores de las variables de interés de cada invernadero
% INVERNADERO ARABA
% representamos por ejemplo la evolución de la temperatura durante un día
62
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
plot(t,t2)
ylabel('temperatura (ºC)')
xlabel('hora solar (h)')
echo on
pause % pulsa una tecla para continuar
echo off
% para hacerlo más cómodo, podemos utilizar la función
% subplot y ver las variables de interés simultáneamente
figure;
h=subplot(5,2,1);
plot(t,rad,'b') % radiación
title('variables externas') % título
axis([t(1) t(length(t)) min(rad) max(rad)]) % escalado de ejes
ylabel('rad. ext. (W/m2)') % eje y
h=subplot(5,2,3);
plot(t,te,'b')
axis([t(1) t(length(t)) min(te) max(te)])
ylabel('temp')
h=subplot(5,2,5);
plot(t,vv,'b')
axis([t(1) t(length(t)) min(vv) max(vv)])
ylabel('v-vien')
h=subplot(5,2,7);
plot(t,dv,'b')
axis([t(1) t(length(t)) min(dv) max(dv)])
ylabel('d-vien')
h=subplot(5,2,9);
plot(t,ll,'b')
axis([t(1) t(length(t)) min(ll)-.1 max(ll)+.1])
ylabel('lluv')
xlabel('hora solar (h)')
h=subplot(5,2,2);
plot(t,t2,'b')
title('Invernadero ARABA')
axis([t(1) t(length(t)) min(t2) max(t2)])
ylabel('temp')
h=subplot(5,2,4);
plot(t,h2,'b')
axis([t(1) t(length(t)) min(h2) max(h2)])
ylabel('hum')
h=subplot(5,2,6);
plot(t,v2,'b')
axis([t(1) t(length(t)) min(v2) max(v2)])
ylabel('vent')
h=subplot(5,2,8);
plot(t,c2,'b')
axis([t(1) t(length(t)) min(c2) max(c2)])
ylabel('calef')
h=subplot(5,2,10);
plot(t,m2,'b')
axis([t(1) t(length(t)) min(m2)-.1 max(m2)+.1])
ylabel('malla')
xlabel('hora solar (h)')
% si se quieren guardar las variables en un archivo .mat
save m070498
% en el caso de los datos correspondientes al invernadero INAMED se procedería de forma similar
63
Práctica 1. Análisis de datos utilizando Matlab
1.11. Bibliografía
• Moreno, A.; Trabajando con Matlab y la Control System Toolbox; Ed, Ra-ma; Madrid;
España; 1999; 216 pp.
Este libro proporciona una introducción clara y concisa a Matlab y explora su utilización en la
resolución de problemas científicos y de ingeniería. Está orientado a alumnos que tomen su primer
contacto con esta herramienta para resolver problemas de control con el Control System Toolbox. En
esta asignatura no se va a utilizar esta aplicación, pero los capítulos del 1 al 7 de este libro están
dedicados al manejo de Matlab, por lo que pueden servir de referencia a los alumnos. En el capítulo 5
de este libro, se exponen muy brevemente los conceptos básicos de programación de Matlab,
proporcionando una guía de referencia muy visual para que los alumnos la consulten. Si alguno desea
continuar en la línea de control, puede profundizar estudiando los siguientes capítulos.
• García, J.; Rodríguez, J.I.; Brazales, A.; 2001; Aprenda Matlab 6.1 como si estuviera en
primero; E.T.S.I. Industriales; Universidad Politécnica de Madrid; Madrid; España; 113 pp.
Se trata de un manual introductorio de una aplicación como Matlab que, para muchos alumnos, va a
constituir su primer contacto profesional con los computadores y/o con su programación, por lo que
está orientado desde este punto de vista. Comienza con una introducción al entorno de trabajo,
continuando con las operaciones con matrices y vectores, y la descripción del concepto de funciones
de librería y ejemplos de las más utilizadas. El capítulo 6 de este libro se dedica completamente a la
programación en Matlab, describiendo de forma muy profunda las sintaxis de las órdenes básicas de
este lenguaje de programación, así como las estructuras de control resolviendo numerosos ejemplos y
ejercicios. Por otra parte, incluye la entrada y salida de datos, la gestión de archivos, así como las
llamadas a funciones externas y órdenes del sistema operativo. Posteriormente dedica un apartado a la
implementación y utilización de funciones. Finaliza con unas recomendaciones básicas generales de
programación que pueden ayudar a los alumnos. La última sección del libro se dedica a la
representación con gráficos bidimensionale s. Constituye una completa referencia para trabajar con
Matlab, y además como es de carácter gratuito, se recomienda a los alumnos que la descarguen desde
la página web correspondiente y la consulten cuando tengan alguna duda. Existen otras publicaciones
similares como Aprenda Matlab 5.2 como si estuviera en primero, dedicada a la versión previa de la
aplicación y Aprenda Matlab 6.1 como si estuviera en segundo de carácter más avanzado.
• Pérez, C.; Matlab y sus aplicaciones en las ciencias y la ingeniería; Ed. Prentice Hall;
Madrid; España; 2002; 609 pp.
Este libro presenta una profunda revisión acerca de Matlab y sus posibles aplicaciones en el campo
científico y de la ingeniería. Comienza tratando el núcleo fundamental de Matlab y sus aplicaciones
en materias como el análisis numérico, el análisis matemático y el álgebra. A continuación se
analizan algunos de los toolboxes más utilizados en matemáticas (como los dedicados a la
optimización, estadística, etc.) y en ingeniería, haciendo hincapié en los de control. En el capítulo 8
de este libro se encuentra la descripción de Matlab como un lenguaje de programación de alto nivel
que incluye estructuras de datos, instrucciones de control de flujo, gestión de entradas/salidas e
incluso programación orientada a objetos. Describe el editor de texto que incluye Matlab y resuelve
una amplia serie de problemas para introducir la sintaxis de las principales órdenes del lenguaje de
programación. Al final de cada capítulo se presentan ejemplos prácticos totalmente resueltos que
aclaran los conceptos y amplían el campo de aplicación de Matlab. Se trata de un libro muy completo
de consulta.
• The MathWorks Inc.; 2002; Using Matlab. The Language of Technical Computing; USA; 1188
pp
Este libro es el manual de la herramienta Matlab que suministra la propia empresa que la ha creado
MathWorks. Es un manual de referencia donde se describe profundamente cómo hay que trabajar con
Matlab, así como el funcionamiento y la sintaxis de cada una de las funciones elementales que incorpora
64
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
la herramienta. Es una guía muy completa en la que se incluyen todos los aspectos relacionados, incluso
consejos para optimizar el código generado. Toda esta información se incluye en un archivo formato pdf
que el alumno puede descargarse en la página web dedicada a esta asignatura.
65
Práctica 2
DISEÑO E IMPLEMENTACIÓN DE
MODELOS DE SISTEMAS
DINÁMICOS Y SIMULACIÓN DE
PROCESOS UTILIZANDO SIMULINK
73
Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink
es una herramienta que se utiliza para modelar, analizar y simular sistemas dinámicos bajo el
entorno Matlab.
• Mostrar las dos fases fundamentales del proceso de simulación: la definición y construcción
del modelo y, una segunda, correspondiente a su análisis y a la simulación del modelo.
• Estudiar las repuestas ante entradas en escalón de sistemas físicos que se pueden representar
por modelos de primer y segundo orden, así como observar el efecto de cada uno de los
parámetros que caracterizan a estos tipos de sistemas.
• Obtener los parámetros característicos de sistemas de primer y segundo orden a partir de su
respuesta ante una entrada en escalón.
• Modelar sistemas dinámicos reales mediante ecuaciones diferenciales de primer y segundo
orden basándose en principios físicos, obteniendo las ecuaciones diferenciales en el dominio
del tiempo y su representación en el dominio de Laplace. Además se deben implementar en
Simulink y realizar distintas simulaciones para analizar su respuesta en distintas situaciones.
• Obtener modelos empíricos de sistemas dinámicos con respuesta similar a la de uno de primer
orden con retardo a partir de datos de entrada/salida obtenidos con el método de la curva de
reacción.
• Analizar la estabilidad absoluta y relativa de sistemas dinámicos.
• Analizar los efectos sobre la respuesta transitoria de la adición de polos y ceros a la función
de transferencia del sistema dinámico que se estudia.
• Analizar el efecto de incluir no linealidades como la saturación y la zona muerta al sistema a
estudiar.
• Al finalizar la práctica, el alumno deberá ser capaz de diseñar e implementar en Simulink un
modelo (basándose en principios físicos o en métodos empíricos) de un sistema dinámico y
realizar simulaciones para analizar e interpretar su respuesta ante diversas situaciones como
distintas señales de prueba o modificación de la función de transferencia.
Material necesario
Para realizar esta práctica es necesario disponer del siguiente material:
• Computador personal.
• Sistema operativo Windows 2000.
• Programa Matlab 6.5.
• Herramienta de simulación de sistemas dinámicos Simulink.
Contenidos y temporización
74
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
dinámicos, así como su facilidad para implementar modelos mediante su entorno gráfico ya que
sólo hay que seleccionar iconos con el ratón e interconectarlos convenientemente. De esta forma,
los contenidos de la práctica 2 y los ejercicios que deben resolver los alumnos serán los
siguientes:
Con los términos modelización y simulación se designa al conjunto de actividades asociadas con
la construcción de modelos de sistemas del mundo real y su simulación en un computador:
• Un sistema es la parte del mundo real por la que se muestra interés, compuesta por partes
interrelacionadas.
• Un modelo es una representación matemática de un sistema que contiene un conjunto de
instrucciones para generar datos del comportamiento del sistema a estudiar.
• La simulación relaciona modelos y computadores. Se refiere al proceso de imitación de
aspectos importantes del comportamiento del sistema mediante el diseño, construcción y
experimentación con el modelo del sistema. Este proceso es similar al de experimentación
que llevan a cabo los científicos en un laboratorio con el que pretenden aumentar la
comprensión de alguna teoría para su validación y empleo posterior.
75
Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink
MODELO
MODELIZACIÓN SIMULACIÓN
• Relaciona • Construir modelo
• Valida • Experimenta
SISTEMA COMPUTADOR
Si las condiciones iniciales de un sistema representado por una ecuación diferencial son nulas,
cuando se le aplica la transformada de Laplace existe una relación entre la entrada y la salida del
sistema que se conoce como función de transferencia. La función de transferencia de un sistema
es la relación que existe entre la transformada de Laplace de la salida con respecto a la
transformada de Laplace de la entrada. Generalmente se denota por G(s) .
U(s) Y(s)
Y (s)
G(s) Y ( s ) =U ( s ) ⋅ G ( s ) ⇒ G ( s ) = (2.1)
U (s)
d 2 y( t ) dy (t )
+6 + 8 y( t ) = u (t ) con condiciones iniciales nulas (2.2)
dt 2 dt
(2.3)
s 2Y ( s ) − s y (0) − y ' (0) + 6 s Y ( s) − 6 y (0) + 8 Y ( s ) =U ( s)
( s 2 + 6 s + 8) Y ( s) = U ( s ) (2.4)
Y (s) 1
G( s ) = = 2
U (s) s + 6 s + 8
76
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
1/h U
t x t
La más típica de las entradas es el escalón, que se puede implementar por ejemplo, mediante la
apertura instantánea de válvulas de un sistema de calefacción que se mantiene durante un
periodo de tiempo, por lo que es muy habitual estudiar la respuesta de sistemas a un escalón de
amplitud, siendo su transformada de Laplace la siguiente:
0 ,t < 0 U
u (t ) = ⇒ Laplace ⇒ U ( s ) = (2.5)
U , t ≥ 0 s
En función de la ecuación diferencial que modela el sistema o del orden del polinomio
característico de la función de transferencia se pueden clasificar a los sistemas. Si la ecuación
diferencial es de primer orden (tiene una sola derivada primera) o el orden del polinomio
característico es 1, se dice que el sistema es de primer orden cuya forma general es:
u(t) y(t)
Sistema
de orden 1
dy (t ) Y ( s) k
τ + y (t ) = k u (t ) ⇒ Laplace ⇒ τ s Y ( s) + Y ( s ) = k U ( s ) ⇒ G ( s) = = (2.6)
dt U ( s ) 1 +τ s
77
Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink
k k U A B kU kUτ 1 1
Yrp ( s ) = U (s) = = + = − = kU −
1 +τ s 1+ τ s s s 1 + τ s s 1+ τ s s 1
+s (2.7)
τ
−
t
⇒ Laplace inversa ⇒ y rp (t ) = kU 1 − e τ
Gráficamente:
entrada u(t)
1
0.9
0.8
salida y(t)
yrp0.7
0.6
0.5 U
0.63yrp
0.4
Y rp=kU
0.3
0.2
0.1
0
0 τ 5 10 15
tiempo (s)
Figura 2.2. Respuesta de un sistema de primer orden a un escalón
Como se puede observar en la figura 2.2, esta respuesta viene determinada por dos parámetros, k
y τ, que poseen un significado físico:
• k se denomina ganancia estática del sistema, que proporciona una medida de la amplitud de
la respuesta del sistema en función de la amplitud de la entrada al mismo. Es el cociente
entre el cambio experimentado por la salida una vez alcanzado el régimen permanente final
(kU) y el cambio efectuado en la variable de entrada (magnitud del escalón, U).
• τ se denomina constante de tiempo, que es el tiempo que tarda el sistema en alcanzar el 63%
del valor final de la señal de salida desde que comienza a variar el sistema frente a la entrada
en escalón. Es una medida de la rapidez de respuesta del sistema a una señal escalón.
Por otra parte, la respuesta de un sistema a una determinada señal puede considerarse como la
suma de dos componentes:
78
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
• Sistemas de segundo orden constituidos por dos sistemas de primer orden en serie, como por
ejemplo dos depósitos de acumulación de líquido en serie.
• Sistemas de segundo orden intrínsecos, que son aquellos en los que su dinámica inherente es
de segundo orden, como por ejemplo una válvula neumática.
La función de transferencia general de un sistema de este tipo viene dada por:
d 2 y (t ) dy (t )
2
+ a1 + a 2 y (t ) = b u (t ) ⇒ Laplace ⇒ s 2 Y ( s) + a1 s Y (s ) + a 2 Y ( s) = b U ( s)
dt dt (2.8)
Y ( s) b
G (s ) = = 2
U ( s) s + a1 s + a 2
79
Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink
10 1.5
0 1
-5
-10 0.5
-15
0
-20 0 10 20 30 40 50 60 70
0 5 10 15
0.9 0.9
0.8 0.8
0.7 0.7
0.6 0.6
0.5 0.5
0.4 0.4
0.3 0.3
0.2 0.2
0.1 0.1
0 0
0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70
Al igual que ocurre con los modelos de primer orden, existen unos parámetros que definen los
modelos de segundo orden:
d 2 y (t ) dy( t )
+ a1 + a 2 y (t ) = b u (t )
dt 2 dt
b = kω n2 (2.9)
Y (s) b kω n2
G( s ) = = 2 = 2 ⇒ a1 = 2δωn
U ( s ) s + a1 s + a 2 s + 2δωn s + ω n2 a = ω 2
2 n
80
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
donde y∞= yrp representa el valor alcanzado en régimen permanente e ymax la máxima
amplitud de la respuesta.
• Tiempo de pico: tiempo que transcurre hasta alcanzar la máxima sobreoscilación.
• Tiempo de establecimiento: tiempo necesario para que la salida del sistema se encuentre en
un rango ([-x,x]) típicamente del 3% ó 5% alrededor del valor final.
Las características presentadas anteriormente poseen una relación directa con los parámetros que
caracterizan a un sistema de segundo orden de la siguiente forma:
2
SO(%) = 100 e − δπ / 1− δ te = 3
δω n
t p = ωπ
d
π −ϕ
(2.11)
ts = ωd
δ = cos ϕ ω d = ω n (1 − δ 2 )
Evaluación dinámica
1.6
sobreoscilación primera SO (S1)
1.4
respuesta a escalón
0.6
0.4
0.2
0
0 5 10 15
ts tiempo de subida tiempo (s)
tp tiempo de pico
te tiempo de establecimiento
81
Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink
Haciendo uso de lo estudiado en los apartados anteriores, es posible conocer a priori una serie de
características que definen el comportamiento dinámico de un determinado sistema. Sin
embargo, al trabajar con sistemas dinámicos la principal característica que se debe conocer es, si
el sistema es estable o inestable.
Se entiende como estabilidad absoluta a la medida que permite conocer si un sistema es estable
o inestable, y estabilidad relativa, a aquélla que da una indicación sobre cómo de estable o
inestable es el sistema. A partir de la función de transferencia de un sistema, la estabilidad
absoluta del mismo se conoce calculando las raíces del polinomio característico. Si todas las
raíces poseen parte real negativa el sistema es estable, y si alguna de ellas tiene parte real
positiva el sistema es inestable. Dentro de la estabilidad, un sistema será menos estable
(relativamente hablando) cuanto más se acerquen sus raíces al eje imaginario (0±xj). La figura
2.6 muestra un conjunto de ejemplos donde se puede ver mediante la observación de la respuesta
a un escalón la variación de la estabilidad del sistema en función de la localización de los polos
del mismo.
82
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
Por lo que se ha expuesto, el diseño experimental requiere un conocimiento previo, aunque sea
aproximado, de la respuesta dinámica del sistema. Existen varias metodologías para obtener
modelos empíricos. En este apartado se va a estudiar la generación de modelos a partir de datos
transitorios resultantes de introducir al sistema señales de prueba tipo impulso o escalón, ya que
estos datos son rápidos y fáciles de obtener. Además, son representativos de las señales naturales
a las cuales está expuesto un sistema, por lo que son fiables para su posterior utilización, por
ejemplo, en sistemas de control.
Para sistemas en los que se observa una respuesta de tipo sigmoidal (en “s” tendida) a una
entrada escalón, es decir, se observa un comportamiento sobreamortiguado, se puede utilizar el
método denominado curva de reacción. Consiste en introducir un escalón de amplitud U en
bucle abierto al sistema que se desea modelizar y asimilar la salida a la de un sistema de primer
orden con retardo.
Y (s) k e−st r
G (s ) = = (2.13)
U (s) 1 +τ s
83
Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink
entrada u(t)
1
0.9
0.8
salida y(t)
yrp 0.7
0.6
0.5
U
0.63yrp
0.4
Yrp=kU
0.3
0.2
0.1
0
0 tr τ 5 10 15
tiempo (s)
Figura 2.7. Respuesta a un escalón de un sistema de primer orden con retardo
∆ y rp
k= (2.14)
U
84
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
85
Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink
Para crear un nuevo archivo de trabajo se puede realizar de dos formas distintas, seleccionando
la opción del menú File→ New→ Model o bien pulsando el icono desde la barra de
herramientas. Al realizar cualquiera de las dos acciones se abrirá una ventana vacía en la cual se
procederá a la construcción del modelo de un sistema. La nueva ventana se denomina Untitled
(sin título). Se puede asignar un nombre cuando se almacene el archivo.
Una vez creado el nuevo archivo y conocido el modelo que se desea diseñar, el siguiente paso a
realizar es implementar dicho modelo haciendo uso de los bloques de Simulink. El modo de
trabajar con los bloques es seleccionar la biblioteca deseada desde el navegador de bibliotecas, y
arrastrar con el ratón el bloque deseado desde el seleccionador de bloques hasta el nuevo archivo
de trabajo. Los bloques se copian desde la ventana del subsistema correspondiente a la ventana
del archivo de trabajo pulsando el botón izquierdo del ratón y manteniéndolo pulsado hasta la
posición final donde se desee colocar el bloque. Las bibliotecas de bloques son objeto de una
descripción más detallada en próximas secciones. Los bloques se pueden mover una vez situados
en la ventana de trabajo con el mismo procedimiento arriba descrito con la diferencia de que
ahora los bloques se trasladan y no se copian.
Una vez que los bloques han sido colocados, hay que trazar líneas para interconectarlos,
moviendo el icono del ratón sobre el puerto de un bloque y presionando el botón izquierdo.
Cada bloque tiene una ventana asociada para modificar los distintos parámetros. Si se pulsa dos
veces sobre los bloques se podrá acceder a estas ventanas. Se pueden realizar las pertinentes
modificaciones en sus parámetros internos para acomodarlos al sistema objeto de estudio.
Se pueden borrar los distintos componentes que aparecen en la ventana de trabajo con el menú
Edit de la ventana Simulink (la ventana correspondiente al modelo) o pulsando la tecla Supr,
habiendo seleccionado previamente dicho componente con el ratón.
Para guardar el sistema que se ha modelizado, seleccione la opción Save en el menú File.
2.5.4. Simulación del modelo
Una vez implementado el modelo deseado, antes de comenzar la simulación hay que ajustar unos
determinados parámetros de simulación que se encuentran en el menú Simulation→ Simulation
Parameters (desde la ventana del modelo) y que se muestran en la figura 2.9.
86
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
De todas las etiquetas que se observan en la ventana, la de mayor interés para los objetivos de
este texto es la primera de ellas, Solver. De todas las opciones interesan sobre todo las dos
primeras, que permiten modificar el tiempo de inicio de simulación (Start time) y el tiempo final
de simulación (Stop time). El resto de opciones que se encuentran en la parte inferior permiten
modificar el algoritmo de integración numérica, la tolerancia de error y tamaños de paso máximo
y mínimo de integración numérica.
Tras configurar las opciones adecuadamente, para arrancar la simulación se selecciona la opción
Start del menú Simulation o bien se pulsa el icono de la barra de herramientas. La simulación
finaliza cuando el tiempo de parada (Stop time) fijado anteriormente ha sido alcanzado.
Alternativamente, se puede detener la simulación en curso cuando se desee eligiendo Stop en el
menú Simulation o pulsando el icono de la barra de herramientas. Para observar el
comportamiento del sistema se puede utilizar un bloque Scope (Sinks), que muestra gráficamente
la evolución de la salida de un modo básico. También cabe la alternativa de utilizar el bloque To
Workspace de la misma biblioteca para enviar datos al espacio de trabajo de Matlab y
representar el resultado empleando funciones gráficas de Matlab, que permiten realizar estas
mismas operaciones.
87
Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink
From File. Lee datos de entrada desde un archivo (.mat) que contiene
una matriz de al menos dos filas. La primera fila es el vector de
tiempos y cada fila siguiente hace referencia a una variable distinta.
Parámetro: nombre del archivo fuente.
88
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
89
Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink
90
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
2.7. Ejemplos
A continuación se presentan una serie de ejemplos para sistemas de primer y segundo orden.
2.7.1. Sistema de primer orden
La figura 2.10 muestra bloques del modelo y la respuesta de un sistema de primer orden con
ganancia estática 10 y constante de tiempo 2 segundos, cuando se introduce un escalón en t=1
segundo y amplitud 1.
2.7.2. Sistema de primer orden con retardo
La figura 2.11 muestra la implementación en Simulink del mismo modelo anterior de primer
orden pero ahora con un retardo 5 segundos.
(c) Valores para el bloque Transfer Fcn (d) Valores para el bloque Step
Figura 2.10. Ejemplo de simulación para un sistema de primer orden
91
Práctica 2. Diseño e implementación de sistemas dinámicos y simulación de procesos utilizando Simulink
92
Prácticas de Control por Computador – F. Rodríguez, M. Berenguel, J.L. Guzmán y M.R. Arahal
2.8. Bibliografía
• The MathWorks Inc.; 1998; La edición de estudiante de Simulink; Ed. Prentice Hall; España;
225 pp.
Este libro proporciona a los estudiantes un medio asequible para utilizar este poderoso entorno de
modelado y simulación de sistemas dinámicos en sus estudios y puede que en su vida profesional. Se
abordan todos los aspectos de la herramienta, desde la creación de un modelo hasta la simulación y
análisis de resultados, así como una descripción muy completa de cada uno de los bloques de
Simulink.
• The MathWorks Inc.; 2002; Using Simulink. Dynamic system simulation for Matlab; EEUU; 476
pp.
Esta referencia es el manual de la herramienta Simulink que suministra la propia empresa que la ha creado,
MathWorks. Es un manual de referencia donde se describe profundamente cómo hay que trabajar con
Simulink, desde la creación de un modelo hasta el análisis de resultados, pasando por los distintos modos
de ejecución de los modelos. Además, se describen detalladamente cada uno de los bloques que se pueden
utilizar. Toda esta información se incluye en un archivo formato pdf que el alumno puede descargarse en
la página web dedicada a esta asignatura.
93