Está en la página 1de 197

CURSO

“Diseño de Sistemas de Control Usando


MATLAB-SIMULINK”
Emilio Soria Olivas & Gustavo Camps i Valls

Departament d’Enginyeria Electrònica


UNIVERSITAT DE VALÈNCIA – ESTUDI GENERAL
València – Curs 2002-2003.
“Diseño de Sistemas de Control Usando MATLAB-SIMULINK”

Emilio Soria Olivas & Gustavo Camps i Valls, 2002.


e-mail: {soriae,gcamps}@uv.es
Grupo de Procesado Digital de Se~ nales, http://gpds.uv.es
ii
Índice General

Lista de Figuras. iv

Lista de Tablas. ix

1 Introducción al Matlab 1
1.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Establecer el camino de búsqueda . . . . . . . . . . . . . . . 4
1.1.2 Editor de ficheros y depurador de errores. . . . . . . . . . . . 5
1.1.3 El espacio de trabajo en MATLAB. . . . . . . . . . . . . . . 6
1.1.4 Control de los formatos de salida y de otras opciones de MAT-
LAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Operaciones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1 Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Funciones de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.1 Cálculo de normas de matrices. . . . . . . . . . . . . . . . . . 20
1.3.2 Cálculo de normas de vectores. . . . . . . . . . . . . . . . . . 20
1.4 Datos en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.5 Programación de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.6 Ficheros *.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.7 Gráficos en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.8 Otras caracterı́sticas de Matlab . . . . . . . . . . . . . . . . . . . . . 45

2 Introducción a los Sistemas Continuos de Control 51


2.1 Perspectiva histórica y definiciones . . . . . . . . . . . . . . . . . . . 51
2.1.1 Objetivos de los Sistemas de Control . . . . . . . . . . . . . . 56
2.1.2 Clasificación de los Sistemas de Control . . . . . . . . . . . . 57
2.1.3 Sistemas y modelos . . . . . . . . . . . . . . . . . . . . . . . . 57
2.2 Modelos dinámicos y respuesta dinámica. . . . . . . . . . . . . . . . 61
2.2.1 Principios básicos de la realimentación . . . . . . . . . . . . . 61
2.2.2 Respuesta dinámica . . . . . . . . . . . . . . . . . . . . . . . 63
iv ÍNDICE GENERAL

2.2.3 Transformada de Laplace . . . . . . . . . . . . . . . . . . . . 64


2.2.4 Especificaciones en el dominio del tiempo y Transformada de
Laplace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.2.5 Sistemas de primer orden, parámetros caracterı́sticos . . . . . 75
2.2.6 Sistemas de segundo orden, respuesta impulsional/escalón, ... 77
2.2.7 Especificaciones en el dominio temporal . . . . . . . . . . . . 81
2.2.8 Efectos de la adición de ceros y polos . . . . . . . . . . . . . 82
2.3 Principios esenciales de la realimentación . . . . . . . . . . . . . . . 84
2.3.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
2.3.2 Sensibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
2.3.3 Precisión en régimen estacionario: tipo de sistema . . . . . . 87
2.3.4 Estabilidad en SLIT. Criterio de Routh. . . . . . . . . . . . . 89
2.4 Método de diseño del lugar de las raı́ces (MLR) . . . . . . . . . . . . 90
2.4.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2.4.2 Trazado del Lugar de las Raı́ces . . . . . . . . . . . . . . . . 91
2.4.3 Ejemplos prácticos. . . . . . . . . . . . . . . . . . . . . . . . . 94
2.4.4 Compensación dinámica . . . . . . . . . . . . . . . . . . . . . 100
2.5 Método de diseño de la respuesta en frecuencia (MRF) . . . . . . . . 109
2.5.1 Respuesta en frecuencia . . . . . . . . . . . . . . . . . . . . . 109
2.5.2 Diagramas de Bode . . . . . . . . . . . . . . . . . . . . . . . 110
2.5.3 Márgenes de Estabilidad . . . . . . . . . . . . . . . . . . . . . 112
2.5.4 Criterio de estabilidad de Nyquist . . . . . . . . . . . . . . . 116
2.5.5 Diagrama de Nichols . . . . . . . . . . . . . . . . . . . . . . . 120
2.5.6 Compensación . . . . . . . . . . . . . . . . . . . . . . . . . . 121

3 Toolbox de Control 131


3.1 Organización del paquete de Control . . . . . . . . . . . . . . . . . . 131
3.2 Funciones esenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
3.3 Demostraciones ilustrativas . . . . . . . . . . . . . . . . . . . . . . . 140
3.4 Herramientas de Control con Matlab en Internet . . . . . . . . . . . 141

4 Introducción al Entorno Simulink 143

5 Prácticas 145

Bibliografı́a 173
Índice de Figuras

1.1 Ventana inicial de MATLAB 5.3. . . . . . . . . . . . . . . . . . . . . 2


1.2 Menú de ayuda de MATLAB 5.3. . . . . . . . . . . . . . . . . . . . . 3
1.3 Camino de búsqueda de MATLAB 5.3. . . . . . . . . . . . . . . . . . 5
1.4 Variables del espacio de trabajo de MATLAB. . . . . . . . . . . . . . 6
1.5 Descripción de la variable x. . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Menú de preferencias de MATLAB. . . . . . . . . . . . . . . . . . . . 8
1.7 Uso de la instrucción meshgrid. . . . . . . . . . . . . . . . . . . . . . 43

2.1 Idealización de proceso. . . . . . . . . . . . . . . . . . . . . . . . . . 52


2.2 Idealización del control de procesos. . . . . . . . . . . . . . . . . . . 52
2.3 Esquema de control mediante redes neuronales. Para controlar una
planta mediante un controlador se ajusta su actuación mediante la
señal de error que comete la planta. . . . . . . . . . . . . . . . . . . 54
2.4 Esquema de control adaptativo. El regulador se va adaptando a partir
de las salidas que proporciona un estimador de la actuación de la plan-
ta cuya actuación se va controlando mediante el mismo controlador.
Se trata de un proceso adaptativo o iterativo. . . . . . . . . . . . . . 55
2.5 (a) Representación gráfica de un sistema con una salida y, una entrada
u, una perturbación medida w y una no mensurable v. (b) Ejemplo
de sistema. Panel solar de una casa: u entrada, I es la perturbación
medida, y es la salida, v son las perturbaciones no mensurables. . . . 58
2.6 Respuestas de entrada y salida de un determinado sistema. . . . . . 59
2.7 Respuesta impulsional de un sistema. . . . . . . . . . . . . . . . . . . 60
2.8 Sistema mecánico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.9 Sistemas rotores o rotacionales. Satélite . . . . . . . . . . . . . . . . 63
2.10 Sistemas rotores o rotacionales. Péndulo. . . . . . . . . . . . . . . . 64
2.11 Sistemas rotores o rotacionales. Péndulo invertido. . . . . . . . . . . 64
2.12 Sistemas rotores o rotacionales. Avión. . . . . . . . . . . . . . . . . . 65
2.13 Sistemas eléctricos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2.14 Sistemas electro-mecánicos. . . . . . . . . . . . . . . . . . . . . . . . 67
2.15 Sistemas Flujo de calor. . . . . . . . . . . . . . . . . . . . . . . . . . 68
vi ÍNDICE DE FIGURAS

2.16 Sistemas de compresión de fluidos. . . . . . . . . . . . . . . . . . . . 69


2.17 Algunas Transformadas estándar de Laplace. . . . . . . . . . . . . . 70
2.18 Motor DC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.19 Ecuaciones diferenciales y Transformada de Laplace (función de trans-
ferencia) del Sistema del Motor DC. . . . . . . . . . . . . . . . . . . 74
2.20 Respuesta de un sistema de primer orden a la entrada rampa unitaria. 76
2.21 Respuesta de un sistema de primer orden a la entrada escalón. . . . 77
2.22 Respuesta impulsional en función de la posición de los polos en un
sistema de primer orden. . . . . . . . . . . . . . . . . . . . . . . . . . 78
2.23 Sistema de segundo orden como bloque con realimentación unitaria. 78
2.24 Respuesta de un sistema de segundo orden en función de la posición
de los polos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.25 Respuesta temporal de un sistema de segundo orden en función de
distintos valores del coeficiente de amortiguamiento, ξ. . . . . . . . . 80
2.26 Respuesta temporal transitoria tı́pica de un sistema de segundo or-
den. Se indican también las caracterı́sticas que definen la respuesta,
a menudo conocidas por especificaciones del sistema ya que son las
propiedades deseadas a conseguir en un controlador. . . . . . . . . . 81
2.27 Sistema de control con realimentación. Ejemplo 2. . . . . . . . . . . 82
2.28 Respuesta de los sistemas H1 (s) y H2 (s). Con la adición del cero
conseguimos un menor tiempo de subida. . . . . . . . . . . . . . . . 83
2.29 Estructuras básicas en el control de sistemas: (a) Lazo abierto y (b)
lazo cerrado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
2.30 Sistema con realimentación unitaria. . . . . . . . . . . . . . . . . . . 85
2.31 Posición de los polos del sistema y respuesta escalón para k = 1, y
k = 100. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
2.32 Posición de los polos del sistema y respuesta escalón para k = 1,
k = 100 y k = 275. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
2.33 Sistema controlador proporcional de constante Ka y planta a controlar
KG G en lazo realimentado unitario. . . . . . . . . . . . . . . . . . . 91
2.34 Algunos ejemplos de polos y ceros sobre el eje real para dibujar el LGR. 92
2.35 Ejemplos de trazado de ası́ntotas para el LGR. . . . . . . . . . . . . 93
2.36 Ejemplo del cálculo de los ángulos de salida φ y ψ. . . . . . . . . . . 94
2.37 Este ejemplo ilustra un caso en que dos ramas del LGR se encuentran
en el punto de ruptura (“breakway point”, “saddle point”) y se ale-
jan del eje en sentidos contrarios. En este caso, el punto de ruptura
representa una doble raı́z de la ecuación, cuando el valor de K tiene
el valor del punto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.38 Situaciones tı́picas de puntos de ruptura (“breakway point”, “saddle
point”). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
ÍNDICE DE FIGURAS vii

2.39 Lugar de las raı́ces para el sistema del Ejemplo 1. . . . . . . . . . . . 97


2.40 Lugar de las raı́ces para el sistema del Ejemplo 2. . . . . . . . . . . . 97
2.41 Más ejemplos de LGR. . . . . . . . . . . . . . . . . . . . . . . . . . . 98
2.42 Paso 1: indicamos los polos del sistema y con una flecha roja el lugar
de raı́ces que queda a la izquierda de un número impar de ceros +
polos reales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
2.43 Resolución del LGR con MATLAB. . . . . . . . . . . . . . . . . . . . 100
2.44 LGR del ejemplo con MATLAB. . . . . . . . . . . . . . . . . . . . . 101
2.45 Estructura tı́pica de un compensador. . . . . . . . . . . . . . . . . . 101
2.46 Lugar de las Raı́ces para la inclusión de un compensador por adelanto. 103
2.47 Lugar de las Raı́ces para la inclusión de un compensador por adelanto
(s=-2) y un polo (s=-20). . . . . . . . . . . . . . . . . . . . . . . . . 103
2.48 Diagrama del coche+barra. . . . . . . . . . . . . . . . . . . . . . . . 104
2.49 Lugar de las raı́ces para (a) el sistema original, (b) compensador 1 y
(c) compensador 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.50 Control mediante un compensador por adelanto del sistema coche+barra.105
2.51 Lugar de las Raı́ces para la inclusión de un compensador por atraso
con control de velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . 106
2.52 Diagrama de Bode de la amplitud para singularidades en el origen. . 111
2.53 Diagrama de Bode de (a) amplitud y (b) fase para términos de primer
orden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
2.54 Diagrama de Bode de (a) amplitud y (b) fase para términos de segundo
orden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
2.55 Diagramas de amplitud (a), fase (b) y una aproximación de la fase (c)
20(s+0.5)
para el sistema G(s) = s(s+10)(s+50) . . . . . . . . . . . . . . . . . . . 113
20(s+0.5)
2.56 Diagramas de amplitud (a), fase (b) para el sistema G(s) = s(s+10)(s+50)
mediante bode.m de MATLAB. . . . . . . . . . . . . . . . . . . . . . 114
2.57 Bloque de control proporcional. . . . . . . . . . . . . . . . . . . . . . 114
1
2.58 Lugar de las raı́ces para els sistema G(s) = s(s+1) 2 . Se observa que

para K > 2 el sistema se hace inestable. . . . . . . . . . . . . . . . . 115


1
2.59 Diagramas de Bode para el sistema G(s) = s(s+1) 2 con K=1. . . . . 116
1
2.60 Diagramas de Bode para el sistema G(s) = s(s+1)2 con K=1 mediante

el comando margin de MATLAB. . . . . . . . . . . . . . . . . . . . . 117


1
2.61 Planta, LGR, Bode y Nyquist del Ejemplo 1: G(s) = (s+1) 2. . . . . . 119
1
2.62 Planta del Ejemplo 2: G(s) = s(s+1)2
. . . . . . . . . . . . . . . . . . 120
1
2.63 Diagrama de Bode del Ejemplo 2: G(s) = s(s+1)2. . . . . . . . . . . . 120
1
2.64 Diagrama de Nyquist del Ejemplo 2: G(s) = s(s+1) 2. . . . . . . . . . 121
2.65 LGR, Bode y Nyquist del Ejemplo 3: G(s) = s( s+1
s
−1)2
. . . . . . . . . 122
10
viii ÍNDICE DE FIGURAS

2.66 Definiciones de los márgenes de estabilidad (PM y GM) sobre un


Diagrama de Nyquist genérico. . . . . . . . . . . . . . . . . . . . . . 123
2.67 Diagrama de Nyquist de un sistema complejo y definición del margen
de vector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
2.68 Ejemplo de Diagrama de Nichols para el sistema en l.a. G(s) =
s+1
s(s+3)(s+5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
2.69 Diagrama de Bode del compensador en adelanto para α = 0.1 Kc = 1. 125
2.70 Diagramas de Bode para el sistema sin compensar (trazo continuo) y
compensado (trazo discontinuo) mediante red de adelanto. . . . . . . 126
2.71 Diagrama de Bode del Compensador PD. . . . . . . . . . . . . . . . 127
2.72 Diagramas de Bode de un compensador de atraso. . . . . . . . . . . 128
2.73 Diagrama de Bode de un Compensador Integral (PI). . . . . . . . . . 129

5.1 Respuestas del sistema del ejemplo 01 al impulso, el escalón unitario,


rampa unitaria y la función ‘sinc’ hasta un tiempo t = 10. . . . . . . 147
5.2 Sistema del ejercicio 07. . . . . . . . . . . . . . . . . . . . . . . . . . 147
5.3 Diagrama de polos y ceros del ejemplo 21. . . . . . . . . . . . . . . . 149
5.4 Sistema del apartado E. . . . . . . . . . . . . . . . . . . . . . . . . . 152
Índice de Tablas

2.1 Relación de analogı́as entre las variables fı́sicas ası́ como algunas im-
plementaciones de sistemas de control . . . . . . . . . . . . . . . . . 62
2.2 Expresiones de los errores en régimen estacionario en función del tipo
de entrada. Las constantes representan el tipo de error: Kp es la cons-
tante de error de posición, Kv es la constante del error de velocidad
y Ka es la constante para el error de aceleración. . . . . . . . . . . . 88
Capı́tulo 1

Introducción al Matlab

1.1 Introducción
MATLAB es un paquete informático cuyo nombre procede de la unificación de los
términos MATrix LABoratory. Su objetivo inicial fue proporcionar un fácil acceso
a las librerı́as LINPACK y EISPACK que son dos de las librerı́as más importantes
en computación y cálculo matricial. Este manual hace referencia a la versión 5.3
de este programa, aparecida a comienzos de 1999.
MATLAB es un programa para realizar cálculos numéricos usando vectores y
matrices. Como caso particular de estos elementos evidentemente puede trabajar
también con números tanto reales como complejos. MATLAB es un entorno de com-
putación y desarrollo totalmente integrado; está orientado para llevar a cabo proyec-
tos donde se lleven a cabo gran número de cálculos matemáticos complementándose
dichos cálculos con excelentes representaciones gráficas.
En los medios universitarios MATLAB se ha convertido en una herramienta
básica docente. En el mundo industrial MATLAB está siendo utilizado como he-
rramienta de investigación para la resolución de complejos problemas planteados en
la realización y aplicación de modelos matemáticos en ingenierı́a.
Como se ha comentado anteriormente MATLAB dispone de una serie de librerı́as
especializadas. Entre las más destacadas están:
MATLAB se puede arrancar como cualquier otra aplicación de Windows 95/
98/ NT . Al arrancar MATLAB se abre una ventana parecida a la de la Figura 1.
En la pantalla inicial aparece el prompt caracterı́stico de MATLAB (>>). Esto
quiere decir que el programa está preparado para empezar a trabajar. Si se quiere que
aparezca un saludo inicial se puede realizar modificando un fichero de comandos
personal que se ejecuta cada vez que se entra en el programa. Este fichero es el
fichero matlabrc.m. Este fichero también controla otra serie de parámetros de
funcionamiento importantes como son los directorios de trabajo, forma/color de las
2 Capı́tulo 1. Introducción al Matlab

Communications Toolbox Control System Toolbox


Curve Fitting Toolbox Data Acquisition Toolbox
Database Toolbox Filter Design Toolbox
Financial Toolbox Financial Time Series Toolbox
Fuzzy Logic Toolbox Image Processing Toolbox
Instrument Control Toolbox Model Predictive Control Toolbox
Neural Network Toolbox Optimization Toolbox
Robust Control Toolbox Signal Processing Toolbox
Spline Toolbox Statistics Toolbox
Symbolic/Extended Symbolic Math ToolboxSystem Identification Toolbox
Wavelet Toolbox Mapping Toolbox
Introducción al Matlab

Figura 1. Ventana inicial de MATLAB 5.3.

En la pantallaFigura 1.1: Ventana


inicial aparece el prompt inicial de MATLAB
característico de MATLAB 5.3.(»). Esto quiere
decir que el programa está preparado para empezar a trabajar. Si se quiere que aparezca
un saludo inicial se puede realizar modificando un fichero de comandos personal que se
ejecuta cada vez que se entra en el programa. Este fichero es el fichero matlabrc.m. Este
pantallas de comandos
fichero también y gráficos,
controla otra serieetc. Destacar
de parámetros que las diferentes
de funcionamiento opciones sobre
importantes como
son los directorios de trabajo, forma/color de las pantallas de comandos y gráficos, etc.
estos parámetros se pueden variar de forma más sencilla usando los tı́picos menús
Destacar que las diferentes opciones sobre estos parámetros se pueden variar de forma
de Windows ymásque MATLAB
sencilla usando los también
típicos menúsnosde ofrece.
Windows y que MATLAB también nos
ofrece.
Antes de comentar el programa destacar que nos podemos desplazar sobre la lı́nea
Antes de comentar el programa destacar que nos podemos desplazar sobre la línea de
de comandos comandos
con lascon teclas ↑ y↑ ↓.
las teclas y ↓.Además se puede
Además se puede ir aldeprincipio
ir al principio la línea con lade la lı́nea con la
tecla
Inicio, al final de la línea con Fin, y borrar toda la línea con Esc.
tecla Inicio, al final de la lı́nea con Fin, y borrar toda la lı́nea con Esc. Para borrar Para borrar todas las
salidas anteriores de MATLAB y dejar limpia la ventana principal se puede utilizar las
todas las salidas anteriores
funciones de MATLAB
clc. Si se desea y dejar
salir del programa se tienenlimpia la ventana
como opciones principal
los comandos quit se puede
o exit, o bien “Exit MATLAB” en el menú File. Además, al igual que todas las
utilizar las funciones
aplicacionesclc. Si se
Windows, desea
también salir
se puede del Alt+F4.
utilizar programa se tienen como opciones los
comandos quit o exi t, o bien “Exit MATLAB” en el menú File. Además, al igual
Si se encuentran dificultades MATLAB 5.3 dispone de un excelente fichero de ayuda
que todas las que
aplicaciones
tiene todo lo queWindows,
uno puede desear.también se puede utilizar Alt+F4.
Si se encuentran dificultades MATLAB 5.3 dispone de un excelente fichero de
ayuda que tiene todo lo que uno puede desear.
En la última figura se muestran las distintas opciones que aparecen en el menú
de ayuda:

3
1.1 Introducción 3
Introducción al Matlab

Figura 2. Menú de ayuda de MATLAB 5.3.


Figura 1.2: Menú de ayuda de MATLAB 5.3.
En la última figura se muestran las distintas opciones que aparecen en el menú de
ayuda:
• Help Window, Se puede buscar ayuda sobre la función o el concepto que se
1. Help Window, Se puede buscar ayuda sobre la función o el concepto que se
desee.
desee.
• Help Tips. Ofrece ideas prácticas para utilizar la ayuda.
2. Help Tips. Ofrece ideas prácticas para utilizar la ayuda.
• Help Desk . Se abre un buscador que permite acceder a toda la información
3. Help Desk. Se abre un buscador que permite acceder a toda la información sobre
sobre MATLAB en formato HTML. Esta información es equivalente a los ma-
MATLAB en formato HTML. Esta información es equivalente a los manuales
nuales impresos
impresos del del programa.
programa. DesdeDesde la parte
la parte inferior
inferior de esta
de esta página,
página, mediante
mediante el
el enlace Online Manuals
enlace Online Manuals (in (in
PDF) PDF)
se puedese puede
accederacceder *.pdf de*.pdf
a la versión
a la versión los
manuales
de los de MATLAB.
manuales de MATLAB.Este formato es menos
Este formato adecuado
es menos para consultar
adecuado que el
para consultar
HTML, pero mucho más adecuado para imprimir y revisar luego sobre
que el HTML, pero mucho más adecuado para imprimir y revisar luego sobre papel.
papel.
4. Examples and Demos. Llegamos a una ventana que da acceso a un buen
número de ejemplos resueltos con MATLAB. Es bastante interesante recorrer
• Examples and para
estos ejemplos Demos.
hacerseLlegamos
idea de lasaposibilidades
una ventanadelque da acceso a un buen
programa.
número de ejemplos resueltos con MATLAB. Es bastante interesante recorrer
estos se
Además, ejemplos para hacerse
puede también recurriridea de las
al Help posibilidades
desde del programa.
la línea de comandos. La instrucción
helpwin seguido de un nombre de comando muestra la información correspondiente a
ese comandose en
Además, la ventana
puede Help
también Window,
recurrir incluyendo
al Help desdetambién
la lı́neacomandos similaresLa
de comandos.
sobre los que se ofrece ayuda. El comando doc seguido de un
instrucción helpwin seguido de un nombre de comando muestra la información nombre de comando
muestra la información correspondiente a ese comando a través de Netscape Navigator
correspondiente a ese comando en la ventana Help Window , incluyendo también
o Internet Explorer, en formato HTML.
comandos similares sobre los que se ofrece ayuda. El comando doc seguido de un
nombre de comando
El entorno de trabajomuestra la información
de MATLAB correspondiente
ha mejorado mucho desde a ese
su comando a través
versión original
haciéndose mucho más gráfico e intuitivo. Los
de Netscape Navigator o Internet Explorer, en formato HTML. componentes más importantes del
entorno de trabajo de MATLAB son el editor de directorios de trabajo (Path Browser),
El entorno de trabajo de MATLAB ha mejorado mucho desde su versión origi-
el editor y depurador de errores (Editor & Debugger) y el visualizador del espacio de
naltrabajo
haciéndose mucho más
(Workspace gráficoAe continuación
Browser). intuitivo. Losse componentes más importantes
describen brevemente estos
componentes.

4
4 Capı́tulo 1. Introducción al Matlab

del entorno de trabajo de MATLAB son el editor de directorios de trabajo (Path


Browser ), el editor y depurador de errores (Editor & Debugger ) y el visuali-
zador del espacio de trabajo (Workspace Browser). A continuación se describen
brevemente estos componentes.

1.1.1 Establecer el camino de búsqueda


MATLAB puede llamar a una gran variedad de funciones, tanto propias como
programadas por los usuarios. Es necesario conocer cuáles son las reglas que de-
terminan qué función o qué fichero es el que se va a ejecutar cuando su nombre
aparezca en una lı́nea de comandos del programa. Estas reglas quedan determinadas
por el camino de búsqueda que el programa utiliza cuando encuentra el nombre de
una función. Este camino es una lista de directorios que se puede ver y modificar a
partir de la lı́nea de comandos, o utilizando el Path Browser. El comando path
hace que se escriba el search path de MATLAB (el resultado depende de en qué
directorio está instalado MATLAB):
Para ver cómo se utiliza el search path supóngase que se utiliza la palabra
nombre1 en un comando. El proceso que sigue el programa para tratar de conocer
qué es nombre1 es el siguiente:

1. Comprueba si nombre1 es una variable previamente definida por el usuario.

2. Comprueba si nombre1 es una una función privada del usuario.

3. Comprueba si nombre1 es una función del usuario.

4. Comprueba si nombre1 es una función interna o intrı́nseca de MATLAB.

5. Comprueba si hay un fichero llamado nombre1.mex, nombre1.dll o nom-


bre1.m en el directorio actual, cuyo contenido se obtiene con el comando
dir .

6. Comprueba si hay ficheros llamados nombre1.mex, nombre1.dll o nom-


bre1.m en los directorios incluidos en el search path de MATLAB.

Estos pasos se realizan en el orden indicado. Cuando se encuentra lo que se


está buscando se detiene la búsqueda y se utiliza el fichero que se ha encontrado.
Conviene saber que, a igualdad de nombre, los ficheros *.mex se ejecutan antes
que los ficheros *.m que están en el mismo directorio. El concepto de directorio
actual es importante en MATLAB. Para cambiar de directorio actual se utiliza el
comando cd , seguido del nombre del directorio, para el cual se puede utilizar un
path absoluto (por ejemplo cd C:\Matlab\Ejemplos) o relativo (cd Ejemplos).
1.1 Introducción 5

MATLAB permite utilizar tanto la barra normal (/) como la barra invertida (\).
Para subir un nivel en la jerarquı́a de directorios se utiliza el comando cd .
Path Browser define los directorios donde MATLAB debe buscar los ficheros
de comandos y las funciones. Con el comando Set Path del menú File se muestra
la lista de directorios en la que MATLAB buscará. En la figura 3 se muestra un
ejemplo de dicho path.al Matlab
Introducción

Figura 3. Camino de búsqueda de MATLAB 5.3.

Para añadir (o quitar)


Figura 1.3:un Camino
directorio ade
estabúsqueda
lista se debe ejecutar
de MATLAB Add to Path
el comando5.3.
(o Remove Path) en el menú Path de dicho cuadro de diálogo. El nuevo directorio se
puede añadir al comienzo o final de la lista. El orden de la lista es muy importante,
Para añadirporque refleja el orden de la búsqueda: si una función está en dos directorios, se
(o quitar) un directorio a esta lista se debe ejecutar el comando
utilizará la que primero se encuentre.
Add
to Path (o Remove Path) en el menú Path de dicho cuadro de diálogo. El nuevo
Desde la pantalla de comandos del MATLAB también se puede modificar el camino
directorio se puede añadir
seguido por MATLAB alencomienzo
su búsqueda de o final de
la variables la lista.
o función El orden
correspondiente. Así, el de la lista es
comando addpath permite añadir uno o más directorios al search path. Además se
muy importante, porque refleja el orden de la búsqueda: si una
puede utilizar el comando rmpath (de remove path), al que se le pasan la lista de función está en dos
directorios a eliminar del search path. Por ejemplo, el comando: »rmpath 'c:\Matlab'
directorios, se utilizará la que primero se encuentre.
'c:\Temp' borra del search path los dos directorios indicados.
Desde la pantalla de comandos del MATLAB también se puede modificar el cami-
Editor de ficheros y depurador de errores.
no seguido porEnMATLAB
MATLAB aparecenen su búsqueda
los ficheros-M de lason
(o M-files); variables o función
ficheros de texto ASCII, concorrespondiente.
la
extensión *.m, que contienen conjuntos de comandos o definición de funciones. Tras
Ası́, el comando addpath
teclear el nombre de permite
estos ficherosañadir
en la línea uno o más
de comandos directorios
y pulsar al search path.
Intro, se ejecutan
todos los comandos contenidos en dicho fichero.
Además se puede utilizar el comando rmpath (de remove path), al que se le pasan
MATLAB dispone
la lista de directorios de un editor
a eliminar delpropio que le permite
search path. crearPor
y modificar estos ficheros,
ejemplo, el comando: ”rm-
así como ejecutarlos paso a paso para ver si contienen errores (proceso de depuración).
path ’c:\Matlab’ ’c:\Temp’ borra del search path los dos directorios indicados.
Este editor muestra con diferentes colores los diferentes tipos o elementos constitutivos
de los comandos (en verde los comentarios, en rojo las cadenas de caracteres, etc.).
Además supervisa que las comillas o paréntesis que se abren, no se queden sin el
correspondiente elemento de cierre. Este editor/depurador es un programa enormemente
1.1.2 Editor de ficheros y depurador de errores.
útil para detectar y corregir errores, que hay que conocer muy bien. Para ello lo mejor es
practicar.
En MATLAB aparecen los ficheros-M (o M-files); son ficheros de texto ASCII,
El espacio de trabajo en MATLAB.
con la extensión *.m, que contienen conjuntos de comandos o definición de
funciones. Tras teclear el nombre de estos ficheros en la lı́nea de 6 comandos y
pulsar Intro, se ejecutan todos los comandos contenidos en dicho fichero.
MATLAB dispone de un editor propio que le permite crear y modificar estos
ficheros, ası́ como ejecutarlos paso a paso para ver si contienen errores (proceso de
6 Capı́tulo 1. Introducción al Matlab

depuración). Este editor muestra con diferentes colores los diferentes tipos o ele-
mentos constitutivos de los comandos (en verde los comentarios, en rojo las cadenas
de caracteres, etc.). Además supervisa que las comillas o paréntesis que se abren,
no se queden sin el correspondiente elemento de cierre. Este editor/depurador es un
programa enormemente útil para detectar y corregir errores, que hay que conocer
muy bien. Para ello lo mejor es practicar.

1.1.3 El espacio de trabajo en MATLAB.


El espacio de trabajo de MATLAB es el conjunto de variables y de funciones
Introducción al Matlab
de usuario que, en un determinado momento, están definidas en la memoria del
programa. Para de
El espacio obtener
trabajo información
de MATLAB essobre dichodeespacio
el conjunto variablesde trabajo
y de sede
funciones pueden
usuario utilizar
los comandos
que, en who y whos.momento,
un determinado El segundo
están proporciona
definidas en la una información
memoria másPara
del programa. detallada
obtener información sobre dicho espacio de trabajo se pueden utilizar los comandos
que el primero ya que además de dar las variables del espacio de trabajo en ese
who y whos. El segundo proporciona una información más detallada que el primero ya
momento quedice el tamaño
además de dar lasde dichasdelvariables.
variables Se puede
espacio de trabajo obtener
en ese momentodedice
modo gráfico una
el tamaño
de dichas
información variables.
análoga conSe el
puede obtener de modo
Workspace gráfico una
Browser, queinformación
se activaanáloga
con con el
el comando
Workspace Browser, que se activa con el comando Show Workspace del menú File de
Show Workspace
MATLAB. del menú File de MATLAB.
A modo de ejemplo, si se genera un conjunto de variables y se lanza dicha apli-
A modo de ejemplo, si se genera un conjunto de variables y se lanza dicha aplicación se
cación setendría
tendrı́a lo que muestra la Fig. 1.4.
lo que muestra la siguiente figura:

Figura 4. Variables del espacio de trabajo de MATLAB.

Figuracualquiera
Si se pulsa sobre 1.4: Variables
de estasdel espaciopor
variables, deejemplo
trabajosobre
de MATLAB.
x, se abre una ventana
como la que muestra la siguiente figura:
Si se pulsa sobre cualquiera de estas variables, por ejemplo sobre x, se abre una
ventana como la que muestra la Fig. 1.5:

1.1.4 Control de los formatos de salida y de otras opciones de MAT-


LAB
Los formatos de salida en la ventana principal de MATLAB se pueden controlar
fácilmente a partir del cuadro de diálogo que se abre con el comando Preferences
del menú File.

Figura 5. Descripción de la variable x.


Figura 4. Variables del espacio de trabajo de MATLAB.

1.1SiIntroducci cualquiera de estas variables, por ejemplo sobre x, se abre una ventana 7
se pulsa sobreón
como la que muestra la siguiente figura:

Figura 5. Descripción de la variable x.


Figura 1.5: Descripción de la variable x.

En esta figura aparecen los diferentes formatos numéricos que puede tener MAT-
LAB. Estos formatos son los que usa para mostrar los resultados (siempre calcula
con la máxima precisión). Los más importantes son los siguientes:
7
• format short coma fija con 4 decimales .

• format long coma fija con 15 decimales.

• format hex cifras hexadecimales.

• format bank números con dos cifras decimales.

• format short e notación cientı́fica con 4 decimales.

• format short g notación cientı́fica o decimal, dependiendo del valor.

• format long e notación cientı́fica con 15 decimales.

• format loose introduce algunas lı́neas en blanco en la salida .

• format compact elimina las lı́neas en blanco citadas .

• format rat expresa los números racionales como cocientes de enteros

Comentar que estos formatos también se pueden activar desde la lı́nea de coman-
dos.
Relacionado con los diferentes formatos numéricos comentar que MATLAB aplica
un factor de escala general a las matrices cuando los elementos más grandes, o
Introducción al Matlab

Control de los formatos de salida y de otras opciones de MATLAB


8 Los formatos de salida en la ventana principal
Capı́tulode MATLAB se puedenón
1. Introducci controlar
al Matlab
fácilmente a partir del cuadro de diálogo que se abre con el comando Preferences del
menú File.

Figura 6. Menú de preferencias de MATLAB.

Figura los
En esta figura aparecen 1.6:diferentes
Menú de preferencias
formatos de MATLAB.
numéricos que puede tener MATLAB.
Estos formatos son los que usa para mostrar los resultados (siempre calcula con la
máxima precisión). Los más importantes son los siguientes:
más pequeños, son superiores, o inferiores, a una determinada cantidad; además
MATLAB •trata format
de short
mantener elcoma fija conde
formato 4 decimales
los números que han sido definidos como
• format long coma fija con 15 decimales
enteros (sin punto decimal). cifras hexadecimales
• format hex
• format
El cuadro de diálogo
bank Command números conWindow
dos cifrasFont de la Figura 6 ofrece la posi-
decimales
• format short e notación científica con 4 decimales
bilidad de elegir el tipo de letra –ası́ como el tamaño y el color, tanto de las letras
• format short g notación científica o decimal, dependiendo del valor
como del fondo– utilizada en la ventana de comandos de MATLAB. Es mejor utilizar
• format long e notación científica con 15 decimales
tipos de letra de tamaño
• format loose constante para
introduce que líneas
algunas la salida se alinee
en blanco bien en la pantalla.
en la salida
• format compact elimina las líneas en blanco citadas
• format rat expresa los números racionales como cocientes de
1.2 Operaciones básicas
enteros

comentar que estos formatos también se pueden activar desde la línea de comandos.
MATLAB es, fundamentalmente, un programa para cálculo matricial. En él
se irán Relacionado
definiendocon laslosmatrices,
diferentes formatos numéricos
los vectores comentar
y las que MATLAB
expresiones que aplica un
los combinan,
factor de escala general a las matrices cuando los elementos más grandes, o más
obteniéndose resultados
pequeños, bienoparciales
son superiores, inferiores, bien
a una totales. Si estos
determinada resultados
cantidad; son asignados
además MATLAB
a otras trata
variables podrán
de mantener ser utilizados
el formato en otras
de los números expresiones.
que han Antes
sido definidos como de hacer
enteros (sincálculos
punto decimal).
complicados se aprenderá a introducir matrices y vectores desde el teclado. Más
adelante se verán otras formas de definir matrices y vectores.
Al igual que en otros lenguajes de programación en MATLAB las matrices 8 y
vectores son variables que tienen nombres. Se sugiere que se utilicen letras
mayúsculas para matrices y minúsculas para vectores y escalares, destacando que
MATLAB no exige esto, pero puede resultar útil de cara a distinguir dichos elemen-
tos. Para definir una matriz no hace falta establecer de antemano su tamaño (de
hecho, se puede definir un tamaño y cambiarlo posteriormente). MATLAB deter-
mina el número de filas y de columnas en función del número de elementos que se
1.2 Operaciones básicas 9

proporcionan (o se utilizan). Las matrices se definen por filas; los elementos de una
misma fila están separados por espacios o comas las filas, sin embargo, están sepa-
radas por retornos de carro o por caracteres punto y coma (;). A modo de ejemplo
la siguiente instrucción define una matriz, A, de dimensión 3x3.

>> A=[1 2 3; 4 5 6; 7 8 9]

La respuesta del programa es la siguiente:

A =
1 2 3
4 5 6
7 8 9

Destacar que en MATLAB se accede a los elementos de un vector poniendo el


ı́ndice entre paréntesis, por ejemplo x(3) ó x(i). Los elementos de las matrices se
acceden poniendo los dos ı́ndices entre paréntesis, separados por una coma, como
por ejemplo A(1, 2)ó A(i, j).
Una vez que se ha definido la matriz A ya está disponible formando parte del
espacio de trabajo de MATLAB, para hacer cualquier tipo de operación con ella. Ası́,
a modo de ejemplo, una sencilla operación con A es hallar su matriz traspuesta.
En MATLAB el apóstrofe (’) es el sı́mbolo de trasposición matricial.

>> A’
ans =
1 4 7
2 5 8
3 6 9

Como el resultado de la operación no ha sido asignado a ninguna otra matriz,


MATLAB
utiliza un nombre de variable por defecto (ans, de answer), que contiene el
resultado de la última operación. La variable ans puede ser utilizada como operando
en la siguiente expresión que se introduzca. También podrı́a haberse asignado el
resultado a otra matriz llamada B:

>> B=A’
>> B =
1 4 7
2 5 8
3 6 9
10 Capı́tulo 1. Introducción al Matlab

Ahora ya están definidas las matrices A y B, y es posible seguir operando con


ellas. Por ejemplo, se puede hacer el producto B*A (deberá resultar una matriz
simétrica):
>> B*A
ans =
66 78 90
78 93 108
90 108 126
MATLAB puede operar con matrices por medio de operadores y por medio de
funciones. Los operadores matriciales de MATLAB son los siguientes:
+ adición o suma
– sustracción o resta
* multiplicación
’ traspuesta
∧ potenciación
\división-izquierda
/ división-derecha
.* producto elemento a elemento
./ y .\ división elemento a elemento
.∧ elevar a una potencia elemento a elemento
Todos estos operadores son coherentes con las correspondientes operaciones ma-
triciales; por ejemplo no se pueden sumar matrices que no sean del mismo tamaño.
Si los operadores no se usan de modo correcto se obtiene un mensaje de error. Los
operadores anteriores se pueden aplicar también de modo mixto, es decir con un
operando escalar y otro matricial. En este caso la operación con el escalar se aplica
a cada uno de los elementos de la matriz. Considérese el siguiente ejemplo:
>> A=[1 2; 3 4]
>> A =
1 2
3 4
>> A*2
ans =
2 4
6 8
>> A-4
ans =
-3 -2
-1 0
1.2 Operaciones básicas 11

1.2.1 Tipos de datos


Ya se ha comentado que MATLAB es un programa preparado para trabajar con
vectores y matrices. Como caso particular también trabaja con variables escalares.
MATLAB, además, trabaja siempre con doble precisión: guarda cada dato en 8
bytes, con unas 15 cifras decimales exactas. Ya se verá más adelante que también
puede trabajar con cadenas de caracteres (strings) y, desde la versión 5.0, también
con otros tipos de datos: matrices de más dos dimensiones, vectores y matrices de
celdas, estructuras y clases y objetos.
MATLAB mantiene una forma especial para los números muy grandes (más
grandes que los que es capaz de representar), que son considerados como infinito.
Por ejemplo, obsérvese cómo responde el programa al ejecutar el siguiente comando:

>> 1.0/0.0
>> Warning: Divide by zero
ans =
Inf

Ası́ pues, para MATLAB el infinito se representa como inf ó Inf. MATLAB
tiene también una representación especial para los resultados que no están definidos
como números. Por ejemplo, ejecútense los siguientes comandos y obsérvense las
respuestas obtenidas:

>> 0/0
>> Warning: Divide by zero
ans =
NaN

>> inf/inf
ans =
NaN

En ambos casos la respuesta es NaN , que es la abreviatura de Not a Num-


ber . Este tipo de respuesta es enormemente importante en MATLAB, pues permite
controlar la fiabilidad de los resultados de los cálculos matriciales. Los NaN se
propagan al realizar con ellos cualquier operación aritmética, en el sentido que, por
ejemplo, cualquier número sumado a un NaN da otro NaN . MATLAB tiene esto
en cuenta. Algo parecido sucede con los Inf .
MATLAB dispone de tres funciones útiles relacionadas con las operaciones de
coma flotante. Estas funciones, que no tienen argumentos, son las siguientes:
12 Capı́tulo 1. Introducción al Matlab

• eps devuelve la diferencia entre 1.0 y el número de coma flotante inmediata-


mente superior. Da una idea de la precisión o número de cifras almacenadas.
En un PC, eps vale 2.2204e-016.

• realmin devuelve el número más pequeño con que se puede trabajar (2.2251e-
308).

• realmax devuelve el número más grande con que se puede trabajar (1.7977e+308).

En muchos cálculos matriciales los datos y/o los resultados no son reales sino com-
plejos, con parte real y parte imaginaria. MATLAB trabaja sin ninguna dificultad
con números complejos. En la entrada de datos se pueden utilizar indistintamente la
i y la j para representar la unidad imaginaria (cuando MATLAB devuelve los datos
siempre aparece la i). Cuando i y j son variables utilizadas para otras finalidades,
como unidad imaginaria puede utilizarse también la función sqrt(-1 ), o una variable
a la que se haya asignado el resultado de esta función.
La asignación de valores complejos a vectores y matrices desde teclado puede
hacerse de las dos formas que se muestran en el ejemplo siguiente (conviene hacer
antes clear i, para que i no esté definida como variable. Este comando se estudiará
más adelante):

>> A = [1+2i 2+3i; -1+i 2-3i]


A =
1.0000 + 2.0000i 2.0000 + 3.0000i
-1.0000 + 1.0000i 2.0000 - 3.0000i

>> A = [1 2; -1 2] + [2 3; 1 -3]*i
A =
1.0000 + 2.0000i 2.0000 + 3.0000i
-1.0000 + 1.0000i 2.0000 - 3.0000i

Puede verse que es posible definir las partes reales e imaginarias por separado.
En este caso sı́ es necesario utilizar el operador (*), según se muestra en el ejemplo
anterior. MATLAB dispone asimismo de la función complex , que crea un número
complejo a partir de dos argumentos que representan la parte real e imaginaria.
Es importante advertir que el operador de matriz traspuesta (’), aplicado a ma-
trices complejas, produce la matriz conjugada y traspuesta. Existe una función
que permite hallar simplemente la matriz conjugada (conj) y el operador punto y
apóstrofe (.’) que calcula simplemente la matriz traspuesta.
MATLAB puede definir variables que contengan cadenas de caracteres. En MAT-
LAB las cadenas de texto van entre apóstrofos o comillas simples.
1.2 Operaciones básicas 13

Ahora se va a tratar de generalizar un poco lo visto hasta ahora en cuanto a


expresiones matriciales. Una variable es un nombre que se da a una matriz, un
vector o un escalar. El valor de esa variable, e incluso su tipo, puede cambiar a
lo largo de la ejecución de un programa. Una expresión de MATLAB puede tener
las dos formas siguientes: primero, asignando su resultado a una variable, variable
= expresión y segundo evaluando simplemente el resultado del siguiente modo,
expresión, en cuyo caso el resultado se asigna automáticamente a una variable
interna de MATLAB llamada ans (de answer) que almacena el último resultado
obtenido. Se considera por defecto que una expresión termina cuando se pulsa el
retorno de carro. Si se desea que una expresión continúe en la lı́nea siguiente, hay
que introducir tres puntos (...) antes de pulsar dicho retorno de carro. También
se pueden incluir varias expresiones en una misma lı́nea separándolas por comas (,)
o puntos y comas (;). Si una expresión termina en punto y coma (;) su resultado se
calcula, pero no se escribe en pantalla.
A semejanza de C los nombres de variables deben empezar siempre por una
letra y pueden constar de hasta 31 letras y números. El carácter guión bajo ( ) se
considera como una letra. A diferencia del lenguaje C, no hace falta declarar las
variables que se vayan a utilizar. Esto hace que se deba tener especial cuidado con
no utilizar nombres erróneos en las variables, porque no se recibirá ningún aviso del
ordenador.
Cuando se quiere tener una relación de las variables que se han utilizado en
una sesión de trabajo se utiliza el comando who. Existe otro comando, whos, que
proporciona además información sobre tamaño, cantidad de memoria ocupada y el
carácter de cada variable. Relacionado con estos dos comandos aparece el comando
clear que tiene varias formas posibles:

• clear sin argumentos; elimina todas las variables creadas previamente (excepto
las variables globales).

• clear A X Y, borra las variables indicadas (en este caso A, X e Y).

• clear global borra las variables globales.

• clear functions borra las funciones.

• clear all borra todas las variables, incluyendo las globales, y las funciones.

Existen en MATLAB varias funciones orientadas a definir con gran facilidad


matrices de tipos particulares. Algunas de estas funciones son las siguientes:

• eye(N) forma la matriz identidad de tamaño NxN.

• zeros(M,N) forma una matriz de ceros de tamaño MxN.


14 Capı́tulo 1. Introducción al Matlab

• ones(M,N) forma una matriz de unos de tamaño MxN.

• linspace(x1,x2,n) vector con n valores, igualmente espaciados, entre x1 y x2

• logspace(d1,d2,n) vector con n valores espaciados, logarı́tmicamente, entre 10d1


y 10d2 .

• rand(M,N) matriz de números aleatorios entre 0 y 1, con distribución uniforme,


de tamaño MxN.

• randn(M,N) matriz MxN de números aleatorios con distribución normal, de


valor medio 0 y varianza 1.

Existen otras funciones para crear matrices de tipos particulares. Con Help/Help
Window se puede obtener información sobre todas las funciones disponibles en
MATLAB, que aparecen agrupadas por directorios. En matlab\elmat aparecen la
mayor parte de las funciones estudiadas en este apartado.
Un par de instrucciones muy útiles para trabajar con matrices son size y length.
[m,n]=size(A) devuelve el número de filas y de columnas de la matriz A por otra
parte n=length(x) calcula el número de elementos de un vector x.
A partir de unas determinadas matrices se pueden obtener otras derivadas de ellas
mediante el uso de determinadas instrucciones. Ası́, a modo de ejemplo, algunas de
estas posibilidades serı́an:

• zeros(size(A)) forma una matriz de ceros del mismo tamaño que una matriz A
previamente creada.

• ones(size(A)) lo mismo pero ahora aparecen unos.

• A=diag(x) forma una matriz diagonal A cuyos elementos diagonales son los
elementos de un vector ya existente x.

• x=diag(A) operación opuesta a la anterior; forma un vector x a partir de los


elementos de la diagonal de una matriz ya existente A

• flipud(A) halla la matriz simétrica de A respecto de un eje horizontal.

• fliplr(A) halla la matriz simétrica de A respecto de un eje vertical.

• reshape(A,m,n) cambia el tamaño de la matriz A devolviendo una matriz de


tamaño mxn cuyas columnas se obtienen a partir de un vector formado por las
columnas de A puestas una a continuación de otra.
1.2 Operaciones básicas 15

Existen muchas más y, al igual que con ejemplos anteriores se sugiere al lector
que utilice el fichero de ayuda de MATLAB para ver todas las posibilidades que se
le ofrecen.
Otras formas de definición de matrices serı́an los ficheros .m. MATLAB acepta
este tipo de ficheros que contienen instrucciones y/o funciones. Dichos ficheros se
llaman desde la lı́nea de comandos tecleando su nombre, sin la extensión. Las varia-
bles definidas dentro de un fichero de comandos *.m que se ejecuta desde la lı́nea de
comandos son variables globales, esto es, pueden ser accedidas desde fuera de dicho
fichero; no sucede lo mismo si el fichero *.m corresponde a una función. Si un fichero
de comandos se llama desde una función, las variables que se crean pertenecen al
espacio de trabajo de dicha función, son locales.
Existe un operador muy importante en MATLAB por el uso tan extendido que se
le da; este operador es el operador dos puntos (:). En cierta forma se podrı́a decir que
el operador (:) representa un rango. Ası́, si se tiene x=1:2:10, el vector x contendrı́a
los enteros de 1 a 10 a incrementos de dos (en definitiva se tendrı́an los impares).
Por defecto el incremento es 1, pero este operador puede también utilizarse con
otros valores enteros y reales, positivos o negativos. Puede verse que, por defecto,
este operador produce vectores fila. Si se desea obtener un vector columna basta
trasponer el resultado.
El operador dos puntos (:) es muy útil y potente con matrices. Recuérdese que
MATLAB accede a los elementos de una matriz por medio de los ı́ndices de fila y
de columna encerrados entre paréntesis y separados por una coma. Podemos usar
el operador : para acceder a una determinada submatriz de una matriz. Ası́ por
ejemplo A(2,3:5) serı́a el vector correspondiente a la segunda fila de la matriz pero
considerando solamente las columnas 3,4 y 5. Los dos puntos aislados representan
“todos los elementos”. Por ejemplo, el comando A(3,:) extrae todos los elementos
de la 3a fila de la matriz A. Para acceder a la última fila o columna puede utilizarse
la palabra end, en lugar del número correspondiente.
Uno de los posibles problemas que se puede encontrar al trabajar con MATLAB
son la matriz vacı́a. Para MATLAB una matriz definida sin ningún elemento entre
los corchetes es una matriz que existe, pero que está vacı́a, o lo que es lo mismo que
tiene dimensión cer o. Las funciones exist() e isempty() permiten chequear si una
variable existe y si está vacı́a.
En cuanto a operadores en MATLAB comenzaremos por los relacionales; estos
son:

< menor que

> mayor que

<= menor o igual que


16 Capı́tulo 1. Introducción al Matlab

>= mayor o igual que

== igual que

∼= distinto que

En MATLAB los operadores relacionales pueden aplicarse a vectores y matrices,


si una comparación se cumple el resultado es 1 (verdadero), mientras que si no se
cumple es 0 (falso). Recı́procamente, cualquier valor distinto de cero, es considerado
como verdadero y el cero equivale a falso. Hay que tener en cuenta que cuando
los operadores relacionales se aplican a dos matrices o vectores del mismo tamaño,
la comparación se realiza elemento a elemento, y el resultado es otra matriz de
unos y ceros del mismo tamaño, que recoge el resultado de cada comparación entre
elementos.
En cuanto a los operadores lógicos de MATLAB éstos son los siguientes:

& and

| or

∼ negación lógica

Los operadores lógicos se combinan con los relacionales para implementar condi-
ciones múltiples.

1.3 Funciones de Matlab


MATLAB tiene un gran número de funciones incorporadas. Algunas son funcio-
nes incorporadas en el propio programa. El código de estas funciones está optimi-
zado, siendo funciones particularmente rápidas y eficientes. Además podemos tener
funciones definidas por el usuario.
En MATLAB una función tiene nombre, valor(es) de retorno y argumentos. Una
función se llama utilizando su nombre en una expresión o utilizándolo como un
comando más. Las funciones se definen en ficheros de texto *.m. Una diferencia
importante con otros lenguajes es que en MATLAB las funciones pueden tener valores
de retorno matriciales múltiples. Además las funciones que no tienen argumentos
de entrada no llevan paréntesis, por lo que a simple vista no siempre son fáciles de
distinguir de las simples variables. Los nombres de las funciones de MATLAB no son
palabras reservadas del lenguaje; es posible crear una variable llamada con el mismo
nombre que una determinada función, lo que ocultará la función correspondiente.
A continuación se enumeran los tipos de funciones más importantes de MATLAB
clasificadas según su finalidad:
1.3 Funciones de Matlab 17

1.- Funciones matemáticas elementales.


2.- Funciones especiales.
3.- Funciones matriciales elementales.
4.- Funciones matriciales especı́ficas.
5.- Funciones para la descomposición y/o factorización de matrices.
6.- Funciones para análisis estadı́stico de datos.
7.- Funciones para análisis de polinomios.
8.- Funciones para integración de ecuaciones diferenciales ordinarias.
9.- Resolución de ecuaciones no-lineales y optimización.
10.- Integración numérica.
11.- Funciones para procesamiento de señal.
A continuación se enumeran algunas caracterı́sticas generales de las funciones de
MATLAB:

• Los argumentos usados al llamar la función pueden ser expresiones y también


llamadas a otra función.

• MATLAB nunca modifica las variables que se pasan como argumentos. Si el


usuario las modifica dentro de la función, se sacan copias modificándose dichas
copias, no las variables originales.

• MATLAB admite valores de retorno matriciales múltiples.

Las operaciones de suma y/o resta de una matriz con un escalar consisten en
sumar y/o restar el escalar a todos los elementos de la matriz.
Destacar que en el Help Desk aparecen enlaces a “Matlab Functions by Sub-
ject” y “Matlab Functions by Index”, en donde aparecen relaciones completas de las
funciones disponibles en MATLAB.
En cuanto a funciones matemáticas elementales que operan con escalares algunas
de las más importantes serı́an las siguientes:

• sin(x) seno.

• cos(x) coseno.

• tan(x) tangente.

• asin(x) arco seno.

• acos(x) arco coseno.

• atan(x) arco tangente (devuelve un ángulo entre -π/2 y +π/2).

• sinh(x) seno hiperbólico.


18 Capı́tulo 1. Introducción al Matlab

• cosh(x) coseno hiperbólico.

• tanh(x) tangente hiperbólica.

• asinh(x) arco seno hiperbólico.

• acosh(x) arco coseno hiperbólico.

• atanh(x) arco tangente hiperbólica.

• log(x) logaritmo natural.

• log10(x) logaritmo decimal.

• exp(x) función exponencial.

• sqrt(x) raı́z cuadrada.

• sign(x) devuelve -1 si <0, 0 si =0 y 1 si >0. Aplicada a un número comple-


jo,devuelve un vector unitario en la misma dirección.

• rem(x,y) resto de la división (2 argumentos que no tienen que ser enteros).

• round(x) redondeo hacia el entero más próximo.

• fix(x) redondea hacia el entero más próximo a 0.

• real(x) parte real.

• imag(x) parte imaginaria.

• abs(x) valor absoluto.

• angle(x) fase.

Las anteriores funciones actúan sobre escalares y vectores/matrices. Existen


otras funciones que actúan solamente sobre vectores y matrices:

• max(x) máximo elemento de un vector. Devuelve el valor máximo y la posición


que ocupa.

• min(x) mı́nimo elemento de un vector. Devuelve el valor mı́nimo y la posición


que ocupa.

• sum(x) suma de los elementos de un vector.

• cumsum(x) devuelve el vector suma acumulativa de los elementos de un vector.

• mean(x) valor medio de los elementos de un vector.


1.3 Funciones de Matlab 19

• std(x) desviación tı́pica

• prod(x) producto de los elementos de un vector.

• cumprod(x) devuelve el vector producto acumulativo de los elementos de un


vector.

• sort(x) ordenación de menor a mayor de los elementos de un vector x.

En realidad estas funciones se pueden aplicar también a matrices, pero en ese caso
se aplican por separado a cada columna de la matriz, dando como valor de retorno
un vector resultado de aplicar la función a cada columna de la matriz considerada
como vector. Si estas funciones se quieren aplicar a las filas de la matriz basta aplicar
dichas funciones a la matriz traspuesta.
Las siguientes funciones se aplican solamente a matrices. En este grupo aparecen
algunas de las funciones más útiles y potentes de MATLAB:

• B = A’ traspuesta (conjugada si es compleja) de la matriz A.

• B = A.’ traspuesta (sin conjugar) de la matriz A.

• v = poly(A) polinomio caracterı́stico de la matriz cuadrada A.

• t = trace(A) suma de los elementos de la diagonal de una matriz cuadrada.

• [m, n] = size(A) número de filas m y de columnas n.

• n = size(A) tamaño de una matriz cuadrada A.

Existen una serie de instrucciones sobre cálculo matricial que tiene una amplia
utilización en el campo del procesado digital de señales, algunas de estas funciones
serı́an las siguientes:

• B = inv(A) inversa de A.

• d = det(A) determinante d de la matriz A.

• E = rref(A) reducción a forma de escalón

• [X, D] = eig(A) valores propios (diagonal de D) y vectores propios (columnas


de X) de una matriz cuadrada A. Con frecuencia el resultado es complejo (si
A no es simétrica).

• [X, D] = eig(A,B) valores propios (diagonal de D) y vectores propios (columnas


de X) de dos matrices cuadradas A y B (Ax = lBx).
20 Capı́tulo 1. Introducción al Matlab

• [Q, R] = qr() descomposición QR de una matriz rectangular. Se utiliza para


sistemas con más ecuaciones que incógnitas.

• Q = orth(A) las columnas de Q son una base ortonormal del espacio de co-
lumnas de A. El número de columnas de Q es el rango de A.

• [U, D, V ] = svd(A) descomposición de valor singular de una matriz rectangular


(A=U*D*V’). U y V son matrices ortonormales. D es diagonal y contiene los
valores singulares.

• B = pinv(A) calcula la pseudo-inversa de una matriz rectangular A

• r = rank(A) calcula el rango r de una matriz rectangular A

1.3.1 Cálculo de normas de matrices.


• norm(A) norma sub-2, es decir, máximo valor singular de A, max(svd(A)).

• normest(A) aproximación de la norma sub-2. Útil para matrices grandes en


las que norm(A) necesita demasiado tiempo.

• norm(A,2) lo mismo que norm(A)

• norm(A,1) norma sub-1 de A, máxima suma de valores absolutos por columnas,


es decir: max(sum(abs((A)))).

• norm(A,inf) máxima suma de valores absolutos por filas, es decir: max(sum(abs((A’))))

1.3.2 Cálculo de normas de vectores.


• norm(x,p) norma sub-p, es decir sum(abs(x) p) (1/p).

• norm(x) norma euclı́dea; equivale al módulo o norm(x,2).

• norm(x,inf) max(abs(x)).

• norm(x,1) norma sub-1, es decir sum(abs(x)).

Además MATLAB dispones de una serie de instrucciones para trabajar con las
matrices, vectores, binarias que se obtienen tras la aplicación de los operadores
relacionales, algunas de estas instrucciones son:

• any(x) comprueba si alguno de los elementos del vector x cumple una determi-
nada condición (en este caso ser distinto de cero). Devuelve un uno o un cero.
Si x es una matriz se aplica por separado a cada columna. El resultado es un
vector de unos y ceros.
1.4 Datos en Matlab 21

• all(x) función vectorial; comprueba si todos los elementos del vector x cumplen
una condición. Devuelve un uno o un cero. Si x es una matriz se aplica por
separado a cada columna. El resultado es un vector de unos y ceros.

• find(x) busca ı́ndices correspondientes a elementos de vectores que cumplen


una determinada condición. El resultado es un vector con los ı́ndices de los
elementos que cumplen la condición. Cuando esta función se aplica a una
matriz la considera como un vector con una columna detrás de otra, de la 1a
a la última.

Relacionadas con éstas existen otras funciones que comprueban otras condiciones:

• exist(var) comprueba si la variable var existe

• isnan() comprueba si hay valores NaN, devolviendo una matriz de unos y ceros.

• isinf() comprueba si hay valores Inf, devolviendo una matriz de unos y ceros.

• isfinite() comprueba si los valores son finitos.

• isempty() comprueba si un vector o matriz está vacı́o.

• ischar() comprueba si una variable es una cadena de caracteres.

• isglobal() comprueba si una variable es global.

• issparse() comprueba si una matriz tiene un gran número de ceros.

1.4 Datos en Matlab


Hasta ahora sólo se ha comentado el trabajo de MATLAB con escalares, vectores
y matrices. Veremos a continuación que este programa puede trabajar con otros
tipos de datos:

1. Conjuntos o cadenas de caracteres, fundamentales en cualquier lenguaje de pro-


gramación.

2. Hipermatrices, o matrices de más de dos dimensiones.

3. Estructuras, o agrupaciones bajo un mismo nombre de datos de naturaleza


diferente.

4. Vectores o matrices de celdas (cell arrays), que son vectores o matrices cuyos
elementos pueden ser cualquier otro tipo de dato.
22 Capı́tulo 1. Introducción al Matlab

Comenzaremos hablando de las cadenas de caracteres. Comentar para empezar


que las funciones para cadenas de caracteres están en el sub-directorio toolbox\matlab\strfun
del directorio en que esté instalado MATLAB.
Los caracteres de una cadena se almacenan en un vector, con un carácter por
elemento. Las cadenas de caracteres van entre apóstrofos o comillas simples, como
por ejemplo: ’cadena’. Si la cadena debe contener comillas, éstas se representan por
un doble carácter comilla, de modo que se pueden distinguir fácilmente del principio
y final de la cadena. Por ejemplo, para escribir la cadena ni ’idea’ se escribirı́a ’ni’
’idea”’. Una matriz de caracteres es una matriz cuyos elementos son caracteres, o
bien una matriz cuyas filas son cadenas de caracteres. Todas las filas de una matriz
de caracteres deben tener el mismo número de elementos. Si es preciso, las cadenas
(filas) más cortas se completan con blancos.
Las funciones más importantes para manejo de cadenas de caracteres son las
siguientes:

• double(c) convierte en números ASCII cada carácter.

• char(v) convierte un vector de números v en una cadena de caracteres.

• char(c1,c2) crea una matriz de caracteres, completando con blancos las cadenas
más cortas.

• deblank(c) elimina los blancos al final de una cadena de caracteres.

• disp(c) imprime el texto contenido en la variable c

• ischar(c) detecta si una variable es una cadena de caracteres.

• isletter() detecta si un carácter es una letra del alfabeto. Si se le pasa un vector


o matriz de caracteres devuelve un vector o matriz de unos y ceros.

• isspace() detecta si un carácter es un espacio en blanco. Si se le pasa un vector


o matriz de caracteres devuelve un vector o matriz de unos y ceros.

• strcmp(c1,c2) comparación de cadenas. Si las cadenas son iguales devuelve


un uno, y si no lo son, devuelve un cero (funciona de modo diferente que la
correspondiente función de C).

• strcmpi(c1,c2) igual que strcmp(c1,c2 ), pero ignorando la diferencia entre


mayúsculas y minúsculas.

• strncmp(c1,c2,n) compara los n primeros caracteres de dos cadenas c1==c2


compara dos cadenas carácter a carácter. Devuelve un vector o matriz de unos
y ceros.
1.4 Datos en Matlab 23

• strmatch(cc,c) devuelve los ı́ndices de todos los elementos de la matriz de


caracteres (o vector de celdas) cc, que empiezan por la cadena c.

• strrep(c1,c2,c3) sustituye la cadena c2 por c3, cada vez que c2 es encontrada


en c1.

• [p, r]=strtok(t) separa las palabras de una cadena de caracteres t. Devuelve la


primera palabra p y el resto de la cadena r.

• int2str(v) convierte un número entero en cadena de caracteres.

• num2str(x,n) convierte un número real x en su expresión por medio de una


cadena de caracteres, con cuatro cifras decimales por defecto.

• str2double(str) convierte una cadena de caracteres representando un número


real en el número real correspondiente.

• vc=cellstr(cc) convierte una matriz de caracteres cc en un vector de celdas vc,


eliminando los blancos adicionales al final de cada cadena; la función char()
realiza las conversiones opuestas.

• sprintf convierte valores numéricos en cadenas de caracteres, de acuerdo con


las reglas y formatos de conversión del lenguaje C.

Pasemos a continuación a comentar las hipermatrices, matrices de más de dos


dimensiones. Una aplicación tı́pica de estos elementos serı́a almacenar con un único
nombre distintas matrices del mismo tamaño (resulta una hipermatriz de 3 dimensio-
nes). Destacar que los elementos de una hipermatriz pueden ser números, caracteres,
estructuras, y vectores o matrices de celdas.
Las funciones para trabajar con estas hipermatrices están en el sub-directorio
toolbox\matlab\datatypes. Respecto a las funciones vistas de MATLAB, se pueden
establecer las siguientes reglas para su aplicación a hipermatrices:

1. Todas las funciones de MATLAB que operan sobre escalares (sin( ), cos( ), etc.)
se aplican sobre hipermatrices elemento a elemento (igual que sobre vectores
y matrices). Las operaciones con escalares se aplican de la misma manera.

2. Las funciones que operan sobre vectores (sum( ), max( ), etc.) se aplican a
matrices e hipermatrices según la primera dimensión, resultando un array de
una dimensión inferior.

3. Las funciones matriciales propias del Álgebra Lineal (det( ), inv( ), etc.) no se
pueden aplicar a hipermatrices. Para poderlas aplicar hay que extraer primero
las matrices correspondientes.
24 Capı́tulo 1. Introducción al Matlab

Las siguientes funciones de MATLAB se pueden emplear también con hiperma-


trices:

• size() no de elementos en cada dimensión.

• ndims() número de dimensiones.

• squeeze() elimina las dimensiones que son igual a uno.

• reshape() distribuye el mismo número de elementos en una matriz con distinta


forma o con distintas dimensiones.

• permute(A,v) permuta las dimensiones de A según los ı́ndices del vector v

• ipermute(A,v) realiza la permutación inversa

La función cat() permite concatenar matrices según las distintas “dimensiones”,


como puede verse en el siguiente ejemplo:

>> A=zeros(2,3); B=ones(2,3);

>>cat(1,A,B)
ans =
0 0 0
0 0 0
1 1 1
1 1 1

>> cat(2,A,B)

ans =
0 0 0 1 1 1
0 0 0 1 1 1

>> cat(3,A,B)

ans(:,:,1) =
0 0 0
0 0 0

ans(:,:,2) =
1 1 1
1 1 1
1.4 Datos en Matlab 25

Pasemos ahora a los vectores de celdas; un vector (matriz o hipermatriz) de


celdas es un vector (matriz o hipermatriz) cuyos elementos son, cada uno de ellos,
una variable de tipo cualquiera. En un vector ordinario todos sus elementos son
números o cadenas de caracteres. Sin embargo, en un vector, array, de celdas, el
primer elemento puede ser un número; el segundo una matriz; el tercero una cadena
de caracteres; el cuarto una estructura, etc.
Vesamos cómo se crean estos elementos mediante un sencillo ejemplo.

>> vc(1)={[1 2 3]}


vc =
[1x3 double]

>> vc(2)={’mi nombre’}


vc =
[1x3 double] ’mi nombre’

>> vc(3)={rand(3,3)}
vc =
[1x3 double] ’mi nombre’ [3x3 double]

Se observa que el elemento clave para definir este array son los sı́mbolos{}. Es
importante que el nombre del vector de celdas no haya sido utilizado previamente
para otra variable (si ası́ fuera, se obtendrı́a un error). Otra nomenclatura alternativa
y similar a la anterior serı́a:

>> vb{1}=[1 2 3]
vb =
[1x3 double]

>> vb{2}=’mi nombre’


vb =
[1x3 double] ’mi nombre’

>> vb{3}=rand(3,3)
vb =
[1x3 double] ’mi nombre’ [3x3 double]

MATLAB dispone de funciones para trabajar con este tipo de datos:

• cell(m,n) crea un cell array vacı́o de m filas y n columnas

• celldisp(ca) muestra el contenido de todas las celdas de ca


26 Capı́tulo 1. Introducción al Matlab

• cellplot(ca) muestra una representación gráfica de las distintas celdas

• iscell(ca) indica si ca es un vector de celdas

• num2cell() convierte un array numérico en un cell array

• cell2struct() convierte un cell array en una estructura

• struct2cell() convierte una estructura en un cell array

Continuando con los tipos de datos de MATLAB pasaremos a describir las es-
tructuras. Una estructura es una agrupación de datos (campos) de tipo diferente
bajo un mismo nombre. Una estructura es un nuevo tipo de dato, del que luego se
pueden crear muchas variables. Por ejemplo, la estructura alumno puede contener
los campos nombre (una cadena de caracteres) y carnet (un número).
En MATLAB la estructura alumno se crea creando un objeto de dicha estructura.
A diferencia de otros lenguajes de programación, no hace falta definir previamente
el modelo de la estructura. Una posible forma de hacerlo es crear uno a uno los
distintos campos, como en el ejemplo siguiente:

>> alu.nombre=’Mikel’
alu =
nombre: ’Mikel’

>> alu.carnet=75482
alu =
nombre: ’Mikel’
carnet: 75482

>> alu
alu =
nombre: ’Mikel’
carnet: 75482.

Se accede a los miembros o campos de una estructura por medio del operador
punto (.), que une el nombre de la estructura y el nombre del campo (por ejemplo:
alu.nombre). También puede crearse la estructura por medio de la función struct().
Los nombres de los campos se pasan a la función struct() entre apóstrofos (’), seguidos
del valor que se les quiere dar. Este valor puede ser la cadena vacı́a (”) o la matriz
vacı́a ([ ]). Pueden crearse vectores y matrices (e hipermatrices) de estructuras. Por
ejemplo, la sentencia, alum(10) = struct(’nombre’, ’Iñaki’, ’carnet’, 76589) crea un
vector de 10 elementos cada uno de los cuales es una estructura tipo alumno. Sólo
1.4 Datos en Matlab 27

el elemento 10 del vector es inicializado con los argumentos de la función struct(); el


resto de los campos se inicializan con una cadena vacı́a o una matriz vacı́a.
Algunas funciones de MATLAB para facilitar el uso de las estructuras son las
siguientes:

• fieldnames() devuelve un vector de celdas con cadenas de caracteres que recogen


los nombres de los campos de una estructura.

• isfield(ST,s) comprueba si la cadena s es un campo de una estructura ST

• isstruct(ST) comprueba si ST es o no una estructura.

• rmfield(ST,s) elimina el campo s de la estructura ST.

• getfield(ST,s) devuelve el valor del campo especificado. Si la estructura es


un vector hay que pasarle los ı́ndices como cell array (entre llaves {}) como
segundo argumento.

• setfield(ST,s,v) devuelve el valor v al campo s de la estructura ST. Si la es-


tructura es un vector, hay que pasarle los ı́ndices como cell array (entre llaves
{}) como segundo argumento.

MATLAB permite definir estructuras anidadas, es decir una estructura con cam-
pos que sean otras estructuras. Para acceder a los campos de la estructura más
interna se utiliza dos veces el operador punto:

>>clase=struct(’curso’,’primero’,’grupo’,’A’, ...
’alum’, struct(’nombre’,’Juan’, ’edad’, 19))
>> clase =
curso: ’primero’
grupo: ’A’
alum: [1x1 struct]

>> clase.alum(2).nombre=’Marı́a’;
>> clase.alum(2).edad=17;
>> clase.alum(2)

ans =
nombre: ’Marı́a’
edad: 17

>> clase.alum(1)
ans =
28 Capı́tulo 1. Introducción al Matlab

nombre: ’Juan’
edad: 19

La gran ventaja de las estructuras y los arrays de celdas es que proporcionan una
gran flexibilidad para el almacenamiento de los más diversos tipos de información.

1.5 Programación de Matlab


MATLAB permite programar muy fácilmente; de tal forma que, como lenguaje
de programación, tiene tantas posibilidades como otros lenguajes. Ası́, dispone de
sentencias para realizar bifurcaciones y bucles. Las bifurcaciones permiten realizar
una u otra operación según se cumpla o no una determinada condición. Los bucles
permiten repetir las mismas o análogas operaciones sobre datos distintos.
Comenzando por las bifurcaciones tenemos la instrucción básica if . En su forma
más simple, la sentencia if se escribe en la forma siguiente:

if condicion
sentencias
end

Existe también la bifurcación múltipl e, en la que pueden concatenarse tantas


condiciones como se desee:

if condicion1
bloque1
elseif condicion2
bloque2
elseif condicion3
bloque3
else (si no se cumplen las condiciones 1,2 y 3).
bloque4
end

Aquı́ la opción por defecto else puede ser omitida: si no está presente no se hace
nada en caso de que no se cumpla ninguna de las condiciones que se han chequeado.
Destacar que la condición del if puede ser una condición matricial, del tipo
A==B, donde A y B son matrices del mismo tamaño. Para que se considere que la
condición se cumple, es necesario que sean iguales dos a dos todos los elementos de
las matrices A y B.
1.5 Programación de Matlab 29

Como se ha dicho, MATLAB dispone de funciones especiales para ayudar en el


chequeo de condiciones matriciales. Por ejemplo, la función isequal(A, B) devuelve
un uno si las dos matrices son idénticas y un cero en caso de que difieran en algo.
La sentencia switch realiza una función análoga a un conjunto de if...elseif con-
catenados. Su forma general es la siguiente:

switch switch expresion


case case expr1,
bloque1
case {case expr2, case expr3, case expr4,...}
bloque2
...
otherwise, % opción por defecto
bloque3
end

Al principio se evalúa la switch expresion, cuyo resultado debe ser un número


escalar o una cadena de caracteres. Este resultado se compara con las case expr,
y se ejecuta el bloque de sentencias que corresponda con ese resultado. Si ninguno
es igual a switch expresion se ejecutan las sentencias correspondientes a otherwise.
Según puede verse en el ejemplo anterior, es posible agrupar varias condiciones; basta
la igualdad con cualquier elemento del cell array para que se ejecute ese bloque de
sentencias. La “igualdad” debe entenderse en el sentido del operador de igualdad
(==) para escalares y la función strcmp() para cadenas de caracteres).
En cuanto a los bucles, la sentencia for repite un conjunto de sentencias un
número predeterminado de veces. La siguiente construcción ejecuta sentencias con
valores de i de 1 a n, variando de uno en uno.

for i=1:n
sentencias
end

Podemos cambiar el incremento teniendo en cuenta el operador :,

Valor inicial:incremento: Valor final.

En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles


anidados. La variable j es la que varı́a más rápidamente (por cada valor de i, j toma
todos sus posibles valores):
30 Capı́tulo 1. Introducción al Matlab

for i=1:m
for j=1:n
sentencias
end
end

Continuando con bucles llegamos a la estructura de bucle while. Su sintaxis es


la siguiente:

while condicion
sentencias
end

Aquı́ condicion puede ser una expresión vectorial o matricial. Las sentencias se
siguen ejecutando mientras haya elementos distintos de cero en condicion, es decir,
mientras haya algún o algunos elementos true. El bucle se termina cuando todos
los elementos de condicion son false (es decir, cero). Como complemento a estas
instrucciones está la sentencia break que termina la ejecución del bucle más interno
de los que comprenden a dicha sentencia.
En cuanto a la introducción de las variables existe una forma sencilla de leer
variables desde teclado y escribir mensajes en la pantalla del PC. La función input
permite imprimir un mensaje en la lı́nea de comandos de MATLAB y recuperar
como valor de retorno un valor numérico o el resultado de una expresión tecleada
por el usuario. Después de imprimir el mensaje, el programa espera que el usuario
teclee el valor numérico o la expresión. Como complemento a esta instrucción está la
función disp que permite imprimir en pantalla un mensaje de texto o el valor de una
matriz, pero sin imprimir su nombre. En realidad, disp siempre imprime vectores
y/o matrices: las cadenas de caracteres son un caso particular de vectores.
Los ficheros con extensión (.m) son ficheros de texto sin formato (ficheros ASCII)
que constituyen el centro de la programación en MATLAB. Ya se han utilizado
en varias ocasiones. Estos ficheros se crean y modifican con un editor de textos
cualquiera. En el caso de MATLAB 5.3 ejecutado en un PC bajo Window s, lo más
sencillo es utilizar su propio editor de textos.

1.6 Ficheros *.m


Existen dos tipos de ficheros ∗.m: ficheros de comandos (llamados scripts en
inglés) y funciones. Los primeros contienen simplemente un conjunto de comandos
1.6 Ficheros *.m 31

que se ejecutan sucesivamente cuando se teclea el nombre del fichero en la lı́nea de


comandos de MATLAB. Un fichero de comandos puede llamar a otros ficheros de
comandos. Las variables que crea un fichero de comandos llamado desde MATLAB
pertenecen al espacio de trabajo base de MATLAB y permanecen en él cuando se
termina la ejecución de dicho fichero.
Las funciones permiten definir funciones enteramente análogas a las de MAT-
LAB, con su nombr e, sus argumentos y sus valores de retorno. Los ficheros ∗.mque
definen funciones permiten extender las posibilidades de MATLAB; de hecho existen
bibliotecas de ficheros ∗.mque se venden (toolboxes) o se distribuyen gratuitamente
la mayorı́a a través de Internet. Las funciones definidas en ficheros ∗.mse caracte-
rizan porque la primera lı́nea (que no sea un comentario) comienza por la palabra
function, seguida por los valores de retorno entre corchetes, [ ], y separados por
comas, si hay más de uno, el signo igual (=) y el nombre de la función, seguido de
los argumentos entre paréntesis y separados por comas. Recuérdese que un fichero
∗.mpuede llamar a otros ficheros ∗.m, e incluso puede llamarse a sı́ mismo de forma
recursiva. Los ficheros de comandos se pueden llamar también desde funciones, en
cuyo caso las variables que se crean pertenecen a espacio de trabajo de la función.
El espacio de trabajo de una función es independiente del espacio de trabajo base
y del espacio de trabajo de las demás funciones. Esto implica por ejemplo que no
puede haber problemas por los nombres de las variables aunque varias funciones
tengan una variable con el mismo nombre. En realidad son variables completamente
distintas. Para que la función tenga acceso a variables que no han sido pasadas como
argumentos es necesario declarar dichas variables como variables globales, tanto en
el programa principal como en las distintas funciones que deben acceder a su valor.
Las variables globales son visibles en todas las funciones (y en el espacio de trabajo
base o general) que las declaran como tales. Dichas variables de declaran precedidas
por la palabra global y separadas por blancos. Estas variables sólo son visibles en
los espacios de trabajo de las funciones que las declaran como tales (y en el propio
espacio de trabajo base, si también ahı́ han sido declaradas como globales).
Una diferencia importante con C/C++/Java es que en MATLAB una función
no modifica nunca los argumentos que recibe. Los resultados de una función de
MATLAB se obtienen siempre a través de los valores de retorno, que pueden ser
múltiples y matriciales. Si dentro de la función se realizan modificaciones sobre
los argumentos recibidos, antes se sacan copias de dichos argumentos a variables
locales y se modifican las copias. Dentro de la función, los valores de retorno deben
ser calculados en algún momento. De todas formas, no hace falta calcular siempre
todos los posibles valores de retorno de la función, sino sólo los que el usuario espera
obtener en la sentencia de llamada a la función. En cualquier función existen dos
variables definidas de modo automático, llamadas nargin y nargout, que representan,
respectivamente, el número de argumentos y el número de valores de retorno con los
32 Capı́tulo 1. Introducción al Matlab

que la función ha sido llamada. Dentro de la función, estas variables pueden ser
utilizadas como el programador desee. Tanto el número de argumentos como el de
valores de retorno no tienen que ser fijos.
Desde la versión 5.0, MATLAB dispone de una nueva forma de pasar a una
función un número variable de argumentos por medio de la variable varargi n, que
es un vector de celdas que contienen tantos elementos como sean necesarios para
poder recoger, en dichos elementos, todos los argumentos que se hayan pasado en
la llamada. No es necesario que varargin sea el único argumento, pero sı́ debe ser
el último, pues recoge todos los argumentos a partir de una determinada posición.
De forma análoga, una función puede tener un número indeterminado de valores de
retorno utilizando varargout, que es también un cell array que agrupa los últimos
valores de retorno de la función. Puede haber otros valores de retorno, pero varargout
debe ser el último.
Un tipo interesante de variables son las persistentes que son variables locales de
las funciones (pertenecen al espacio de trabajo de la función y sólo son visibles en
dicho espacio de trabajo), y que conservan su valor entre distintas llamadas a la
función. Por defecto, las variables locales de una función se crean y destruyen cada
vez que se ejecuta la función. Las variables persistentes se pueden definir en funcio-
nes, pero no en ficheros de comandos. Las variables se declaran como persistentes
utilizando la palabra persistent seguida de los nombres de las diferentes variables
separados por blancos. Las variables persistent se inicializan a la matriz vacı́a [ ] y
permanecen en memoria hasta que se hace clear de la función o cuando se modifica
el fichero-M. Para evitar que un fichero-M se modifique se puede utilizar el comando
mlock file.m, que impide la modificación del fichero. El comando munlock desblo-
quea el fichero mientras que la función mislocked permite saber si está bloqueado o
no.
Destacar que a partir de la versión 5.0 se han introducido las sub-funciones, que
son funciones adicionales definidas en un mismo fichero *.m, con nombres diferentes
del nombre del fichero (y del nombre de la función principal) y que las sub-funciones
sólo pueden ser llamadas por las funciones contenidas en ese fichero, resultando
“invisibles” para otras funciones externas.
Otro tipo de funciones son las funciones privadas. Este tipo de funciones no se
pueden llamar desde cualquier otra función, aunque se encuentren en el camino de
búsqueda o en el directorio actual. Sólo ciertas funciones están autorizadas a utilizar-
las. Las funciones privadas se definen en sub-directorios que se llaman private y sólo
pueden ser llamadas por funciones definidas en el directorio padre del sub-directorio
private. En la búsqueda de nombres que hace MATLAB cuando encuentra un nom-
bre en una expresión, las funciones privadas se buscan inmediatamente después de
las sub-funciones, y antes que las funciones de tipo general.
Otra extensión posible a las funciones es *.p. Las funciones *.p son funciones *.m
1.6 Ficheros *.m 33

pre-compiladas con la función pcode. Por defecto el resultado de este comando es un


fichero en el directorio actual (el fichero func.m puede estar en cualquier directorio
del camnio de búsqueda). El comando pcode -inplace func.m crea el fichero func.p
en el mismo directorio donde encuentra el fichero func.m. Pueden pasarse varios
ficheros *.m al comando pcode de una sola vez. Los ficheros *.p se ejecutan algo
más rápidamente que los *.m y permiten ocultar el código de los ficheros ASCII
correspondientes a las funciones *.m de MATLAB.
Uno de los problemas frecuentes que un programador se encuentra es la falta de
información sobre funciones que él mismo creó. En este problema MATLAB ayuda
al usuario ya que las funciones creadas por el usuario pueden tener su propia ayuda
de las misma forma que la tienen las funciones propias de MATLAB. Para ello las
primeras lı́enas de las funciones comienzan por el sı́mbolo % indicando al programa
que lo que sigue son comentarios. De esta forma cuando en la pantalla de comandos
de MATLAB se teclea help nombre func aparecen los comentarios que se han puesto
al principio de nombre func. Además MATLAB permite a los usuarios tener una
ayuda general para todas las funciones que están en un determinado directorio. Para
ello se crea en dicho directorio un fichero llamado contents.m. Para que este fichero
de ayuda de directorios funcione correctamente hace falta que esté en el camino de
búsqueda de MATLAB o que sea el directorio actual.
Hay varias formas de pasar datos de otras aplicaciones –por ejemplo de Excel– a
MATLAB. Se pueden enumerar las siguientes:

• Copy y Paste para copiar datos de la aplicación original y depositarlos entre


los corchetes de una matriz o vector, en una lı́nea de comandos de MATLAB.
Tiene el inconveniente de que estos datos no se pueden editar.

• Se puede crear un fichero *.m con un editor de textos, con lo cual no existen
problemas de edición.

• Es posible leer un flat file escrito con caracteres ASCII. Un flat file es un
fichero con filas de longitud constante separadas con un retorno de carro, y
varios datos por fila separados por blancos. Estos ficheros pueden ser leı́dos
desde MATLAB con el comando load.

• El comando textread permite leer datos de cualquier tipo de un fichero siempre


que estén convenientemente separados.

• Usando las funciones fopen y fread.

De forma análoga, también los resultados de MATLAB se pueden exportar a


otras aplicaciones como Word o Excel.

• Usando el comando diary para datos de pequeño tamaño.


34 Capı́tulo 1. Introducción al Matlab

• Utilizando el comando save con la opción –ascii

• Utilizando las funciones de bajo nivel fopen, fwrite.

Mención especial merece el trabajo con ficheros. MATLAB dispone de funciones


de lectura/escritura análogas a las del lenguaje C aunque con algunas diferencias.
En general son versiones simplificadas –con menos opciones y posibilidades– que las
correspondientes funciones de C. Comenzamos con las instrucciones para abrir (fo-
pen) y cerrar ficheros (fclose), respectivamente. La función fopen tiene la forma
siguiente:

[fid,texto] = fopen(’filename’,’c’)

Donde fid es un valor de retorno que sirve como identificador del fichero, texto
es un mensaje para caso de que se produzca un error, y c es un carácter (o dos) que
indica el tipo de operación que se desea realizar. Las opciones más importantes son
las siguientes:

’r’ lectura (de read)


’w’ escritura reemplazando (de write)
’a’ escritura a continuación (de append)
’r+’ lectura y escritura

Cuando por alguna razón el fichero no puede ser abierto, se devuelve un (-1). En
este caso el valor de retorno texto puede proporcionar información sobre el tipo de
error que se ha producido también existe una función llamada ferror que permite
obtener información sobre los errores. Después de realizar las operaciones de lectura
y escritura deseadas, el fichero se puede cerrar con la función close en la forma
siguiente:

st = fclose(fi)

donde st es un valor de retorno para posibles condiciones de error. Si se quieren


cerrar a la vez todos los ficheros abiertos puede utilizarse el comando:

st = close(’all’)

Otra función importante para el manejo de ficheros es fscan. La forma general


de la función fscanf es la siguiente:
1.6 Ficheros *.m 35

[var1,var2,...] = fscanf(fid,’cadena de control’,size)

Donde fi es el identificador del fichero (devuelto por la función fopen), y size es


un argumento opcional que puede indicar el tamaño del vector o matriz a leer. La
cadena de control va encerrada entre apóstrofes simples, y contiene los especificado-
res de formato para las variables:

%s para cadenas de caracteres


%d para variables enteras
%f para variables de punto flotante
%lf para variables de doble precisión

La función sscanf es similar a fscanf pero la entrada de caracteres no proviene


de un fichero sino de una cadena de caracteres.
Finalmente, la función fprintf dirige su salida formateada hacia el fichero indi-
cado por el identificador. Su forma general es:

fprintf(fi,’cadena de control’,var1,var2,...)

La cadena de control contiene los formatos de escritura, que son similares a los
de C. De forma análoga, la función sprintf convierte su resultado en una cadena
de caracteres que devuelve como valor de retorno, en vez de enviarlo a un fichero.
Véase un ejemplo:

resultado = sprintf(’El cuadrado de %f es %12.4f\n’,n,n*n)

Donde resultado es una cadena de caracteres. Esta función constituye el método


más general de convertir números en cadenas de caracteres, por ejemplo para ponerlos
como tı́tulos de figuras.
Las funciones fread y fwrite son análogas a fscanf y fprintf , pero en vez
de leer o escribir en un fichero de texto (ASCII), lo hacen en un fichero binari o, no
legible directamente por el usuario. Aunque dichos ficheros no se pueden leer y/o
modificar con un editor de textos, tienen la ventaja de que las operaciones de lectura
y escritura son mucho más rápidas, eficientes y precisas (no se pierden decimales al
escribir).
De ordinario los ficheros de disco se leen y escriben secuencialmente, es decir, de
principio a final, sin volver nunca hacia atrás ni realizar saltos. Sin embargo, a veces
interesa acceder a un fichero de un modo arbitrario, sin ningún orden preestablecido.
Esto se puede conseguir con las funciones ftell y fseek . En cada momento hay una
especie de cursor que indica en qué parte del fichero se está posicionado. La función
36 Capı́tulo 1. Introducción al Matlab

fseek permite mover este cursor hacia delante o hacia atrás, respecto a la posición
actual (’cof’), respecto al principio (’bof’) o respecto al final del fichero (’eof’). La
función ftell indica en qué posición está el cursor. Si alguna vez se necesita utilizar
este tipo de acceso a disco, se puede buscar más información por medio del help.

1.7 Gráficos en Matlab


Comenzaremos con los gráficos 2-D que están orientados a la representación
gráfica de vectores (y matrices). MATLAB dispone de cuatro funciones básicas
para crear gráficos 2-D. Estas funciones se diferencian principalmente por el tipo de
escala que utilizan en los ejes de abscisas y de ordenadas. Estas cuatro funciones
son las siguientes:

• plot() crea un gráfico a partir de vectores y/o columnas de matrices, con escalas
lineales sobre ambos ejes.

• loglog() lo mismo pero ahora con escala logarı́tmica en ambos ejes.

• semilogx() ahora se tiene escala lineal en el eje de ordenadas y logarı́tmica en


el eje de abscisas.

• semilogy() escala lineal en el eje de abscisas y logarı́tmica en el eje de ordenadas.

Existen además otras funciones orientadas a añadir tı́tulos al gráfico, a cada


uno de los ejes, a dibujar una cuadrı́cula auxiliar, a introducir texto, etc. Algunas
funciones destacadas son las siguientes:

• title(’tı́tulo’) añade un tı́tulo al dibujo.

• xlabel(’etiq’) añade una etiqueta al eje de abscisas. Con xlabel off desaparece.

• ylabel(’etiq’) añade una etiqueta al eje de ordenadas. Con ylabel off desaparece.

• text(x,y,’texto’) introduce ’texto’ en el lugar especificado por las coordenadas


x e y.

• gtext(’texto’) introduce texto con ayuda del ratón: el cursor cambia de forma
y se espera un clic para introducir el texto en esa posición

• legend() define rótulos para las distintas lı́neas o ejes utilizados en la figura.

• grid activa la inclusión de una cuadrı́cula en el dibujo. Con grid off desaparece
la cuadrı́cula.
1.7 Gráficos en Matlab 37

La función plot es la función clave de todos los gráficos 2-D en MATLAB. Ya


se ha dicho que el elemento básico de los gráficos bidimensionales es el vector.
Se utilizan también cadenas de 1, 2 ó 3 caracteres para indicar colores y tipos de
lı́nea. La función plot( ), en sus diversas variantes, no hace otra cosa que dibujar
vectores. Por defecto, los distintos puntos del gráfico se unen con una lı́nea continua.
También por defecto, el color que se utiliza para la primera lı́nea es el azul. Cuando
a la función plot() se le pasa un único vector –real– como argumento, dicha función
dibuja en ordenadas el valor de los n elementos del vector frente a los ı́ndices 1, 2,
... n del mismo en abscisas. Más adelante se verá que si el vector es complejo, el
funcionamiento es bastante diferente.
Una segunda forma de utilizar la función plot() es con dos vectores como argu-
mentos. En este caso los elementos del segundo vector se representan en ordenadas
frente a los valores del primero, que se representan en abscisas. Además la fun-
ción plot() permite también dibujar múltiples curvas introduciendo varias parejas
de vectores como argumentos. En este caso, cada uno de los segundos vectores se
dibujan en ordenadas como función de los valores del primer vector de la pareja, que
se representan en abscisas.
Si se pasan a plot() varios vectores complejos como argumentos, MATLAB re-
presenta las partes reales y desprecia las partes imaginarias. Sin embargo, un único
argumento complejo hace que se represente la parte real en abscisas, frente a la parte
imaginaria en ordenadas. Si se quieren dibujar varios vectores complejos, hay que
separar explı́citamente las partes reales e imaginarias de cada vector.
El comando plot puede utilizarse también con matrices como argumentos. Al-
gunos ejemplos sencillos serı́an (A es una matriz y x un vector):

• plot(A) dibuja una lı́nea por cada columna de A en ordenadas, frente al ı́ndice
de los elementos en abscisas.

• plot(x,A) dibuja las columnas (o filas) de A en ordenadas frente al vector x en


abscisas. Las dimensiones de A y x deben ser coherentes: si la matriz A es
cuadrada se dibujan las columnas, pero si no lo es y la dimensión de las filas
coincide con la de x, se dibujan las filas.

• plot(A,x) análogo al anterior, pero dibujando las columnas (o filas) de A en


abscisas, frente al valor de x en ordenadas.

• plot(A,B) dibuja las columnas de B en ordenadas frente a las columnas de A


en abscisas, dos a dos. Las dimensiones deben coincidir.

• plot(A,B,C,D) análogo al anterior para cada par de matrices. Las dimensiones


de cada par deben coincidir, aunque pueden ser diferentes de las dimensiones
de los demás pares
38 Capı́tulo 1. Introducción al Matlab

El tipo de lı́nea y color del gráfico se puede alterar usando la propia instrucción
plot ya que los argumentos de esta función es una tripleta formada por dos vectores
y una cadena de 1, 2 ó 3 caracteres que indica el color y tipo de lı́nea. En la siguiente
Introducción al Matlab
tabla se muestran las diferentes posibilidades que se tienen.

Cuando
Cuando hayhayqueque dibujar
dibujar varias
varias lı́neas,
líneas, por defecto
por defecto se vansecogiendo
van cogiendo sucesivamente
sucesivamente los
loscolores
coloresdedela la tabla
tabla comenzando
comenzando por elpor el hacia
azul, azul, arriba,
hacia yarriba,
cuandoy se cuando
terminan se se
terminan
vuelve se
a empezar
vuelve otra vez
a empezar porvez
otra el azul.
por elSi azul.
el fondo Si eles fondo
blanco,eseste color este
blanco, no secolor
utilizanopara las
se utiliza
líneas.
para las lı́neas.
Existe
Existe la posibilidad
la posibilidad de añadir
de añadir líneas lı́neas a un ya
a un gráfico gráfico ya existente,
existente, sin destruirlosinodestruirlo
sin abrir o
sinuna
abrir
nuevauna nuevaSeventana.
ventana. Se ello
utilizan para utilizan para ellohold
los comandos los on y hold off.hold
comandos on y de
El primero hold
ellos hace que los gráficos sucesivos respeten los que ya se han
off. El primero de ellos hace que los gráficos sucesivos respeten los que ya se han dibujado en la figura (es
posible que
dibujado en lahaya que modificar
figura (es posible la escala
que haya de losqueejes); el comando
modificar hold off
la escala dedeshace el el
los ejes);
efecto de hold on.
comando hold off deshace el efecto de hold on.
Una
Una ventana
ventana gráfica
gráfica se puede
se puede dividir en menparticiones
dividir m particiones y n verticales,
horizontales
horizontales y n verticales,
con
objeto de representar múltiples gráficos en ella. Cada una de estas
con objeto de representar múltiples gráficos en ella. Cada una de estas subventanas subventanas tiene sus
propios ejes. La forma general de este comando es subplot(m,n,i)donde
tiene sus propios ejes. La forma general de este comando es subplot(m,n,i)donde m y n son el
número de subdivisiones en filas y columnas, e i es la subdivisión donde se realiza la
mgráfica.
y n sonLas el número de subdivisiones
subdivisiones se numeranenconsecutivamente
filas y columnas,empezando
e i es la subdivisión
por las de donde
la
se primera
realiza fila,
la gráfica.
siguiendo Lasporsubdivisiones
las de la segunda, se numeran
etc. consecutivamente empezando por
las de la primera fila, siguiendo por las de la segunda, etc.
Para
Paramodificar
modificar los ejes se utiliza
los ejes la instrucción
se utiliza axis. Poraxis.
la instrucción defecto, PorMATLAB
defecto, ajusta
MATLABla
escala de cada uno de los ejes de modo que varíe entre el mínimo y el máximo valor de
ajusta la escala
los vectores de cada Este
a representar. uno es deellos ejes de
llamado modomodo
auto.que
Paravarı́e
definirentre
de modoel mı́nimo
explícitoy el
máximo valor
los valores de losy vectores
máximo mínimo según a representar.
cada eje, se Este
utilizaesel el llamado
comando modo auto.
axis([xmin, xmax, Para
ymin,de
definir ymax]),
modomientras
explı́citoquelosaxis(’auto’)
valores máximo devuelve el escalado
y mı́nimo de los
según cada ejeseje,
al valor por el
se utiliza
defecto oaxis([xmin,
comando automático. Otros xmax, posibles
ymin, usosymax]),
de este comando
mientras sonquelosaxis(’auto’)
siguientes: devuelve
el escalado de los ejes al valor por defecto o automático. Otros posibles usos de este
v=axis devuelve un vector v con los valores [xmin, xmax, ymin, ymax]

axis(axis) mantiene los ejes en sus actuales valores de cara a posibles


nuevas gráficas añadidas con hold on.

axis('ij') utiliza ejes de pantalla, con el origen en la esquina superior izda


y el eje j en dirección vertical descendente.

34
1.7 Gráficos en Matlab 39

comando son los siguientes:

• v=axis devuelve un vector con los valores [xmin, xmax, ymin, ymax]

• axis(axis) mantiene los ejes en sus actuales valores de cara a posibles nuevas
gráficas añadidas con hold on.

• axis(’ij’) utiliza ejes de pantall a, con el origen en la esquina superior izda y el


eje j en dirección vertical descendente.

• axis(’xy’) utiliza ejes cartesianos normales, con el origen en la esquina inferior


izda. y el eje y vertical ascendente.

• axis(’equal’) el escalado es igual en ambos ejes.

• axis(’square’) la ventana será cuadrada.

• axis(’image’) la ventana tendrá las proporciones de la imagen que se desea re-


presentar en ella siendo el escalado de los ejes será coherente con dicha imagen.

• axis(’normal’) elimina las restricciones introducidas por ’equal’ y ’square’.

• axis(’off ’) elimina las etiquetas, los números y los ejes.

• axis(’on’) restituye las etiquetas, los números y los ejes.

Si se llama a la función figure sin argumentos, se crea una nueva ventana gráfica
con el número que le corresponda. El comando figure(n) hace que la ventana n pase
a ser la ventana activa. Si dicha ventana no existe, se crea una nueva ventana con el
número que le corresponda. La función close cierra la figura activa, mientras que
close(n) cierra la ventana o figura número n. El comando clf elimina el contenido
de la figura activa, es decir, la deja abierta pero vacı́a. La función gcf devuelve el
número de la figura activa en ese momento.
Existen otras funciones gráficas bidimensionales orientadas a generar otro tipo
de gráficos distintos de los que produce la función plot() y sus análogas. Algunas
de estas funciones son las siguientes:

• bar() crea diagramas de barras

• barh() diagramas de barras horizontales

• bar3() diagramas de barras con aspecto 3-D

• bar3h() diagramas de barras horizontales con aspecto 3-D

• pie() gráficos con forma de “tarta”


40 Capı́tulo 1. Introducción al Matlab

• pie3() gráficos con forma de “tarta” y aspecto 3-D

• area() similar plot( ), pero rellenando en ordenadas de 0 a y

• stairs() función análoga a bar() sin lı́neas internas

• errorbar() representa sobre una gráfica valores de errores

• hist() dibuja histogramas de un vector

La función plot vista anteriormente dibuja vectores. Si se quiere dibujar una


función, antes de ser pasada a plot debe ser convertida en un vector de valores.
La función fplot admite como argumento un nombre de función o un nombre de
fichero *.m en el cual esté definida una función de usuario. La función puede ser
escalar (un único resultado por cada valor de x) o vectorial. La forma general de
esta función es la siguiente:

fplot(’funcion’, limites, ’cadena’, tol)

Siendo ’funcion’ el nombre de la función o del fichero *.m entre apóstrofos (pa-
sado como cadena de caracteres), limites un vector de 2 ó 4 elementos que puede
tomar los valores [xmin,xmax] o [xmin,xmax,ymin,ymax], ’cadena’ tiene el mismo
significado que en plot y permite controlar el color y el tipo de lı́nea y, por último,
tol es la tolerancia de error relativo. El valor por defecto es 2e-03. Esta función
puede utilizarse también en la forma:

[x,y]=fplot(’funcion’, limites, ’cadena’, tol)

y en este caso se devuelven los vectores x e y, pero no se dibuja nada. El gráfico


puede obtenerse con un comando posterior por medio de la función plot. Véase
un ejemplo de utilizción de esta función. Se comienza creando un fichero llamado
mifunc.m en el directorio G:\matlab que contenga las lı́neas siguientes:

function y = mifunc(x)

y(:,1)=200*sin(x)./x;
y(:,2)=x. 2;

y a continuación se ejecuta el comando:

fplot(’mifunc(x)’, [-20 20], ’g’)


1.7 Gráficos en Matlab 41

Obsérvese que la función mifunc devuelve una matriz con dos columnas, que
constituyen las dos gráficas dibujadas. En este caso se ha utilizado para ellas el color
verde.
Podemos introducir datos en la pantalla gráfica mediante el ratón. Pa ello se
utiliza la función ginput, que permite introducir las coordenadas del punto sobre el
que está el cursor al pulsar una tecla. Algunas formas de utilizar esta función son
las siguientes:

• [x,y] = ginput lee un número indefinido de puntos hasta que se termina


pulsando la tecla intro.

• [x,y] = ginput(n) lee las coordenadas de n puntos.

• [x,y,bot] = ginput igual que el anterior, pero devuelve también un vector de


enteros bot con el código ASCII de la tecla pulsada o el número del botón del
ratón.

MATLAB también ofrece la posibilidad de hacer animaciones de gráficos o pelı́culas.


Para ello se pueden utilizar las funciones: movi e, moviein y getframe. Una
pelı́cula se compone de varias imágenes, denominadas frames. La función get-
frame devuelve un vector columna con la información necesaria para reproducir la
imagen que se acaba de representar en la figura o ventana gráfica activa, por ejemplo
con la función plot. El tamaño de este vector columna depende del tamaño de la
ventana, pero no de la complejidad del dibujo. La función moviein(n) reserva me-
moria para almacenar n frames. La siguiente lista de comandos crearı́a una pelı́cula
de 17 imágenes o frames, que se almacenarán como las columnas de la matriz M:

M = moviein(17);
x=[-2*pi:0.1:2*pi]’;
for j=1:17
y=sin(x+j*pi/8);
plot(x,y);
M(:,j) = getframe;
end;

Una vez creada la pelı́cula se puede representar el número de veces que se desee
con el comando movi e. Por ejemplo, para representar 10 veces la pelı́cula anterior, a
15 imágenes por segundo, habrı́a que ejecutar el comando siguiente (los dos últimos
parámetros son opcionales):

movie(M,10,15)
42 Capı́tulo 1. Introducción al Matlab

En cuanto a la impresión de las gráficas realizadas en MATLAB, ésta es muy


fácil de llevar a cabo. El menú File de la pantalla gráfica tiene una serie de opciones
con la impresión de figuras. Ası́, es posible establecer los parámetros de la página
(Page Setup), de la impresora (Print Setup), obtener una visión preliminar (Print
Preview) e imprimir (Print). Por defecto, MATLAB produce salidas tipo postscript,
pero, si no hay ninguna impresora postcript disponible, MATLAB puede trasformar
la salida y convertirla al formato de la impresora disponible en ese momento. La
impresión de una figura puede hacerse también desde la lı́nea de comandos usando el
comando print que tiene una gran número de opciones, apareciendo éstas utilizando
el comando help.
Además es posible también exportar a un fichero una figura de MATLAB, por
ejemplo para incluirla luego en un documento de Word o en una presentación de
Powerpoint. Para ello se utiliza el comando File/Export de la ventana en la que
aparece la figura. El cuadro de diálogo que se abre ofrece distintos formatos gráficos
para guardar la imagen. La figura puede exportarse con cualquier formato estándar
y luego utilizar, por ejemplo, Paint Shop Pro para transformarla.
MATLAB tiene posibilidades de realizar varios tipos de gráficos 3D. La primera
forma de gráfico 3D es la función plot3 , que es el análogo tridimensional de la función
plot. Esta función dibuja puntos cuyas coordenadas están contenidas en 3 vectores,
bien uniéndolos mediante una lı́nea continua (defecto), bien mediante otra serie de
elementos, markers. Su terminologı́a serı́a plot3(x,y,z,s) que dibuja una lı́nea que
une los puntos (x(1), y(1), z(1)), (x(2), y(2), z(2)), etc. y la proyecta sobre un plano
para poderla representar en la pantalla. Al igual que en el caso plano, incluye una
cadena,s, de 1, 2 ó 3 caracteres para determinar las caracterı́sticas de la lı́nea.
También se pueden utilizar tres matrices X, Y y Z del mismo tamaño; plot3(X,
Y, Z) en cuyo caso se dibujan tantas lı́neas como columnas tienen estas 3 matrices,
cada una de las cuales está definida por las 3 columnas homólogas de dichas matrices.
Ahora se verá con detalle cómo se puede dibujar una función de dos variables
(z=f(x,y)) sobre un dominio rectangular. Se pueden dibujar los elementos de una
matriz como función de los dos ı́ndices. Sean x e y dos vectores que contienen
las coordenadas en una y otra dirección de la retı́cula (grid) sobre la que se va a
dibujar la función. Después hay que crear dos matrices X (cuyas filas son copias de
x) e Y (cuyas columnas son copias de y). Estas matrices se crean con la función
meshgrid. Estas matrices representan, respectivamente, las coordenadas xe yde
todos los puntos de la retı́cula. La matriz de valores Z se calcula a partir de las
matrices de coordenadas X e Y. Finalmente hay que dibujar esta matriz Z con la
función mesh. A modo de ejemplo se muestra el dibujo de la función sin(r)/r
p
(siendo r = (x2 + y 2 ):

close all
Finalmente hay que dibujar esta matriz Z con la función mesh. A modo de ejemplo se
muestra el dibujo de la función sen(r)/r (siendo r=sqrt(x^2 +y^2 ):

close all
u=0.1:0.1:10; v=u;
[U,V]=meshgrid(u,v);
1.7 Gráficos en Matlab 43
R=sqrt(U.^2+V.^2);
W=sin(R)./R;
mesh(W) u=0.1:0.1:10; v=u;
[U,V]=meshgrid(u,v);
EjecutandoR=sqrt(U.\ 2+V.\de2);
este conjunto instrucciones se obtiene la siguiente figura:
W=sin(R)./R;
mesh(W)

Ejecutando este conjunto de instrucciones se obtiene la Fig. 1.7.

Figura 6. Uso de la instrucción meshgrid.


Figura 1.7: Uso de la instrucción meshgrid.

Una forma distinta de representar


Una forma funciones
distinta de representar tridimensionales
funciones es por
tridimensionales medio
es por mediodedeisolíneas
o curvas de nivel. oPara
isolı́neas ello
curvas de se usa Para
nivel. ello se usa contour
la instrucción y contour3
la instrucción contour dependiendo
y contour3 de las
distribución de las líneas
dependiendo de lasde nivel (ende
distribución unlasplano
lı́neasodeennivel
el espacio).
(en un plano o en el espacio).
En los dibujos realizados hasta ahora, se ha visto que el resultado adoptaba
determinados
En los dibujos realizados colores, pero todavı́a
hasta no se se
ahora, ha explicado
ha visto de dónde
que han salido. Ahoraadoptaba
el resultado
se verá
determinados qué sistema
colores, peroutiliza MATLAB
todavía no se para
hadeterminar
explicado los de
colores.
dónde Un mapa de colores
han salido. Ahora se
se define como una matriz de tres columnas, cada una de las cuales contiene un valor
verá qué sistema utiliza MATLAB para determinar los colores. Un mapa de colores se
entre 0 y 1, que representa la intensidad de uno de los colores fundamentales: R (red
define como una matriz de tres columnas, cada una de las cuales contiene un valor entre
o rojo), G (green o verde) y B (blue o azul). La longitud por defecto de los mapas
0 y 1, quederepresenta la intensidad de uno de los colores fundamentales: R (red o rojo),
colores de MATLAB es 64, es decir, cada mapa de color contiene 64 colores.
G (green oAlgunos
verde)mapas
y B (blue o azul).
de colores estánLapredefinidos
longitud por defecto de
en MATLAB. los mapas
Buscando de colores de
colormap
MATLABenesHelp 64, esDesk decir, cada mapa
se obtiene la listadedecolor contiene
los mapas 64 colores.
de colores, Algunos se
para visualizarlos mapas de
colores están predefinidos
usa el en MATLAB. Buscando
comando colormap(nombre). Este comando colormap en Help
actúa sobre Desk
la figura se obtiene
activa,
la lista cambiando
de los sus mapascolores.deSi nocolores,
hay ninguna para
figuravisualizarlos
activa, sustituyese usa deelcolorcomando
al mapa
colormap(nombre).
anterior para Este comando
las siguientes actúa
figuras quesobre
se vayanla afigura
dibujar.activa, cambiando sus colores.
Cuando se desea dibujar una figura con
Si no hay ninguna figura activa, sustituye al mapa de color anteriorun determinado mapa de colores
para se
las siguientes
figuras queestablece
se vayan un a correspondencia
dibujar. entre los valores de la función y los colores del mapa

Cuando se desea dibujar una figura con un determinado mapa de colores se establece un
correspondencia entre los valores de la función y los colores del mapa de colores. Esto

38
44 Capı́tulo 1. Introducción al Matlab

de colores. Esto hace que los valores pequeños se dibujen con los colores bajos del
mapa, mientras que los valores grandes se dibujan con los colores altos. La función
que representa la correspondencia color del gráfico-valor de la función es la función
colorbar . La función caxis permite ajustar manualmente la escala de colores.
Su forma general es: caxis([cmin, cmax]) donde cmin y cmax son los valores
numéricos a los que se desea ajustar el mı́nimo y el máximo valor de la escala de
colores.
Relacionada con este punto se encuentra la función surf que tiene diversas po-
sibilidades referentes a la forma en que son representadas las facetas o polı́gonos
coloreados. Las tres posibilidades son las siguientes:

• shading flat determina sombreado con color constante para cada polı́gono.
Este sombreado se llama plano o flat.

• shading interp establece que el sombreado se calculará por interpolación


de colores entre los vértices de cada faceta. Se llama también sombreado de
Gouraud.

• shading faceted consiste en sombreado constante con lı́neas negras super-


puestas. Esta es la opción por defecto.

Para obtener el efecto deseado, basta poner la sentencia shading a continuación


de la sentencia sur f. Destacar que las funciones mesh y surf disponen de un
algoritmo de eliminación de lı́neas ocultas (los polı́gonos o facetas, no dejan ver las
lı́neas que están detrás). El comando hidden activa y desactiva la eliminación de
lı́neas ocultas.
Existen unas formas más generales de las funciones mesh, surf y pcolor. Son las
siguientes (sepresentan principalmente con la funciones mesh y surf ). La función
mesh(x, y, Z, C) dibuja una superficie cuyos puntos tienen como coordenadas
(x(j), y(i), Z(i, j)) y como color C(i, j). Obsérvese que x varı́a con el ı́ndice de
columnas e y con el de filas. Análogamente, la función: mesh(X, Y, Z, C) dibuja
una superficie cuyos puntos tienen como coordenadas (X(i,j), Y(i,j), Z(i,j)) y como
color C(i,j). Las cuatro matrices deben ser del mismo tamaño.
La principal ventaja de usar esta aproximación a la hora de representar funciones
consiste en que admiten más variedad en la forma de representar la cuadrı́cula en
el plano (x-y). La primera forma admite vectores x e y con puntos desigualmente
espaciados, y la segunda admite conjuntos de puntos muy generales, incluso los
procedentes de coordenadas cilı́ndricas y esféricas.
Otras funciones para mejorar nuestos gráficos 3-D serı́an las siguientes:

• surfc Combinación de surf , y contour en z=0


1.8 Otras caracterı́sticas de Matlab 45

• meshz Es la instrucción mesh con plano de referencia en el valor mı́nimo y


una especie de “cortina” en los bordes del dominio de la función surfl para
controlar la iluminación determinando la posición e intensidad de un foco de
luz.

• light Crea un foco de luz en los ejes actuales capaz de actuar sobre superficies
3-D. Se le deben pasar como argumentos el color, el estilo (luz local o en el
infinito) y la posición.

Las funciones surf y mesh dibujan funciones tridimensionales en perspectiva.


La localización del punto de vista o dirección de observación se puede hacer mediante
la función view , que tiene la siguiente forma:view(azimut, elev), donde azimut
es el ángulo de rotación de un plano horizontal, medido sobre el eje z a partir del eje
x en sentido antihorario, y elev es el ángulo de elevación respecto al plano (x-y).
Ambos ángulos se miden en grados, y pueden tomar valores positivos y negativos
(sus valores por defecto son -37.5 y 30). También se puede definir la dirección del
punto de vista mediante las tres coordenadas cartesianas de un vector (sólo se tiene
en cuenta la dirección): view([xd,yd,zd])
En los gráficos tridimensionales existen funciones para controlar los ejes, por
ejemplo: axis([xmin,xmax,ymin,ymax,zmin,zmax]) También se pueden utilizar
las funciones siguientes: xlabel, ylabel, zlabel, axis(’auto’ ), axis(axis), etc que
ya se comentaron en la sección de gráficos bidimensionales.

1.8 Otras caracterı́sticas de Matlab


En muchas ocasiones puede resultar interesante interrumpir el trabajo con MAT-
LAB y poderlo recuperar más tarde en el mismo punto en el que se dejó (con las
mismas variables definidas, con los mismos resultados intermedios, etc.). Hay que
tener en cuenta que al salir del programa todo el contenido de la memoria se borra
automáticamente.
Para guardar el estado de una sesión de trabajo en el directorio actual existe
el comando save. Si se teclea save antes de abandonar el programa, se crea un
fichero binario llamado matlab.mat (o matlab) con el estado de la sesión (excepto
los gráficos, que por ocupar mucha memoria hay que guardar aparte). Dicho estado
puede recuperarse la siguiente vez que se arranque el programa con el comando load.
Esta es la forma más básica de utilización de estos comandos. Se pueden guardar
también matrices y vectores de forma selectiva y en ficheros con nombre especificado
por el usuario. Por ejemplo, el comando save filename A, x, guarda las variables
A y x en un fichero binario llamado filename.mat Para recuperarlas en otra sesión
basta teclear load filename. Si no se indica ningún nombre de variable, se guardan
todas las variables creadas en esa sesión.
46 Capı́tulo 1. Introducción al Matlab

El comando save permite guardar el estado de la sesión en formato ASCII


utilizándolo de la siguiente forma:

• save -ascii % almacena 8 cifras decimales.

• save -ascii -double % almacena 16 cifras decimales.

• save -ascii -double -tab % almacena 16 cifras separadas por tabs aunque
en formato ASCII sólo se guardan los valores.

Cuando se recuperan estos ficheros con load -ascii toda la información se guarda
en una única matriz con el nombre del fichero. Esto produce un error las filas tienen
un número desigual de elementos.
Con la opción -append en el comando save la información se guarda a conti-
nuación de lo que hubiera en el fichero. Es posible también almacenar con el formato
binario de la versión 4.* de MATLAB utilizando la opción -v4 . El comando load
admite las opciones -ascii y -mat, para obligarle a leer en formato ASCII o binario,
respectivamente.
Los comandos save y load crean ficheros binarios o ASCII con el estado de
la sesión. Existe otra forma más sencilla de almacenar en un fichero un texto que
describa lo que el programa va haciendo (entradas y salidas utilizadas ası́ como los
comandos utilizados). Esto se hace con el comando diary en la forma siguiente
diary filename.txt.
Relacionada con la anterior se encuentran los comandos diary off que suspende
la ejecución de diary y diary on que la reanuda. El simple comando diary pasa
de on a off y viceversa. Para poder acceder al fichero filename.txt con el bloc de
notas, notepad, es necesario que diary esté en off.
Además de estar optimizado para trabajar con matrices y vectores MATLAB está
especialmente preparado para trabajar con polinomios. Para MATLAB un polinomio
se puede definir mediante un vector de coeficientes. Por ejemplo el polinomio x3 +
2 · x2 − 1 se puede representar mediante el vector [1 2 0 -1]. Las funciones orientadas
al cálculo con polinomios son las siguientes:

• poly(A) polinomio caracterı́stico de la matriz A.

• roots(pol) raı́ces del polinomio pol.

• polyval(pol,x) evaluación del polinomio pol para el valor de x. Si x es un


vector, pol se evalúa para cada elemento de x.

• polyvalm(pol,A) evaluación del polinomio pol de la matriz A.

• conv(p1,p2) producto de convolución de dos polinomios p1 y p2.


1.8 Otras caracterı́sticas de Matlab 47

• [c,r]=deconv(p,q) división del polinomio p por el polinomio q. En c se


devuelve el cociente y en r el resto de la división.

• residue(p1,p2) descompone el cociente entre p1 y p2 en suma de fracciones


simples.

• polyder(pol) calcula la derivada de un polinomio.

• polyder(p1,p2) calcula la derivada de producto de polinomios.

• polyfit(x,y,n) calcula los coeficientes de un polinomio p(x) de grado n que


se ajusta a los datos p(x(i)) ∼= y(i) minimizando el error cuadrático medio
cometido en el ajuste.

MATLAB es un programa especializado en cálculo numérico y dispone de funcio-


nes que permiten calcular el tiempo empleado en las operaciones realizadas. Algunas
de estas funciones son las siguientes:

• cputime devuelve el tiempo de CPU (con precisión de centésimas de segundo)


desde que el programa arrancó. Llamando antes y después de realizar una
operación y restando los valores devueltos se puede saber el tiempo de CPU
empleado en esa operación.

• etime(t2, t1) tiempo transcurrido entre los vectores t1 y t2 obtenidos como


respuesta al comando clock .

• tic ops toc imprime el tiempo en segundos requerido por ops. El comando
tic pone el reloj a cero y toc obtiene el tiempo transcurrido.

Otras funciones permiten calcular el número de operaciones de coma flotante


realizadas: flops(0) que inicializa a cero el contador de número de operaciones
aritméticas de punto flotante (flops); la instrucción flops devuelve el número de
flops realizados hasta ese momento.
Relacionado con esta estimación de tiempo de cálculo se encuentra profiler ,
utilidad que permite saber qué tiempo de cálculo se ha gastado en cada lı́nea de
una función definida en un fichero *.m o en general de un programa de MATLAB.
Permite asimismo determinar el número de llamadas a dicha función, funciones que
la han llamado, funciones llamadas por ella (child functions), etc. Esta utilidad
mejora la calidad de los programas, pues permite detectar los “cuellos de botella”
de una aplicación y concentrar en ellos los esfuerzos para mejorar su eficiencia. Por
ejemplo, sabiendo el número de veces que se llama a una función y el tiempo que
cuesta cada llamada, se puede decidir si es mejor emplear más memoria en guardar
resultados intermedios para no tener que calcular varias veces lo mismo.
48 Capı́tulo 1. Introducción al Matlab

Una forma de llamar al profiler podrı́a ser la siguiente (se supone que estas
lı́neas forman parte de un fichero *.m):

profile on -detail operator;


[T, Y] = ode113( ’RTDyn2m’, tspan, y0, myOptions);
profile report;

Con la primera lı́nea se activa el profiler a la vez que se define el grado de


detalle que se desea. La segunda lı́nea es una llamada a la función ode113 que a su
vez llama a muchas otras funciones y la tercera lı́nea detiene el profiler y le pide
que genere un informe en HTML con los resultados calculados. Existen tres posibles
grados de detalle respecto a la información que se le pide al profiler:

• mmex determina el tiempo utilizado por funciones y sub-funciones definidas


en ficheros ∗.my *.mex. Ésta es la opción por defecto.

• builtin como el anterior pero incluyendo las funciones intrı́nsecas de MATLAB.

• operator como builtin pero incluyendo también el tiempo empleado por los
operadores tales como la suma + y el producto *.

Otros posibles comandos relacionados con el profiler de MATLAB son los siguien-
tes:

• profile on activa el profiler poniendo a cero los contadores.

• profile on –detail level como el anterior, pero con el grado de detalle indicado.

• profile on –history activa el profiler guardando información sobre el orden de


las llamadas.

• profile off desactiva el profiler sin poner a cero los contadores.

• profile resume vuelve a activar el profiler sin poner a cero los contadores.

• profile clear pone a cero los contadores.

• profile report detiene el profiler, genera páginas HTML con los resultados y
los muestra en un explorador e Internet.

• profile report basename genera un informe consistente en varios ficheros


HTML en el directorio actual; los nombre de los ficheros están basados en el
nombre basename, que debe darse sin extensión.
1.8 Otras caracterı́sticas de Matlab 49

• profile plot detiene el profiler y representa, gráficamente, los resultados en un


diagrama de barras correspondientes a las funciones más usadas

• profile status muestra una estructura conteniendo los datos del profile.

• stats = profile(‘info’) detiene el profiler y muestra una estructura con los


resultados.

Destacar que esta utilidad sólo se puede aplicar a funciones no a ficheros de


comandos.
A través de MATLAB podemos acceder al sistema operativo; ası́ estando en
la ventana de comandos de MATLAB, se pueden ejecutar comandos de MS-DOS
precediéndolos por el carácter (!) . Por ejemplo ! edit programa.m abrirı́a el editor
asociado al fichero programa.m. Si el comando va seguido por el carácter & el
comando se ejecuta en “background”, es decir, se recupera el control del programa sin
esperar que el comando termine de ejecutarse. Además existe también la posibilidad
de arrancar una aplicación y dejarla iconizada. Esto se hace postponiendo el carácter
barra vertical isando el carácter |
Algunos comandos de MATLAB realizan la misma función que los comandos
análogos del sistema operativo MS-DOS, con lo que se puede evitar utilizar el ope-
rador (!). Algunos de estos comandos son los siguientes:

• dir contenido del directorio actual.

• what ficheros *.m en el directorio actual.

• delete filename borra el fichero llamado filename.

• mkdir(nd) crea un sub-directorio con el nombre nd.

• copyfile(sc, dst) copia el fichero sc en el fichero dst.

• type file.txt imprime por la pantalla el contenido del fichero de texto file.txt

• cd cambiar de directorio activo.

• pwd muestra el camino del directorio actual.

• which func localiza una función llamada func.

• lookfor palabra busca palabra en las primeras lı́neas de los ficheros ∗.m.

Finalizamos este rápido repaso a MATLAB con las funciones evalc, feval y
evalin. Estas funciones tienen mucho que ver con las cadenas de caracteres ya que
necesitan la flexibilidad de éstas para alcanzar todas sus posibilidades.
50 Capı́tulo 1. Introducción al Matlab

La función eval(’cadena de caracteres’) hace que se evalúe como expresión de


MATLAB el texto contenido entre las comillas como argumento de la función. Es-
te texto puede ser un comando, una fórmula matemática o, en general, cualquier
expresión válida de MATLAB. La función eval debe tener los valores de retorno
necesarios para recoger los resultados de la expresión evaluada. Con esta instrucción
se pueden definir macros. El siguiente ejemplo va creando variables llamadas A1,
A2, ..., A10 utilizando la posibilidad de concatenar cadenas antes de pasárselas
como argumento a la función eval:

for n = 1:10
eval([’A’,num2str(n),’ = magic(n)’])
end

La función eval() se puede usar también en la forma eval(’tryString’, ’catchS-


tring’ ). En este caso se evalúa la cadena ’tryString ’, y si se produce algún error
se evalúa la cadena ’catchString ’.
La función T=evalc() es similar a eval() pero con la diferencia de que cualquier
salida que la expresión pasada como argumento hubiera enviado a la ventana de
comandos de MATLAB es capturada y almacenada en una matriz de caracteres T
cuyas filas terminan con el carácter ’\n’.
Por su parte la función feval sirve para evaluar, dentro de una función, otra
función cuyo nombre está contenido en una cadena de caracteres. Es posible que
este nombre se haya leı́do desde teclado o se haya recibido como argumento. A
la función feval hay que pasarle como argumentos tanto el nombre de la función a
evaluar como sus argumentos. Por ejemplo, si dentro de una función se quiere evaluar
la función calcular(A, b, c), donde el nombre calcular se envı́a como argumento
en la cadena nombr e, entonces feval(nombre, A, b, c) equivale a calcular(A,
b, c).
Finalmente, la función evalin(ws, ’expresion’) evalúa ’expresion’ en el espacio
de trabajo ws. Los dos posibles valores para ws son ’caller’ y ’base’, que indican
el espacio de trabajo de la función que llama a evalin o el espacio de trabajo base.
Los valores de retorno se pueden recoger del modo habitual.
Capı́tulo 2

Introducción a los Sistemas


Continuos de Control

E STE primer tema se centra en los conceptos, técnicas y métodos de diseño fun-
damentales de la Teorı́a de Control Continuo. La organización del tema es como
sigue. En primer lugar revisaremos los conceptos más útiles de la Teorı́a de Control,
para pasar después a analizar los modelos y sus respuestas. En la tercera parte del
tema se estudian los principios de la realimentación. El tema finaliza analizando los
métodos clásicos de diseño de controladores (mediante el Lugar de las Raı́ces y la
Respuesta en Frecuencia).

2.1 Perspectiva histórica y definiciones


Desde el punto de vista de la Teorı́a de Control clásica podemos definir varios
conceptos y evolución temporal reseñables:

• Sistemas Automáticos de Control. “Son dispositivos que acoplados a un


proceso tratan de conseguir que alguna magnitud del mismo varı́e en el trans-
curso del tiempo de alguna forma impuesta voluntariamente de forma externa.”
Ver Figs. 2.1 y 2.2.

• Realimentación. Según Nobert Wiener, “realimentación es un método de


controlar un sistema, insertando en él los resultados del comportamiento ante-
rior”

• Realimentación (y II). Un elemento esencial de todos los mecanismos de


control automático es el principio de realimentación, que permite al diseñador
dotar a una máquina de capacidad de autocorrección. Un ciclo o bucle de
realimentación es un dispositivo mecánico, neumático o electrónico que detecta
• Overhead sheets.
• Control systems
• Software for Matlab/Simulink: demos and examples.

• Assignments.

Everything available at http://lcewww.et.tudelft.nl/˜discfuzz

Robert Babuška Control Engineering Laboratory, ITS, TU Delft 5 Robert Babuška Control Engineering Laboratory, ITS, TU

Course Material 52 Prerequisites,ón


Capı́tulo 2. Introducci Background KnowledgeContinuos de Control
a los Sistemas
Robert Babuška. Fuzzy and Neural • Mathematical analysis Process Classical Control De

• Linear algebra d
Goal (reference) Distu
ts.
• Control systems
Matlab/Simulink: demos and examples. u y u
Proceso Controller Pr

y : variable a controlar (salida)


Synthesis
ble at http://lcewww.et.tudelft.nl/˜discfuzz u : variable a manipular (entrada de control)
d : ruido (entrada no controlable) Mathematical
model
Control Engineering Laboratory, ITS, TU Delft 5 Robert Babuška Control Engineering Laboratory, ITS, TU Delft 6

Process Figura 2.1: Idealización


Classical
Robert Babuška de proceso.
Control Design Control Engineering Laboratory, ITS, TU Delft 7 Robert Babuška Control Engineering Laboratory, ITS, TU

d
Objetivo (referencia) Señales de ruido

u y u y
Process Controlador Proceso

e controlled (output)
Síntesis Modelización
variable (control input)
(input that cannot be influenced) Modelo
Matemático

Control Engineering Laboratory, ITS, TU Delft 7 Robert Babuška Control Engineering Laboratory, ITS, TU Delft 8

Figura 2.2: Idealización del control de procesos.

una magnitud fı́sica como una temperatura, un tamaño o una velocidad, la


compara con una norma preestablecida, y realiza aquella acción preprogramada
necesaria para mantener la cantidad medida dentro de los lı́mites de la norma
aceptable.
El principio de realimentación se utiliza desde hace varios siglos. Un notable
ejemplo es el regulador de bolas inventado en 1788 por el ingeniero escocés
James Watt para controlar la velocidad de la máquina de vapor. El conocido
termostato doméstico es otro ejemplo de dispositivo de realimentación. En
la fabricación y en la producción, los ciclos de realimentación requieren la
determinación de lı́mites aceptables para que el proceso pueda efectuarse; que
estas caracterı́sticas fı́sicas sean medidas y comparadas con el conjunto de
lı́mites, y que el sistema de realimentación sea capaz de corregir el proceso
para que los elementos medidos cumplan la norma. Mediante los dispositivos
de realimentación las máquinas pueden ponerse en marcha, pararse, acelerar,
disminuir su velocidad, contar, inspeccionar, comprobar, comparar y medir.
Estas operaciones suelen aplicarse a una amplia variedad de operaciones de
producción, por ejemplo el fresado, el embotellado y el refinado.

• Servomecanismo En ingenierı́a, dispositivo o conjunto de ellos que permite


la automatización del control de un mecanismo o de una fuente de energı́a.
2.1 Perspectiva histórica y definiciones 53

Los servomecanismos pueden ser mecánicos, eléctricos, hidráulicos y ópticos.


Su caracterı́stica principal es que se activa por la llamada señal de error, que
viene determinada por la diferencia entre la señal establecida como salida para
una determinada señal de entrada y la señal de salida real. Esta señal de error
se envı́a a la entrada para compensar ese error, de forma que el mecanismo
se autorregula. Esta técnica se llama realimentación. La dirección de los
automóviles es un ejemplo de servomecanismo. La orientación de las ruedas
delanteras se controla mediante el giro del volante. Cuando soltamos el volante,
un servomecanismo, que en este caso es un sistema hidráulico y mecánico,
obliga a las ruedas a volver a la posición normal.

• A.I.E.E., American Institute of Electrical Engineers. “Sistema de con-


trol en lazo cerrado es aquél que tiende a mantener una relación prevista e
impuesta de forma externa (por nosotros) entre una variable del proceso, la
salida, y otra, la referencia, comparando funciones de estas variables y usando
la diferencia como medio de control”.

• Routh, 1877. En este año, Routh formula su criterio algebráico de estabilidad


de un sistema. Es el punto de partida de la Teorı́a Clásica de Control.

• Aplicaciones. Sus trabajos abren un campo enorme de aplicaciones. Bode,


Nyquist y Black trabajan en la descripción de amplificadores realimentados
mediante técnicas de respuesta en frecuencia.

• Laplace y Fourier. La utilización de la representación en el campo complejo,


el uso del cálculo operacional desarrollado en el S. XIX por Heaviside y de las
Transformadas de Laplace y Fourier originan una sólida base para el Control
Clásico.

• Black, 1932. Abre el camino mediante las representaciones gráficas en el


plano complejo.

• Nyquist, 1932. Enuncia el Criterio de Estabilidad, herramienta muy útil


para el estudio de la estabilidad de los sistemas realimentados.

• Ziegler y Nichols, 1942. Proponen fórmulas de ajuste de los reguladores


basadas en la respuesta temporal.

• Evans, 1948. Presenta la Teorı́a de las Raı́ces que es la base del diseño de
compensadores mediante el Método del Lugar de las Raı́ces.

• Teorı́a Moderna del Control. Con la aparición de la “Tranformada Z” se


extiende la Teorı́a Clásica de Control al tratamiento digital de señales. La
54 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Teorı́a Moderna de Control se conoce también como la Teorı́a de Control Dis-


creto o de Control Digital.

• Operador Retardo, z −1 . La definición en el Plano-Z del retardo temporal


hace evolucionar la Teorı́a de Control al Análisis Temporal.

• Kalman, 1960. Resuelve el problema general de optimización tal y como se


plantea en la Teorı́a Moderna de Control.

• Situación Actual. Los métodos de diseño según la Teorı́a de Control han


tenido un notable éxito en el campo aeronáutico, pero su aplicación al campo
industrial no tuvo la acogida esperada, como consecuencia de la dificultad de
disponer de modelos precisos de los sistemas a controlar.
Este problema, impulsó en los 70 el desarrollo de métodos de identificación
de los parámetros de un proceso y metodologı́as para el diseño de sistemas
multivariantes, con un enfoque clásico similar al monovariable. En la última
década se han desarrollado nuevas ramas del control, y de gran importancia
para la aplicación industrial, como el Control Adaptativo, el Control Robusto,
el Control Difuso o el Control Neuronal. En las Figs. ?? y ?? se muestran
ejemplos de esquemas de control neuronal y adaptativo, respectivamente.

Figura 2.3: Esquema de control mediante redes neuronales. Para controlar una planta mediante
un controlador se ajusta su actuación mediante la señal de error que comete la planta.

El estudio de la combinación estimación/adaptación, con los problemas de


convergencia que esto supone es un tema de actualidad resuelto en los casos
de hipótesis más restrictivas. En particular, se han acuñado algunos términos
relacionados con el Control que intentan identificar cada una de las parcelas
en que se desenvuelve su estudio.

• Control Robusto. Trata de encontrar las condiciones que garanticen la es-


tabilidad del bucle cerrado bajo perturbacioens genéricas o incertidumbre del
modelo.

• Control Predictivo. Basados en la minimización de un ı́ndice cuadrático


que pondera, entre otros, el conocimiento que se tiene sobre el comportamien-
2.1 Perspectiva histórica y definiciones 55

Figura 2.4: Esquema de control adaptativo. El regulador se va adaptando a partir de las salidas
que proporciona un estimador de la actuación de la planta cuya actuación se va controlando
mediante el mismo controlador. Se trata de un proceso adaptativo o iterativo.

to deseado del proceso en el futuro (horizonte de predicción), con el fin de


compensar el mismo con antelación.

• Control Supervisado. Basado en la vigilancia de las condiciones que deben


cumplir los bucles adaptativos para su buen funcionamiento.

• Control Experto. Nace este término en (Astrom, Anton y Arzen, 1986)


donde se introducen técnicas de I.A. y, más concretamente, Sistemas Expertos
para el control de procesos.

• Control Borroso. Podrı́an considerarse integrados en el grupo anterior, pues-


to que los mismos incorporan algún tipo de reglas de razonamiento atribuibles
a los Sistemas Expertos, si bien con el término Control Borroso, se quiere des-
tacar que el control surge de la elaboración de la información suministrada
por el proceso, pero desde la óptica del operador experto mediante conceptos
heurı́sticos y con la inevitable presencia de incertidumbre en su contenido. La
Teorı́a de Conjuntos Borrosos es la base de estos controladores.

• Control Neuronal. Está basado en otra técnica de la I.A., las redes neuro-
nales, y presentan grandes ventajas por tratarse de elementos de procesado no
lineal en los que no es necesaria ninguna asunción sobre las señales adquiridas
o sobre el sistema a modelar.

• Teorı́a General de Sistemas. Bertalanffy la define como “la disciplina


que trata sobre las propiedades generales y leyes de los Sistemas sometidos a
acciones de control mediante un sistema basado en ordenador”. En ocasiones
se habla de Informática de Control.

• Cibernética. Según N. Wiener (1961) se trata de la ciencia dedicada al es-


tudio de los métodos de comunicación, control y autoorganización comunes a
56 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

máquinas y organismos vivos”.

• Automática. Se define como “la ciencia que estudia a los sistemas cibernéticos
en los que ha sido introducido conscientemente algún elemento que realiza fun-
ciones de control”.

• Señal. Se define como una “magnitud fı́sica que lleva una información”.

• Estacionariedad. Una serie temporal o secuencia de datos se denomina es-


tacionaria cuando la media y la varianza se mantiene constante en el tiempo.

• Sistema. Se puede definir como un “elemento que transforma información’.

• Informática. “Ciencia que estudia el tratamiento de la información”.

• Modelización en el Espacio de Estados. Los modelos de espacio de estados


son representaciones matriciales para series temporales univariantes y multi-
variantes. Muchos modelos de series temporales se pueden escribir en forma
de “ecuaciones de estados”. Hay algunos métodos de predicción que emplean
directamente estos modelos. Los cálculos se realizan empleando Ecuaciones
Recursivas de Kalman o Filtros de Kalman por lo que se llaman también Mo-
delos de Kalman.

• Filtro de Kalman. La ventaja fundamental de especificar un modelo en el


espacio de estados es la utilización de diversos algoritmos para la estimación de
sus parámetros, obtención de predicciones, etc. El núcleo de estos algoritmos
es el filtro de Kalman. Con él se obtienen estimaciones óptimas del vector de
estado con la información disponible hasta ese momento.

• Identificación. Etapa en la construcción del modelo de predicción/regresión


donde se intenta elegir a través de datos estadı́sticos el mejor modelo para un
sistema.

2.1.1 Objetivos de los Sistemas de Control


Los principales objetivos de un sistema de control son:

• Estabilizar el sistema ante perturbaciones.

• Hacer que el sistema evoluciones en el tiempo con arreglo a unas determinadas


especificaciones.

• Conseguir el comportamiento dinámicos óptimo con respecto a algún ı́ndice de


calidad.
2.1 Perspectiva histórica y definiciones 57

2.1.2 Clasificación de los Sistemas de Control


Podemos dividir los sistemas atendiendo a:

• Ecuación diferencial que lo define:

– Sistemas de parámetros concentrados.


– Sistemas de parámetros distribuidos.
– Sistemas lineales: invariante o variante temporal.
– Sistemas no lineales.

• Señales que maneja:

– Sistemas de entrada y salida únicas (SISO).


– Sistemas multivariable (MIMO).
– Sistemas de tiempo continuo.
– Sistemas de tiempo discreto.
– Sistemas de control determinista.
– Sistemas de control estocástico.

En la siguiente sección analizamos en mayor profundidad los conceptos de sistema


y modelo.

2.1.3 Sistemas y modelos


La creación de modelos a partir de observaciones ası́ como el estudio de sus
propiedades es, en definitiva, de lo que trata la ciencia. Los modelos (“hipótesis”,
“leyes naturales”, “paradigmas”, etc.) pueden tener un carácter más o menos for-
mal, aunque siempre contendrán una caracterı́stica básica: tratarán de enlazar las
observaciones, generadas u obtenidas de algún sistema fı́sico, mediante un patrón
de comportamiento. La identificación de sistemas trata de las técnicas matemáticas
empleadas en la construcción de modelos de sistemas dinámicos basados en los datos
que éstos generan (Ljung, 1999). Veamos qué son los sistemas dinámicos, cómo se
puede definir un modelo y la diferencia entre un modelo y un sistema.

Sistemas dinámicos

Un sistema se define como un objeto en el que variables de distintos tipos inte-


raccionan entre sı́ para dar lugar a una o varias salidas, también llamadas señales
observables. El sistema también se puede ver afectado por estı́mulos externos que
pueden ser manipulados por el observador y que se llaman entradas. Otro tipo de
58 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

señales son las denominadas perturbaciones, que pueden dividirse en aquellas que
son medibles directamente y aquellas que sólo pueden ser observadas a través de su
influencia sobre la salida y que son a menudo conocidas como ruido. La diferencia
entre las entradas y las perturbaciones medidas es, a menudo, de menor importancia
para el proceso de modelización de un sistema (Ljung, 1999) (ver Fig. 2.5).

(a)
v

w
y
u

v: viento, temperatura exterior (b)

w: radiación solar
y: temperatura
u: velocidad almacenada
del ventilador

Figura 2.5: (a) Representación gráfica de un sistema con una salida y, una entrada u, una
perturbación medida w y una no mensurable v. (b) Ejemplo de sistema. Panel solar de una casa:
u entrada, I es la perturbación medida, y es la salida, v son las perturbaciones no mensurables.

Se dice que un sistema es dinámico si su salida actual no sólo depende de las


entradas o estı́mulos externos sino de sus valores anteriores. Las salidas de un siste-
ma dinámico cuyos estı́mulos externos no son observables se denominan a menudo
series temporales. Las series temporales son la representación matemática de un
sistema fı́sico con carácter dinámico y, por tanto, su modelización, caracterización y
predicción ha captado el interés de la comunidad cientı́fica. Ası́, el escenario de la
predicción en series temporales se centra en estimar valores futuros a corto o medio
plazo de una serie de sucesos a partir de los valores anteriores mediante alguna fun-
ción que relacione dichos valores (Ungar, 1995). En cambio, se habla de modelizar
cuando se trata de encontrar una descripción a largo plazo del comportamiento del
sistema y por tanto, se persigue un modelo que defina en todo momento el compor-
tamiento del sistema que generó la serie temporal. Nos referimos a caracterizar un
sistema cuando la tarea consiste en determinar las propiedades fundamentales del
sistema como puede ser el carácter caótico de la serie o su componente autoregresiva.
En todos los casos el interés está en formular modelos matemáticos que describan la
realidad fı́sica.
2.1 Perspectiva histórica y definiciones 59

Modelos de sistemas

Una vez revisada la naturaleza de los sistemas dinámicos, veamos qué es un


modelo, cómo se construyen y sus limitaciones.
Tipos de modelos y su uso
Cuando se interacciona con un sistema, se necesita contar con alguna idea sobre
cómo sus variables se relacionan entre sı́. Esa relación que asumimos que existe,
la llamaremos modelo de un sistema. Los modelos pueden especificarse de distin-
tas maneras, formas, descripciones y con gran variedad de grados de formalismo
matemático. Podemos definir distintos tipos de modelos:

• Modelos mentales. No implican ningún tipo de formalismo matemático. Por


ejemplo, el acto de aparcar un coche implica que gran cantidad de información
sea almacenada, procesada y ponderada en el cerebro. Su adaptabilidad al
medio hace que este modelo sea altamente complejo desde un punto de vista
matemático.

• Modelos gráficos. Para determinados sistemas resulta apropiado describir


sus propiedades mediante gráficas y/o tablas. Los sistemas lineales, por ejem-
plo, se pueden representar mediante su respuesta impusional o frecuencial (ver
Fig. 2.6 y 2.7). Las caracterı́sticas no lineales de, por ejemplo, un diodo, hacen
que el sistema pueda ser descrito eficientemente por un modelo gráfico.
Salida
6.5

5.5

4.5

3.5
16 17 18 19 20 21 22 23 24

Entrada
7
6.5
6
5.5
5
4.5
4
3.5

16 17 18 19 20 21 22 23 24

Figura 2.6: Respuestas de entrada y salida de un determinado sistema.

• Modelos matemáticos o analı́ticos. Para aplicaciones más avanzadas pue-


de resultar ventajoso la descripción de los sistemas en forma de expresiones
matemáticas que describan las relaciones entre sus variables. El uso de este
tipo de modelos es tı́pico en el campo de las matemáticas, fı́sica e ingenierı́a, y
tienen la ventaja de poder ser trasladados a una representación gráfica senci-
llamente. Se emplean para la simulación y predicción del comportamiento de
60 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Estimación de la Respuesta Impulsional


0.14

0.12

0.1

0.08

0.06

0.04

0.02

−0.02

−0.04

−0.06
0 2 4 6 8 10 12 14 16 18 20
lags

Figura 2.7: Respuesta impulsional de un sistema.

sistemas en áreas como la economı́a, ecologı́a, medicina, farmacia o biologı́a.


Los modelos matemáticos se pueden caracterizar de distintas maneras (contı́nuos
o discretos en el tiempo, en bloque o distribuidos, deterministas o estocásticos,
lineales o no lineales, etc.) que simbolizan el tipo de relación existente entre las
variables. Una clasificación general divide los modelos matemáticos en duros y
blandos o difusos, atendiendo a si se expresan con variables o valores numéricos
o linguı́sticos respectivamente.

Nuestro trabajo se centrará en los modelos matemáticos, también conocidos como


modelos cuantitativos o empı́ricos.
Construcción de modelos
Básicamente, un modelo se debe construir a partir de la información disponible
sobre el problema, la tarea o sistema a modelar. El modelo mental de “aparcar un
coche” se debe desarrollar a partir de la experiencia en la conducción. Los modelos
gráficos se deben construir a partir de distintas medidas. Los modelos matemáticos,
los que nos ocupan, se pueden desarrollar mediante dos vı́as (o una combinación de
ellas):

• Modelización analı́tica o fı́sica. Una forma consiste en dividir el siste-


ma en varios subsistemas cuyas propiedades son bien conocidas a partir de
cierta experiencia previa. Este punto de vista no implica necesariamente una
experimentación en los sistemas actuales y depende en gran medida de la apli-
cación. Intentan determinar en primer lugar los fenómenos (fı́sicos) relevantes
al problema y describir la interacción de sus componentes (subsistemas). La
segunda etapa se centra en una descripción formal de las estructuras y compo-
nentes dando como resultado un sistema fı́sico idealizado. La tercera etapa o
análisis del sistema se centra en la manipulación del sistema, su análisis cuali-
2.2 Modelos dinámicos y respuesta dinámica. 61

tativo y experimental (simulación). Por último, el modelo debe ser corregido,


simplificado y validado con datos empı́ricos.

• Modelización experimental. El otro punto de vista se basa directamente


en la experimentación. Las señales de entrada y salida del sistema son anali-
zadas para inferir un determinado modelo. Esta vı́a de actuación se denomina
normalmente identificación de sistemas. Distinguimos dos tipos fundamentales
de modelos experimentales: los paramétricos y los no paramétricos. Se deno-
minan modelos paramétricos aquellos que hacen alguna asunción acerca de la
distribución estadı́stica de las muestras observadas (por ejemplo, asumiendo
distribución Gaussiana) y el problema se reduce a estimar los parámetros de
esas distribuciones (medias y varianzas en el caso de Gaussianas). Los modelos
no paramétricos únicamente asumen la representatividad del conjunto original
de las muestras, lo cual es una premisa imprescindible en todo modelo. El pro-
ceso de identificación de un sistema, al igual que en la modelización fı́sica, debe
finalizar con su validación y revisión mediante el contraste de sus estimaciones
con datos ajenos a los de su construcción.

2.2 Modelos dinámicos y respuesta dinámica.


2.2.1 Principios básicos de la realimentación
El objetivo del control retroalimentado es utilizar el principio de retroalimenta-
ción para conseguir que la salida de un sistema dinámico, como el eje de un motor
eléctrico o el vector velocidad de un aeroplano, tomen los valores deseados a pesar de
fuerzas perturbadoras externas o cambios de parámetros internos. La modelización
de sistemas complejos es difı́cil, de alto costo y lenta, especialmente si se incluyen
pasos importantes de verificación experimental (bucle de identificación).
La metodologı́a para tratar cualquier sistema consiste en:

• Obtener el modelo. La forma habitual es epecificarlo en forma de ecuaciones


dinámicas (ecuaciones diferenciales ordinarias).

• Resolver el modelo. La resolución resulta, sin embargo, difı́cil ya que se


obtienen sistemas de alto orden, variante temporales y en la mayorı́a de los
casos reales con relaciones no lineales entre las variables.

A pesar de los problemas de los modelos reales, en control es importante mantener


el sistema en un punto de equilibrio y podemos considerar la respuesta del sistema
a señales pequeñas en torno a este equilibrio. De aquı́ que podamos aproximar el
comportamiento no lineal por un modelo lineal para valores pequeños alrededor de
este punto de equilibrio (expansión en series de Taylor).
62 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Revisemos algunos conceptos básicos sobre la dinámica de sistemas o “ecuaciones


del movimiento” mediante algunos ejemplos:

Figura 2.8: Sistema mecánico.

En la Tabla 2.2.1 mostramos la relación de analogı́as entre las variables fı́sicas


ası́ como algunas implementaciones de sistemas de control.

Tabla 2.1: Relación de analogı́as entre las variables fı́sicas ası́ como algunas implementaciones
de sistemas de control
Eléctrico Térmico Hidráulico Desplazamiento Rotación
Corriente Flujo de calor Flujo de fluido Fuerza Par
Voltaje Temperatura Precisión Velocidad Velocidad an-
gular
Resistencia Coeficiente de Resistencia Rozamiento Rozamiento
transmisión
Inductancia — Inercia Muelle Muelle
Capacidad Capacidad Compresión Masa Momento de
térmica inercia
2.2 Modelos dinámicos y respuesta dinámica. 63

Figura 2.9: Sistemas rotores o rotacionales. Satélite

2.2.2 Respuesta dinámica


Hemos visto que los modelos de componentes dinámicas se pueden controlar
mediante una ecuación diferencial ordinaria o un conjunto de éstas. Además, cerca
del equilibrio, las ecuaciones están bien aproximadas como lineales e invariables en
el tiempo.
Una vez obtenidas estas ecuaciones hay que encontrar sus soluciones y además
analizarlas de modo que no sólo sea posible visualizar la respuesta dinámica si no
que también sea posible modificar la respuesta del sistema hacia una dirección desea-
da. Cabe saber que una solución tendrá unas determinadas caracterı́sticas: tiempo
de elevación transitorio, exceso del valor final, duración del transitorio, tiempo de
estabilización, etc.
Para el estudio de la respuesta dinámica existen tres marcos o formatos:

• Plano s. La transformada de Laplace y el estudio de los polos–ceros pro-


porciona las bases fundamentales para el estudio de los sistemas continuos de
control.

• Respuesta en frecuencia. Se estudia la magnitud y fase de esta respuesta


en función de la frecuencia.

• Espacio de Estados. Se trata de, a grandes rasgos, emplear pares de ecua-


ciones recursivamente enlazadas: una para modelar la salida del sistema y otra
para modelar su evolución. Se describe ası́ el comportamiento de una o más
salidas del sistema en función de varias variables internas del mismo (variables
de estado), y de un conjunto de entradas a éste. El comportamiento del sis-
tema queda determinado recursivamente en dos fases a partir de las entradas:
64 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Figura 2.10: Sistemas rotores o rotacionales. Péndulo.

Figura 2.11: Sistemas rotores o rotacionales. Péndulo invertido.

en la primera fase las entradas determinan las variables de estado del sistema
y en la segunda las variables de estado determinan su salida.

2.2.3 Transformada de Laplace

Este método operacional puede usarse para resolver ecuaciones diferenciales li-
neales. Con su uso muchas funciones sinusoidales, sinusoidales amortiguadas y ex-
ponenciales, se pueden convertir a funciones algebráicas de una variable compleja
s y reemplazar operaciones como la diferenciación y la integración por operaciones
algebráicas en el plano complejo.
Las bases de las técnicas analı́ticas aplicadas a los sistemas lineales e invariables
en el tiempo (SLIT) son:
2.2 Modelos dinámicos y respuesta dinámica. 65

Figura 2.12: Sistemas rotores o rotacionales. Avión.


66 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Figura 2.13: Sistemas eléctricos.


2.2 Modelos dinámicos y respuesta dinámica. 67

Figura 2.14: Sistemas electro-mecánicos.

1. Superposición. Respuesta de sistemas lineales.

2. Convolución. La respuesta del sistema es la convolución de la entrada con la


respuesta a la entrada impulso.
La Transformada de cualquier función f (t) transformable de Laplace, se puede
obtener fácilmente multiplicando f (t) por e−st e integrando el producto desde t = 0
hasta t = ∞. Ası́ pues, la T. de Laplace la definimos como:
Z +∞
F (s) = f (t)e−st dt (2.1)
−∞
R +∞
Aplicándolo a y(t) = −∞ u(t − τ )h(τ )dτ = u(t) ∗ h(t), tendremos Y (s) = H(s) ·
U (s).

Ejemplos de Transformada de Laplace

• Función escalón. f (t) = u(1) = ∞(t)


Z +∞ Z +∞
1
F (s) = u(1)e−st dt = 1e−st dt = (2.2)
0 0 s
• Función rampa. f (t) = tu(1) = t1(t)
Z +∞ Z +∞
1
F (s) = u(1)e−st dt = te−st dt = (2.3)
0 0 s2
• Función impulso unitario. f (t) = δ(t)

Z +∞ Z +∞ Z 0+
−st −st
F (s) = u(1)e dt = δ(t)e dt = δ(t)dt = 1 (2.4)
0 0 0−
68 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Figura 2.15: Sistemas Flujo de calor.

• Función exponencial decreciente. f (t) = e−αt

Z +∞ Z +∞
1
F (s) = u(1)e−st dt = e−αt e−st dt = (2.5)
0 0 s+α

• Función sinusoidal. f (t) = sin(ωt)

Z +∞ Z +∞
−st ω
F (s) = u(1)e dt = sin(ωt)e−st dt = · · · = (2.6)
0 0 s2 + ω2

Propiedades de la Transformada de Laplace

Las principales propiedades de la Transformada de Laplace son las siguientes:

• Superposición.

L[αf1 (t) + βf2 (t)] = αL[f1 (t)] + βL[f2 (t)] (2.7)

De esta propiedad se deriva esta otra, conocida por escalamiento:

L[αf (t)] = αL[f (t)] (2.8)


2.2 Modelos dinámicos y respuesta dinámica. 69

Figura 2.16: Sistemas de compresión de fluidos.

• Retardo temporal.

L[αf (t)] = F (s) (2.9)

L[f (t − λ)] = e−λs · F (s), λ > 0, f (t) = 0, ∀t < 0 (2.10)

• Escalamiento temporal.

1 s
L[f (αt)] = F (2.11)
|α| a

• Retardo en frecuencia.

L[e−αt f (t)] = F (s + α) (2.12)

• Diferenciación.
 
d
L f (t) = sF (s) − f (o− ) (2.13)
dt

• Integración real.

Z t 
F (s)
L f (τ )dτ = (2.14)
o s
70 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

• Convolución.

L[f1 (t) ∗ f2 (t)] = F1 (s)F2 (s) (2.15)

• Integración compleja.

  Z ∞
f (t)
L = F (s)ds (2.16)
t s

• Derivación compleja (multiplicación temporal).

d
L[tf (t)] = − F (s) (2.17)
ds

En la Tabla 2.17 se muestran algunas Transformadas de Laplace útiles.

f(t) L[ f(t) ]
1  (t)
1
s 1(t)
1
s2 t
1
s+a e at
1
(s+a)2
te at
a
s2 +a2 sin at
s
s2 +a2 cos at
s+a e at cos at
(s+a)2 +b2

Figura 2.17: Algunas Transformadas estándar de Laplace.

Ejercicios propuestos

1. Considerando f1 (t) = e−t y f2 (t/5) = e−0.2t . Hallar las Transformadas de


Laplace F1 y F2 .

2. Sea el sistema en el plano s:

1
L[f (t)] = F (s) = , (2.18)
s(s2 + s + 1)
2.2 Modelos dinámicos y respuesta dinámica. 71

3. A partir de:
(s + 2)(s + 4)
Y (s) = , (2.19)
s(s + 1)(s + 3)
encontrar y(t).

4. A partir de:
(s + 3)
F (s) = , (2.20)
(s + 1)(s + 2)
encontrar f (t).

5. Encontrar la ganancia DC de:

3(s + 2)
G(s) = , (2.21)
s2 + 2s + 10

6. Encontrar la solución de la ecuación diferencial:

ÿ(t) + y(t) = 0; y(0) = α, ẏ(0) = β. (2.22)

7. Encontrar la solución de la ecuación diferencial:

ÿ(t) + 5ẏ(t) + 4y(t) = u(t); y(0) = 0, ẏ(0) = 0, u(t) = 2e−2t 1(t) (2.23)

Transformada Inversa de Laplace (TIL)

El proceso matemático de pasar de la expresión en variable compleja a la de


función temporal se denomina transformación inversa. Notación: L−1 , L−1 [F (s)] =
f (t).
Matemáticamente se hallan ası́:
Z c+j∞
1
f (t) = F (s)est ds, t>0 (2.24)
2πj c−j∞

Este proceso es complejo, por lo que usamos las tablas o en su defecto la expansión
en fracciones simples para que, al escribir F(s) en términos de funciones simples de
s, se pueden reconocer las transformadas inversas de Laplace. De hecho, en los
problemas de Teorı́a de Control, F(s) tiene usualmente la forma:

A(s) Πm (s − zi ) b0 sm + b1 sm−1 + ... + bm


F (s) = = k in = n (2.25)
B(s) Πj (s − pj ) s + a1 sn−1 + ... + am
En estos sistemas se cuenta con una condición de realizabilidad fı́sica por la que
se exige que m ≤ n.
72 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Ejemplos sobre la Transformada Inversa de Laplace

Hallar la Transformada Inversa de Laplace de:

1. EJEMPLO 1.

s3 + 5s2 + 9s + 7
F (s) = , (2.26)
(s + 1)(s + 2)

SOLUCIÓN. Como el grado del numerador es mayor que el del denominador,


podemos dividir los dos polinomios y, por tanto, obtenemos:
s+3
F (s) = s + 2 + . (2.27)
(s + 1)(s + 2)
Consultando las tablas de transformadas, llegamos a la solución:
d
f (t) = δ(t) + 2δ(t) + 2e−t − e−2t . (2.28)
dt
2. EJEMPLO 2.

2s + 12
F (s) = , (2.29)
s2 + 2s + 5
SOLUCIÓN. Como la función F(s) incluye un par de polos complejos conju-
gados (s2 + 2s + 5 = (s + 1 + 2j)(s + 1 − 2j)), es conveniente expandir F(s)
en una suma de una función seno y coseno amortiguadas, y no en fracciones
simples. De este modo:

s2 + 2s + 5 = (s + 1)2 + 22 (2.30)

y teniendo en mente las propiedades siguientes:

ω
L[sin(ωt)e−αt ] = (2.31)
(s + α)2 + ω 2

s+α
L[cos(ωt)e−αt ] = , (2.32)
(s + α)2 + ω 2
podemos decomponer la expresión de la siguiente forma:

10 + 2(s + 1) 2 s+1
F (s) = 2 2
=5 2 2
+2 (2.33)
(s + 1) + 2 (s + 1) + 2 (s + 1)2 + 22

f (t) = L−1 [F (s)] = ... = 5e−t sin(2t) + 2e−t cos(2t), t ≥ 0 (2.34)


2.2 Modelos dinámicos y respuesta dinámica. 73

3. EJEMPLO 3.

s2 + 2s + 3
F (s) = , (2.35)
(s + 1)3

SOLUCIÓN. f (t) = (t2 + 1)e−t

Teoremas adicionales de la Transformada de Laplace

• Teorema del Valor Final.

lim y(t) = lim sY (s). (2.36)


t→∞ t→∞

• Teorema del Valor Inicial.

lim sF (s) = f (0+ ). (2.37)


s→∞

Se propone resolver los siguientes ejercicios:

• EJEMPLO 1. Sea la función:


1
L[f (t)] = F (s) = , (2.38)
s(s + 1)
calcular limt→∞ f (t)

• EJEMPLO 2. Sea el sistema:


3
Y (s) = , (2.39)
s(s − 2)
hallar el valor final de la señal correspondiente a Y(s).
SOLUCIÓN: Si aplicamos el TVF, obtenemos un valor final de -3/2 pero esto
no es cierto ya que el teorema no se puede aplicar al tener un polo en el
semiplano derecho. Si obtenemos la expresión de la señal temporal, obtenemos:
 
−3 3 2t
y(t) = + e 1(t) → ∞, (2.40)
2 2
• EJEMPLO 3. Encontrar el valor inicial de la señal que genera el sistema:
3
G(s) = (2.41)
s(s − 2)

Por último, ilustremos un sistema electro-mecánico real y cómo se especifica en


mediante sus ecuaciones diferenciales y Transformada de Laplace. En la Fig. 2.18
mostramos un ejemplo de sistema fı́sico mediante el análisis de un motor DC. En la
Fig. 2.19 mostramos las ecuaciones diferenciales que definen el sistema y su paso al
plano s mediante la Transformada de Laplace.
9 Robert Babuška Control Engineering Laboratory, ITS, TU Delft 10

74 Example: Physicalón
Capı́tulo 2. Introducci Modeling of aContinuos
a los Sistemas DC Motor de Control

R L

+ T
+
J
V Vb = Kω

-
t) -

di dθ
L + Ri = V − Vb, Vb = Kω = K , T = Ki
dtDC Motor: Differential dt Equations

Figura 2.18: Motor DC.


11 Robert Babuška Control Engineering Laboratory, ITS, TU Delft 12

di(t) dθ(t)
L dt + Ri(t) = V (t) − K dt parte eléctrica

d2θ(t) dθ(t)
J dt2 + b dt = Ki(t) parte mecánica

Transf. Laplace d → s): función de transferencia


( dt

θ(s) K
G(s) = =
V (s) s[(Ls + R)(Js + b) + K 2]

Figura 2.19: Ecuaciones diferenciales y Transformada de Laplace (función de transferencia) del


Sistema del Motor DC.
Robert Babuška Control Engineering Laboratory, ITS, TU Delft 13

2.2.4 Especificaciones en el dominio del tiempo y Transformada de


Laplace
Example: System Identification
Mediante la T. Laplace se pueden describir sistemas de forma muy eficiente y
analizar sus respuestas y caracterı́sticas de manera sencilla. Cabe, sin embargo
Given data set {(u(k), y(k)) | k = 1, 2, . . . , N }:
analizar los conceptos e interrelaciones de estabilidad, polos y ceros de un sistema.
Estos los ilustramos con un ejemplo; si consideramos el sistema:
1. Postulate model structure, e.g.:
2s + 1
F (s) = . (2.42)
ŷ(k s+2 +
1)3s
=+ay(k)
2) + bu(k)

2. de
Los ceros Form
unaregression
función deequations:
transferencia son las raı́ces del numerador, mientras
que los polos son las raı́ces del denominador. En nuestro caso, por tanto, el cero se
y(2) = ay(1) + bu(1)
y(3) = ay(2) + bu(2)
..
y(N ) = ay(N −1) + bu(N −1)

in a matrix form: y = ϕ[a b]T


2.2 Modelos dinámicos y respuesta dinámica. 75

encuentra en -1/2 y los polos en -1 y -2. En la Figura ?? se muestra la notación


(aspas para los polos y cı́rculos para los ceros), posición y expresión en diferencias.

x x o

H (s) =
1 + 3 ; h(t) = e t +e 2t
s+1 s+2

La respuesta del sistema puede ser definida mediante la inspección de la posición


de los polos y ceros. Para que el sistema sea estable, los polos deben estar en el
semiplano izquierdo (LHP, “Left-Half of the s-Plane”). El control de un sistema sin
estabilidad se logra manipulando la posición de los polos y ceros mediante la adición
de otros tipos de sistemas llamados reguladores o compensadores para, de este modo,
conseguir unas determinadas especificaciones.

2.2.5 Sistemas de primer orden, parámetros caracterı́sticos


Los sistemas de primer orden tienen como ecuación diferencial caracterı́stica la
siguiente:
T ẏ(t) + y(t) = Ay(t), y(0) = 0, ẏ(0) = 0, (2.43)

donde hemos supuesto unas determinadas condiciones iniciales que no tienen porqué
cumplirse siempre.
Si aplicamos la transformada de Laplace, obtenemos:

Y (s) A
T sY (s) + Y (s) = AU (s) → H(s) = = , (2.44)
U (s) 1 + Ts

siendo T una constante de tiempo.


Veamos la respuesta de este tipo de sistemas ante distintas entradas:

• Impulso unitario:

A A
U (s) = 1 → Y (s) = → y(t) = L−1 [Y (s)] = e−t/T , t > 0 (2.45)
1 + Ts T
76 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Por tanto se trata de una caı́da exponencial donde T simboliza el tiempo que
tarda en reducirse la salida en e−1 = 0.368 de su valor inicial. Si T > 0 tenemos
un polo p1 = −1/T < 0, por lo que y(t) es decreciente y el sistema es estable.

• Entrada rampa unitaria:


Como la T. Laplace de la función rampa unitaria es 1/s2 , la salida del sistema
es:
A 1
Y (s) = (2.46)
1 + T s s2
Al expandir Y(s) en fracciones simples se obtiene:

1 T T2
Y (s) = − + , (2.47)
s2 s 1 + sT
que tomando la TIL obtenemos:

y(t) = t − T + T e−t/T (2.48)

La respuesta del sistema será gráficamente el mostrado en la Fig. 2.20.

3.5

2.5
y(t)

1.5

0.5

0
0 0.5 1 1.5 2 2.5 3 3.5 4
t

Figura 2.20: Respuesta de un sistema de primer orden a la entrada rampa unitaria.

T = 0.5 representa el error en estado estacionario, esto es, el error al seguir la


entrada es igual a T para un t sufiecientemente grande. Cuanto menor sea la
constante de tiempo T, menor será el error en estado estacionario al seguir la
entrada rampa.

• Entrada función escalón:


En este caso tendremos:
2.2 Modelos dinámicos y respuesta dinámica. 77

A 1
u(t) = 1(t) → U (s))1/s → Y (s) = G(s)U (s) = , (2.49)
1 + Ts s
La respuesta temporal será la siguiente:

A 1
y(t) = L−1 { } = A(1 − e−t/T ) (2.50)
1 + Ts s

Si suponemos que las condiciones inciales no son nulas, sino que y(0) = b,
podemos calcular los valores en régimen estacionario y transitorio:

– Estacionario: yss = limt→∞ y(t) = A


– Transitorio: yt = (b − A)e−t/T

La respuesta del sistema será gráficamente el mostrado en la Fig. 2.21.

0.9

0.8

0.7

0.6
y(t)

0.5

0.4

0.3

0.2

0.1

0 0.5 1 1.5 2 2.5


t

Figura 2.21: Respuesta de un sistema de primer orden a la entrada escalón.

La constante de tiempo T será el parámetro caracterı́stico. Cuanto más pe-


queño sea T, más rápida será la respuesta del sistema. Para t > 4T la respuesta
se mantiene dentro del 2% del valor final. El estado estacionario sólo se alcanza
en un tiempo infinito.

La respuesta transitoria de un sistema de primer orden puede describirse en


términos de la localización del polo de la función de transferencia (-1/T), represen-
tando la respuesta ante entrada escalón (ver Fig. 2.22).

2.2.6 Sistemas de segundo orden, respuesta impulsional/escalón, ...


Los sistemas de segundo orden tienen la siguiente ecuación diferencial asociada:
78 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

jw

1 1 1 1

0 0 0 0

Figura 2.22: Respuesta impulsional en función de la posición de los polos en un sistema de primer
orden.

2 m
X di y(t) X dj u(t)
ai = bj , m≥2 (2.51)
dti dtj
i=0 j=0

Si desarrollamos la función de transferencia G(s) = N (s)/D(s), obtenemos el


sistema siguiente:

wn2
G(s) = , (2.52)
s2 + 2ξwn s + wn2
donde ξ es la relación de amortiguamiento y wn es la frecuencia natural. Esta
expresión se corresponde al sistema con realimentación unitaria mostrado en la Fig.
2.23:

u(t) y(t)
+
-

Figura 2.23: Sistema de segundo orden como bloque con realimentación unitaria.

En la Fig. 2.24 se muestran ejemplos de la respuesta en función de los distintos


polos.
2.2 Modelos dinámicos y respuesta dinámica. 79

Figura 2.24: Respuesta de un sistema de segundo orden en función de la posición de los polos.

El denominador del sistema se denomina ecuación caracterı́stica y, para un sis-


tema de segundo orden, tiene la siguientes raı́ces o polos:
p
p1,2 = −ξwn ± jwn 1 − ξ 2 (2.53)

En función de los valores de ξ, obtendremos distintas posiciones de los polos y,


por tanto, distintas respuestas del sistema:

• ξ = 0. Sistema sin amortiguamiento.

p1,2 = ±jwn (2.54)

• 0 < ξ < 1. Sistema subamortiguado.

p
p1,2 = −ξwn ± jwn 1 − ξ2 (2.55)

En este caso, como p21 + p22 = wn2 , y por tanto ξ 2 + w2 = wn2 , esta situación se
da alrededor de una circunferencia de radio la frecuencia natural, wn .
80 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

• ξ = 1. Amortiguamiento crı́tico (polos reales dobles).

p1,2 = −ξwn (2.56)

• ξ > 1 Sobreamortiguamiento (polos reales simples).

p
p1,2 = −ξwn ± wn ξ2 − 1 (2.57)

Respuesta escalón en sistemas de segundo orden

En el caso de los sistemas de segundo orden, resulta de interés observar sus


respuesta ante una entrada escalón. Recordemos que la función de entrada al sistema
es U (s) = 1/s, por lo que:

wn2 1
Y (s) = G(s)U (s) = , (2.58)
s2 + 2ξwn s + wn2 s
que para el caso 0 < ξ < 1 se obtiene una respuesta temporal:
σ
y(t) = 1 − e−σt (cos(wd t) + sin(wd t)), (2.59)
wd

p σ y wd definen los polos del sistema: s = −σ − jwd , σ = ξwn y wd =


donde
wn 1 − ξ 2 .
En la Fig. 2.25 mostramos esta respuesta en función de distintos valores de la
constante de amortiguamiento ξ.

Figura 2.25: Respuesta temporal de un sistema de segundo orden en función de distintos valores
del coeficiente de amortiguamiento, ξ.
2.2 Modelos dinámicos y respuesta dinámica. 81

2.2.7 Especificaciones en el dominio temporal


La respuesta temporal ante una entrada escalón tiene una forma caracterı́stica
que podemos dividir en dos tramos: una primera parte en la que se alcanza la señal
de entrada (estado transitorio) y una segunda en que el sistema presenta oscilaciones
alrededor del valor máximo de entrada (régimen estacionario) Ver la Fig. 2.26.

Figura 2.26: Respuesta temporal transitoria tı́pica de un sistema de segundo orden. Se indican
también las caracterı́sticas que definen la respuesta, a menudo conocidas por especificaciones del
sistema ya que son las propiedades deseadas a conseguir en un controlador.

La respuesta transitoria de un sistema ante una entrada de escalón unitario de-


pende de las condiciones iniciales. Al comparar respuestas transitorias de diversos
sistemas, por conveniencia, se suele usar la condición inicial de reposo (todas las
derivadas se hacen cero). La respuesta transitoria presentará oscilaciones amorti-
guadas antes de alcanzar el estado estacionario. Las caracterı́sticas que definen esta
respuesta son:

• Tiempo de retardo, td (“delay”). Tiempo que tarda la respuesta en alcanzar


la mitad del valor final por primera vez.

• Tiempo de crecimiento, tr (“raise”). Tiempo necesario para que la respuesta


aumente del 10% al 90%, del 5% al 95% (sistemas subamortiguados, ξ > 1) o
del 0% al 100% (sistemas subamortiguados, 0 < ξ < 1). Un valor aproximado
viene dado por tr ≈ 1.8/wn .

• Tiempo de pico, tp (“peak”). Tiempo necesario para que la respuesta alcance


el primer pico de sobreimpulso.

• Sobreimpulso máximo, Mp (“maximum peak”). Es el valor de pico máximo de


la curva de respuesta medido desde la unidad. Si no se estabiliza en la unidad,
y(t )−t(∞)
Mp = 100% py(∞) . Nos indica la estabilidad relativa del sistema.
82 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

• Tiempo de establecimiento, ts (“settling time”). Es el tiempo que el sistema


necesita para alcanzar y mantenerse en un rango alrededor del valor final con
una magnitud del 1%, 2% o del 5%. Esta magnitud está relacionada con la
constante de tiempo máxima del sistema de control. Un valor aproximado
viene dado por ts ≈ 4.6/ξ.

Ejemplos

1. Hallar las especificaciones de un sistema de segundo orden ante una entrada


escalón si ξ = 0.6 y wn = 5rad/s.

SOLUCIÓN: wd = 4, σ = ξwn = 3, tr = 0.55s., tp = 0.785s., Mp = 9.5%,


ts (2%) = 1.33s., ts (5%) = 1s.

2. Determinar K y Kh para el sistema de la Fig. ?? de modo que Mp en la


resuesta escalón unitario sea 0.2 y tp = 1s.. Obtener después tr y ts para esos
valores K y Kh .
(a) (b)
Im(s) p1 = 0 Im(s)
p2,3 = -4+4j
_
x
x 4 4
π/3
-2.67
x x
-4 -2 Re(s) -4 -2 Re(s)
−π/3=5π/3

x -4 x -4

(c) (d)
Im(s) Im(s) p1 = 0
φ2 5.66 p2,3 = -4+4j
_
x 90
4 x
4
φ1
90+45
x x
-4 -2 Re(s) -4 -2 Re(s)
45
90
φ3 x -4 x
-4
-5.66

p1 = 0 φ1
p2,3 = -4+4j
_ φ2 φ3

Figura 2.27: Sistema de control con realimentación. Ejemplo 2.

SOLUCIÓN: K = 12.5, Kh = 0.178, tr = 0.65s., tp = 3.14s., Mp = 0.2,


ts (2%) = 2.48s., ts (5%) = 1.86s.

2.2.8 Efectos de la adición de ceros y polos


Si un cierto diseño tiene un tiempo de elevación demasiado bajo, se debe elevar
la frecuencia natural, wn . De forma similar, si el transitorio es demasiado elevado,
la amortiguación necesaria deberá incrementarse. Si el transitorio dura demasiado
tiempo, habrá que mover los polos a la izquierda en el plano s. La influencia de
2.2 Modelos dinámicos y respuesta dinámica. 83

los ceros en un sistema de segundo orden se basa en que modifican los coeficientes
de los términos exponenciales. Si el cero se desplaza lejos de los polos, tendrá poco
efecto sobre la respuesta. Por el contrario, si el cero está en el valor de la parte real
de los polos podrı́a tener influencia decisiva sobre la respuesta. El mayor efecto de
los ceros es, por tanto, el de aumentar Mp con poca influencia sobre el tiempo de
estabilización.
Por tanto, resulta evidente que la posición de polos y ceros en un sistema de
control tiene especial relevancia en las caracterı́sticas de su respuesta. Veamos este
hecho con un ejemplo. Si consideramos los sistemas:

2 2 2
H1 (s) = = − (2.60)
(s + 1)(s + 2) s+1 s+2

2(s + 1.1) 0.18 1.64


H2 (s) = = + (2.61)
1.1(s + 1)(s + 2) s+1 s+2
En el segundo sistema hemos añadido un cero en (-1.1) cerca de uno de los polos
(-1). El valor 1.1 en el denominador ajusta la ganancia DC para que sean iguales1 . La
Fig. 2.28 ilustra las respuestas de los dos sistemas ante la entrada escalón unitario.
De estos sistemas se pueden extraer caracterı́sticas interesantes:
Step Response
From: U(1)
1

0.9

0.8

0.7

0.6
Amplitude

To: Y(1)

0.5

0.4

0.3

0.2

0.1

0
0 1 2 3 4 5 6

Time (sec.)

Figura 2.28: Respuesta de los sistemas H1 (s) y H2 (s). Con la adición del cero conseguimos un
menor tiempo de subida.

• A medida que el cero se aproxima al origen, se incrementa el sobreimpulso.

• Los polos/ceros se pueden cancelar en el semiplano negativo (LHP) en lo que


se refiere a la respuesta pero pueden afectar a las condiciones iniciales.
1
Esto se puede demostrar mediante el TVF: limt→∞ y(t) = lims→0 sY (s).
84 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

• El predominio relativo de los polos de lazo cerrado está determinado por la


relación entre sus partes reales, ası́ como de las magnitudes relativas de los
residuos calculados por cada polo.

• Los valores de los residuos dependen de los polos y de los ceros de lazo cerrado.

• Los polos más cercanos al eje jw dominan el comportamiento de la respuesta


transitoria “Polos dominantes”.

2.3 Principios esenciales de la realimentación


2.3.1 Introducción
Existen dos estructuras básicas para el control de sistemas: en lazo abierto y
en lazo cerrado (o realimentado). La diferencia entre ellas es que en lazo cerrado
necesitamos usar un sensor a la salida el cual normalmente nos introduce un ruido
además de una medida de la variable de salida. En la Fig. 2.29 mostramos estos dos
esquemas.

(a)

Controlador Proceso
Salida
Entrada de
referencia

Control de entrada

(b)

Entrada de
referencia
+
Controlador Proceso
- Salida

Control de entrada

Sensor

Figura 2.29: Estructuras básicas en el control de sistemas: (a) Lazo abierto y (b) lazo cerrado.

En la Fig. 2.30 se muestra el esquema más sencillo de sistema con realimentación


unitaria (ganancia unitaria en el lazo de realimentación). A partir del esquema
podemos extraer las ecuaciones que definen el sistema total de la siguiente manera:
2.3 Principios esenciales de la realimentación 85

r e y
+ k H(s)
-

Figura 2.30: Sistema con realimentación unitaria.

E(s) = R(s) − Y (s) (2.62)


Y (s) = kH(s)E(s) (2.63)
Y (s) = kH(s)(R(s) − Y (s)) (2.64)
Y (s) kH(s) E(s) 1
= ; = (2.65)
R(s) 1 + kH(s) R(s) 1 + kH(s)

Si el valor de k es elevado, la ganancia entrada–salida se hace uno. Por tanto, el


valor de k será decisivo para la estabilidad de un sistema. Hablamos de realimenta-
ción proporcional (“proportional feedback”). Este hecho lo ilustramos en el siguiente
ejemplo.

• EJEMPLO 1. Si consideramos el sistema


1
H(s) = , (2.66)
s(s + 2)

realimentado con lazo unitario, podemos establecer su ecuación caracterı́stica


como:
s2 + 2s + k = 0 (2.67)
En la Fig. 2.31 mostramos la posición de las raı́ces de la ecuación caracterı́stica
y la respuesta ante una señal escalón con k = 1, k = 10 y k = 100.

• EJEMPLO 2. El segundo ejemplo que veremos se refiere al sistema siguiente:

1
H(s) = , (2.68)
s[(s + 4)2 + 16]
realimentado con lazo unitario, podemos establecer su ecuación caracterı́stica
como:
s[(s + 4)2 + 16] + k = 0 (2.69)
En la Fig. 2.32 mostramos la posición de las raı́ces de la ecuación caracterı́stica
y la respuesta ante una señal escalón con k = 1, k = 100 y k = 275.
86 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

x x

step response
1
Amplitude

0.5

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Time (secs)
proportional feedback, k =1
1
Amplitude

0.5

0
0 2 4 6 8 10 12 14
Time (secs)
proportional feedback, k =10
2
Amplitude

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)
proportional feedback, k =100
2
Amplitude

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)

Figura 2.31: Posición de los polos del sistema y respuesta escalón para k = 1, y k = 100.

En este ejemplo vemos como, al contrario del caso anterior, conforme aumen-
tamos el valor de k provocamos la inestabilidad del sistema al hacer que las
raı́ces de la ecuación caracterı́stica pasen del semiplano negativo al positivo.

2.3.2 Sensibilidad
Podemos definir la sensibilidad como el cambio relativo de una magnitud respecto
a otra. La sensibilidad de la magnitud Y respecto a la magnitud X, se define ası́:
∂Y
Y Y X ∂Y
SX ≡ ∂X
= (2.70)
X
Y ∂X

Si aplicamos esta definición sobre el sistema:

kG(s)
H(s) = , (2.71)
1 + kG(s)
la sensibilidad de H respecto de K se define como:

H K ∂H 1
SK ≡= = → 0 si |KG| es elevado. (2.72)
H ∂K 1 + KG
2.3 Principios esenciales de la realimentación 87

step response
0.04

Amplitude
0.02

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Time (secs)
proportional feedback, k =1
1
Amplitude

0.5

0
0 20 40 60 80 100 120 140 160 180 200
Time (secs)
proportional feedback, k =100
2
Amplitude

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)
proportional feedback, k =275
2
Amplitude

0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
Time (secs)

Figura 2.32: Posición de los polos del sistema y respuesta escalón para k = 1, k = 100 y k = 275.

Por tanto vemos que la realimentación reduce la sensibilidad del sistema.

2.3.3 Precisión en régimen estacionario: tipo de sistema


Si consideramos un sistema G(s) con realimentación unitaria, con un controlador
en serie D(s), la señal de error –recordemos– tiene la forma:

R(s)
E(s) = (2.73)
1 + G(s)
Por otro lado, la entrada de referencia a un sistema toma, por norma general, la
forma:
tk
r(t) = 1(t) (2.74)
k!
1
R(s) = k+1 (2.75)
s
En la mayorı́a de los casos, la referencia de entrada no será constante sino que
puede ser aproximada por una función lineal en un periodo de tiempo suficiente para
que el sistema alcance el estado estacionario. Esto se conoce como error en estado
estacionario. El tipo de la entrada a un sistema depende del valor de k:

• k = 0 implica una entrada escalón (error de posición).

• k = 1 implica una entrada rampa (error de velocidad).


88 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

• k = 0 implica una entrada parabólica (error de aceleración).

El error estacionario de un sistema de control realimentado se define como:

∞ ≡ lim (t) (2.76)


t→∞
∞ ≡ lim sE(s) (2.77)
s→0

donde E(s) es la transformada de Laplace de la señal de error y se define ası́:


1 1 1
E(s) = R(s) = k+1
(2.78)
1 + D(s)G(s) 1 + D(s)G(s) s
Por tanto, podemos calcular el error estacionario:
1 1
∞ ≡ lim = 0, ∞ o un constante. (2.79)
s→0 sk 1 + D(s)G(s)
Por tanto, el error estacionario dependerá del tipo de señal de entrada. Hablamos
de tipo de un sistema al orden k para el cual ∞ es una constante, y coincide con el
número de polos del sistema en lazo abierto. Ası́, por ejemplo, el sistema D(s)G(s) =
k(1+0.5s) 3
s(1+s)(2+3s) es de tipo 1, mientras que el sistema D(s)G(s) = k/s es de tipo 3.
De este modo, podemos resumir los errores estacionarios por tipo de entrada
como se muestra en la Tabla 2.3.3.

Tabla 2.2: Expresiones de los errores en régimen estacionario en función del tipo de entrada.
Las constantes representan el tipo de error: Kp es la constante de error de posición, Kv es la
constante del error de velocidad y Ka es la constante para el error de aceleración.
Entrada
Tipo Escalón Rampa Parábola Polinómico
1 2 1 k
1(t) t 2t kt
0 1/(1+Kp ) ∞ ∞ ∞
1 0 1/Kv ∞ ∞
2 0 0 ∞
....... . . . ∞
k 0 0 0 1/K0

El tipo de un sistema es una propiedad de robustez del mismo2 . Si la ganancia


del proceso cambia (cambio de parámetros) el Kerror cambia, pero no ocurre esto
2
La definición del tipo de un sistema nos ayuda a identificar rápidamente la habilidad de éste
para “seguir” polinomios (entradas). En la estructura de realimentación unitaria, si la ganancia
cambia a tipo 1, la Kv cambia también, pero el sistema todavı́a tendrá e∞ = 0 en respuesta a
una entrada constante y aún será de tipo 1. Los mismo ocurre para tipo II o superiores. Podemos
afirmar que la “robustez” es la mayor razón para preferir realimentaciones unitarias.
2.3 Principios esenciales de la realimentación 89

con el tipo del sistema. Para realimentación no unitaria, el tipo del sistema se puede
definir con respecto a la entrada de referencia:

ep → Kp = limG(s) (2.80)
ev → Kv = limsG(s) (2.81)
ea → Ka = lims2 G(s) (2.82)

Teorema de Truxal

Truxal (1995) derivó la fórmula para la constante de velocidad en términos de


los polos y los ceros en lazo cerrado; una fórmula que conecta el error en estado
estacionario con la respuesta dinámica. La fórmula de Truxal es:

n   Xm  
1 d X 1 1
= − [lnT ]s=0 = − + (2.83)
Kv ds pi zj
i=1 j=1

De esta ecuación se observa que se obtienen mayores valores de Kv cuando el


valor absoluto de los polos es menor. Veamos a continuación un ejemplo práctico:
EJEMPLO. Un sistema de tercer orden y de tipo I tiene los polos en lazo ce-
rrado en −2 ± 2j y −0.1. El sistema tiene un cero en lazo cerrado. ¿Dónde debe
estar el cero si se desea una Kv = 10?

SOLUCIÓN. Si aplicamos Truxal obtenemos z = −0.096.

2.3.4 Estabilidad en SLIT. Criterio de Routh.


La estabilidad es una propiedad del sistema en sı́ y no depende de la entrada o
función excitadora del sistema. Un sistema dinámico es estable si, estando en reposo,
se cumple que:

• Cualquier entrada acotada produce una salida acotada (BIBO, “Bounded Input
Bouded Output”).

• Entradas suficientemente pequeñas producen salidas suficientemente pequeñas.

Si un SLIT cumple la primera condición también cumple la segunda.

• TEOREMA. “La condición necesaria y suficiente para que un SLIT sea esta-
ble es que su respuesta g(t) a la entrada impulso sea absolutamente integrable”.
90 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

• ECUACIÓN CARACTERÍSTICA. La estabilidad va ligada a la posición


de las raı́ces de la ecuacion caracterı́stica. Las raı́ces de la ecuación carac-
terı́stica son los polos de G(s), y cuando s tome esos valores, |G(s)| → ∞.
Para que un sistema sea estable todas las raı́ces de la ecuación caracterı́stica
han de estar en el semiplano real negativo del plano s.

• CRITERIO DE ROUTH. Sólo se aplica este criterio si la ecuación ca-


racterı́stica es algebráica y todos los coeficientes son reales. Sea la ecuación
caracterı́stica D(s) = an (s − p1 )...(s − pn ) = 0, la condición necesaria y sufi-
ciente para que D(s) = 0 no tenga raı́ces con parte real positiva es que: (1)
todos los coeficientes tengan el mismo signo, y (2) ningún coeficiente sea nulo.

• ESTABILIDAD RELATIVA. El Criterio de Routh confirma la estabilidad


absoluta de un sistema. La estabilidad relativa se asocia a la amortiguación
relativa de cada raı́z de la ecuación caracterı́stica; se define como “la propiedad
que se mide por los tiempos relativos de estabilización de cada raı́z”. Tam-
bién se puede definir la estabilidad relativa en términos de los coeficientes de
amortiguación de cada par de raı́ces complejas y por tanto en términos de la
velocidad de la respuesta y el sobrenivel en lugar del tiempo de estabilización.
La estabilidad relativa depende de la localización de las raı́ces de la ecuación
caracterı́stica.

2.4 Método de diseño del lugar de las raı́ces (MLR)


2.4.1 Introducción
En las secciones anteriores hemos visto las caracterı́sticas de la respuesta ante
una entrada escalón tales como el tiempo de establecimiento, la localización de los
polos en el plano s (wn , ξ, σ), el sobreimpulso, etc.; además hemos examinado los
cambios de la respuesta transitoria ala añadir un polo–cero al sistema. Por otra
parte, hemos visto también cómo la realimentación puede influir en la estabilidad y
la respuesta dinámica al cambiar la posición de los polos.
Ahora veremos el Método del Lugar de las Raı́ces, que nos mostrará la influencia
de los polos en las caracterı́sticas de los sistemas realimentados. Empecemos con el
esquema de la Figura 2.33.
La relación entre la entrada y la salida del sistema en el plano s es:
Y (s) Ka KG G(s)
= , (2.84)
R(s) 1 + Ka KG G(s)
por los que la ecuación caracterı́stica del sistema es: 1 + Ka KG G(s) = 0, cuyas
raı́ces son los polos de la función de transferencia. Las raı́ces dependerán pues de Ka
(ganancia del controlador) y su elección tendrá influencia en la respuesta del sistema.
2.4 Método de diseño del lugar de las raı́ces (MLR) 91

R(s) E(s) U(s) Y(s)


+
-
Ka KGG

Figura 2.33: Sistema controlador proporcional de constante Ka y planta a controlar KG G en


lazo realimentado unitario.

El Método de Evans (1948) sugiere dibujar la localización de las raı́ces de la


ecuación caracterı́stica en función de Ka variando ésta entre 0 e ∞, y usar el gráfico
resultante para seleccionar el valor más adecuado de Ka . Además, estudiando los
efectos de la adición de polos-ceros sobre este gráfico, se puede determinar las con-
secuencias sobre el sistema. Ası́ pues llamamos Lugar de las Raı́ces al gráfico de
todas las posibles raı́ces de la ecuación caracterı́stica en función de alguna variable
(ganancia u otro parámetro). La técnica empleada para ello es el Método de Evans.
Ahora definimos el parámetro de estudio de nuestro LGR como K = Ka KG que
es la ganancia estática en lazo abierto (l.a.). Por tanto tenemos: 1 + KG(s) = 0 →
G(s) = − K1 . Por tanto el LGR es el conjunto de valores de s para el cual la ecuación
1 + KG(s) = 0 tiene valores positivos de K (y en consecuencia de Ka ).

2.4.2 Trazado del Lugar de las Raı́ces


Para trazar el Lugar de las Raı́ces hay que seguir una serie de siete pasos:

1. Marcar los polos de la función de transferencia en lazo abierto con aspas (‘X’)
y los ceros con cı́rculos (‘O’).

2. Dibujar el LGR debido a los polos en el eje real.

• El LGR siempre queda a la izquierda de un número impar de polos reales


y ceros reales.
• Un polo o zero en el eje real introducen un desfase de 180o y como se
alcanza la parte izquierda del plano s, la fase se hace negativa.
• Es más, un segundo polo o un segundo cero en el eje real introduce un
desfase adicional de 180o .
• Mostramos algunos ejemplos (Fig. 2.34):

3. Dibujar las ası́ntotas centradas en α (también llamado centroide) y con ángulos


de salida de φs :
92 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

180o

X O X

O X X

Figura 2.34: Algunos ejemplos de polos y ceros sobre el eje real para dibujar el LGR.

num. ceros − num. polos = n − m = num. asintotas. (2.85)


P P
p i − zi −a1 + b1
α= = (2.86)
n−m n−m
o o
180 + 360 (l − 1)
φs = ; l = 1, 2, ..., n − m (2.87)
n−m

Por ejemplo, si tenemos que n − m = 3 → φl = 60o , 180o , 300o ya que


(n − m)φl = 180o + (l)360o . En la Fig. 2.35 mostramos algunos ejemplos
de ası́ntotas.

4. Calcular los ángulos de partida (polos) y de llegada (ceros):


X X
Ψi − φi − 180o − 360o l = qφsalida (2.88)
X X
φi − Ψi + 180o + 360o l = qΨllegada , (2.89)

donde el orden del polo o cero y l toma valores enteros: los ángulos están entre
±180o .
Consideremos, por ejemplo el sistema en lazo abierto siguiente:
s+1
G(S) = , (2.90)
s[((s + 2)2 + 4)(s + 5)]

la representación de polos y ceros se muestra en la Fig. ?? junto con los ángulos


φi y psii de cada polo/cero respecto a un punto de test s0 = −1 + 2j. Debemos
tener en cuenta que si s0 es un punto del LGR, la ecuación siguiente se debe
satisfacer:
∠G(S) = ψi − (φ1 + φ2 + φ3 + φ4 ) = −180o (2.91)
2.4 Método de diseño del lugar de las raı́ces (MLR) 93

Figura 2.35: Ejemplos de trazado de ası́ntotas para el LGR.

5. Determinar el punto de cruce (intersección) con el eje imaginario s = jw:

• Los puntos de intersección y los correspondientes valores de K se pueden


determinar mediante el Criterio de estabilidad de Routh.
• Una raı́z de la ecuación caracterı́stica en el RHP (derceha del plano s)
implica que el sistema en lazo cerrado es inestable.
• Si utilizamos el Criterio de Estabilidad de Routh, podemos localizar aquéllos
valores de K para los cuales un incremento puede causar un cambio del
número de raı́ces en el semiplano derecho. Esos valores se corresponden
con el LGR que cruza el eje imaginario.

6. Dos segmentos se juntan en 180o y se separan en ±90o . Tres segmento se


aprosiman con ángulos relativos de 120o y parten con ángulos de 60o rotados.
Estos punto se conocen como puntos de bifurcación, ruptura o dispersión: dK
ds =
0 (ver Figs. 2.37 y 2.38.).

7. Completar el dibujo: las ramas empiezan en los polos y acaban en los ceros o
94 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Figura 2.36: Ejemplo del cálculo de los ángulos de salida φ y ψ.

en el ∞.

Algunas definiciones útiles:

• El LGR es un conjunto de valores de s para los que 1 + KG(s) = 0 se satisface


tal que K varı́a entre 0 e ∞.

• E LGR de G(s) es el conjutno de puntos en un plano-s donde la fase de G(s)


es 180o : ∠G = 180o + 360o l, l ∈ Z.

2.4.3 Ejemplos prácticos.


• EJEMPLO 1. Hallar el LGR de KG G(s) = 1/(s(s + 1) en función del
parámetro Ka .

K G = 1 → K = Ka

Orden de numerador y denominador: m = 0, n = 2; G(s) = b(s)/a(s); b(s) = 1,


a(s) = s2 + s. Por tanto no existen zeros y tenemos dos polos en 0 y –1.

Resolviendo 1 √+ KG(s) = 0 se obtiene s2 + s + K = 0 cuyas raı́ces son:


r1 , r2 = − 21 ± 1−4K
2 por lo que se puede distinguir tres casos:

– 0 ≤ K ≤ 1/4 → Raı́ces reales entre –1 y 0.


2.4 Método de diseño del lugar de las raı́ces (MLR) 95

Figura 2.37: Este ejemplo ilustra un caso en que dos ramas del LGR se encuentran en el punto
de ruptura (“breakway point”, “saddle point”) y se alejan del eje en sentidos contrarios. En este
caso, el punto de ruptura representa una doble raı́z de la ecuación, cuando el valor de K tiene el
valor del punto.

– K = 1/4 → Dos raı́ces en –1/2.



– K > 1/4 → Raı́ces complejas: Re: –1/2, Im: α K.

En la Fig. 2.39 mostramos como existe un punto de ruptura para el cual


tenemos raı́ces complejas para K > 1/4.

• EJEMPLO 2. Representar el LGR para la planta G(s) = 1/(s(s + c)) res-


pecto el valor de c.

En este caso se tiene que 1+G(s) = 0 → s2 +sc+1 √ = 0, a(s) = s2 +1, b(s) = s,


2
K = c, por lo que las raı́ces serán: r1 , r2 = − 2 ± c2−4 (cero en s = 0, polos
c

en ±j). El LGR se muestra en la Fig. 2.40.

• EJEMPLO 3. Entender y justificar los LGR de la Fig. 2.41.

• EJEMPLO 4. Se desea obtener el LGR del siguiente sistema:


96 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Figura 2.38: Situaciones tı́picas de puntos de ruptura (“breakway point”, “saddle point”).

1
G(s) = (2.92)
s[(s + 4)2 + 16]

1. Representar los polos y ceros del sistema (Fig. ??a):


2. Lugar sobre el eje real: izquierda de un número impar de ceros y polos
reales (Fig. 2.42a).
3. Ası́ntotas. Tenemos n = 3, m = 0, por lo que tendremos n − m = 3
ası́ntotas: l = 1, 2, 3.

0 + (−4 + 4j) + (−4 − 4j)


α= = −8/3 = −2.67 (2.93)
3
180 + 360o (1 − 1)
o
φ1 = = π/3 (2.94)
3
180o + 360o (2 − 1)
φ1 = =π (2.95)
3
180o + 360o (3 − 1)
φ1 = = 5π/3 (2.96)
3
Las ası́ntotas quedan representadas en la Fig. 2.42b.
4. Ángulos de salida y llegada (polos y ceros). Sabemos que el LGR empieza
en los polos y va hacia los ceros o el ∞ por las lı́neas asintóticas. Si
recordamos la regla para el cálculo de los ángulos de partida:
2.4 Método de diseño del lugar de las raı́ces (MLR) 97

Im(s)

x x
Re(s)

Punto de ruptura

Figura 2.39: Lugar de las raı́ces para el sistema del Ejemplo 1.

Im(s)
Punto de ruptura
x

-1 Re(s)

Figura 2.40: Lugar de las raı́ces para el sistema del Ejemplo 2.

– Ángulo de partida de un polo complejo = 180o - [ ángulos de los


P
P
segmentos al polo complejo desde los otros polos] + [ ángulos de
los segmentos al polo complejo desde los ceros]
– Ángulo de partida de un polo complejo = 180o - [ ángulos de los
P
P
segmentos al cero complejo desde los otros ceros] + [ ángulos de
los segmentos al cero complejo desde los polos]
Como sólo tenemos polos (dos complejos y otro real), sólo aplicaremos la
regla 1, es decir, sólo habrá ángulos de partida (Fig. 2.42c). Para cada
polo i calculamos un φi :
– φ1 = 180o - (45o +45o ) = 90o
– φ2 = 180o - (90o + 135o ) + 0o = -45o
– φ3 = 180o + 0o - (90o +45o ) = +45o
98 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

orden 2

X
X O

X X

X
O
X

orden 2

Figura 2.41: Más ejemplos de LGR.

5. Cruce en el eje imaginario (s = jw) + Criterio de Routh:

K
1+ =0 (2.97)
s[(s + 4)2 + 16]
s3 + 8s2 + 32s + K = 0 (2.98)

Si aplicamos el Criterio de Routh, vemos que la ecuación no tiene raı́ces


en el SPD para 0 < K < 8 ∗ 32 = 256. Como nos interesan los K > 0,
nos centraremos en K < 256. Para K < 256 no tenemos raı́ces en el SPD
y para K > 256 tenemos dos raı́ces en el SPD. Analizamos el punto de

ruptura K = 256: wo = ± 32 = ±5.66.
6. Puntos de bifurcación:

d
[−1/G]s=s0 = 0 → 3s2 + 16s + 32 = 0 → s0 = −2.67 ± 1.89j (2.99)
ds
Como este s0 NO está en el LGR, no nos ha servido el proceso. Hay que
recordar que es una condición necesaria pero no suficiente.
7. Completamos el LGR. Ver Fig. 2.42d.
2.4 Método de diseño del lugar de las raı́ces (MLR) 99

(a) (b)
Im(s) p1 = 0 Im(s)
p2,3 = -4+4j
_
x
x 4 4
π/3
-2.67
x x
-4 -2 Re(s) -4 -2 Re(s)
−π/3=5π/3

x -4 x -4

(c) (d)
Im(s) Im(s) p1 = 0
φ2 5.66 p2,3 = -4+4j
_
x 90
4 x
4
φ1
90+45
x x
-4 -2 Re(s) -4 -2 Re(s)
45
90
φ3 x -4 x
-4
-5.66

p1 = 0 φ1
p2,3 = -4+4j
_ φ2 φ3

Figura 2.42: Paso 1: indicamos los polos del sistema y con una flecha roja el lugar de raı́ces que
queda a la izquierda de un número impar de ceros + polos reales.

Una forma más sencilla de realizar el LGR es con MATLAB. Si hacemos:

>>rlocus(1,conv([1 0],[1 8 32])), obtenemos la misma representación (Fig.


2.43).

• Ejemplo 3: MATLAB. Representar el LGR del sistema:

(s + 3)(s + 1 ± j3)
G(s) = (2.100)
s(s + 1)(s + 2)3 (s + 4)(s + 5 ± 2j)

Empleando el comando rlocus, obtenemos el LGR fácilmente (Fig. 2.44).

Algunos aspectos sobre la construcción del LGR

Desde el punto de vista del diseño de sistemas de control resulta absolutamente


necesario conocer el efecto que tiene sobre el LGR añadir o mover polo y ceros de
D(s)G(s) sobre el plano-s. Las principales propiedades son:

• Efecto de añadir polos y ceros a D(s)G(s):


100 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

10

2
Imag Axis

-2

-4

-6

-8

-10
-6 -5 -4 -3 -2 -1 0 1 2
Real Axis

Figura 2.43: Resolución del LGR con MATLAB.

– Añadir polos: En general, añadir un polo a la función D(s)G(s) en el


semiplano izquierdo tiene el efecto de empujar el LGR hacia el semiplano
derecho.
– Añadir ceros: Añadir ceros en el semiplano izquierdo a la función D(s)G(s)
por norma general tiene el efecto de mover el LGR hacia el mismo semi-
plano izquierdo.

• Calcular la ganancia K a partir de LGR: Una vez que el LGR ha sido


construido, el valor de K en cualquier punto se puede determinar ya que sa-
bemos que 1 + KG(s) = 0 y, por tanto: K = −1/G(s). Gráficamente, esto se
calcula ası́:

Π distancia desde s0 a los ceros


K= (2.101)
Π distancia desde s0 a los polos

En MATLAB esto se hace mediante la función rlocfind.

2.4.4 Compensación dinámica


Hemos visto que variando la ganancia podemos conseguir una representación
deseada de nuestro sistema pero esto no es siempre posible. Empleamos el Método
de compensación dinámica cuando el diseño deseado no lo podemos alcanzar con la
variación de la ganancia únicamente. Tenemos dos tipos básicos de compensadores:
por adelanto y por atraso:
2.4 Método de diseño del lugar de las raı́ces (MLR) 101

Figura 2.44: LGR del ejemplo con MATLAB.

• Adelanto. Se usa para reducir el tiempo de elevación y el transitorio de


sobreimpulso de la respuesta. Es decir, se aproxima a un control derivativo.

• Atraso. Se usa para mejorar la respuesta en estado estacionario. También


nos referimos a él como control integral.

Si tenemos un compensador con la forma:


s + zi
D(s) = , (2.102)
s + pi

se llama compensador de adelanto si zi < pi y de atraso si zi > pi .


Normalmente la compensación se realiza en serie con la planta (Fig. 2.45), aunque
también se puede situar en el camino de realimentación.

Figura 2.45: Estructura tı́pica de un compensador.


102 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

De este modo, tenemos una ec. caracterı́stica: 1 + KD(s)G(s) = 0, donde


K = KA KG . Todas las reglas del LGR se pueden aplicar ahora a la función
D(s)G(s). Definimos compensación como el cálculo de D(s) para que se cumplan
ciertas especificaciones del sistema total.

Efecto de adición de polos y ceros

Recordemos que:

• Adición de polos3 .

– Mueve el LGR hacia la derecha.


– Reduce la estabilidad relativa.
– Aumenta el tiempo de establecimiento, ts .

• Adición de ceros.

– Mueve el LGR hacia la izquierda, mejorando la estabilidad del sistema.


– Aumenta la estabilidad relativa.
– Reduce el tiempo de establecimiento, ts .
– Agregar un cero introduce cierto grado de anticipación al sistema y acelera
la respuesta transitoria.

Compensación en adelanto

Veamos, en primer lugar, un ejemplo sobre la adición de un cero al siguiente


sistema:
K
KG(s) = (2.103)
s(s + 1)

El LGR se muestra en la Fig. 2.46 en lı́nea continua. Si consideramos un com-


pensador D(s) = s + 2, se consigue el LGR en lı́nea discontinua (cı́rculo). Vemos
como añadir un simple cero en s = −2 hemos desplazado el LGR hacia la izquierda,
mejorando la estabilidad del sistema final.
El problema de añadir un único cero en el compensador serı́a que, una realiza-
ción fı́sica del sistema involucrarı́a un diferenciador que amplificarı́a el ruido de alta
frecuencia de la señal del sensor. Por ello, es imposible construir un diferenciador
puro. Podemos, sin embargo, ver la influencia que tendrı́a construir un compensador
que incluyera el cero anterior y un polo adicional en s = −20:
s+2
D(s) = (2.104)
s + 20
2.4 Método de diseño del lugar de las raı́ces (MLR) 103

Figura 2.46: Lugar de las Raı́ces para la inclusión de un compensador por adelanto.

Figura 2.47: Lugar de las Raı́ces para la inclusión de un compensador por adelanto (s=-2) y un
polo (s=-20).

El efecto se muestra en la Fig. 2.47.


Normalmente la elección de los polos/ceros se realiza mediante prueba–y–error
aunque existen algunos consejos útiles:

• El polo se sitúa entre 3 y 20 veces el valor de la posición del cero.

• Si el polo está demasiado cerca al cero, entonces el LGR se aleja hacia una
forma no compensada y el cero no hace su función.

• Si el polo fuera demasiado lejos hacia la izquierda, aparecerı́a ruido de ampli-


ficación de alta frecuencia.

El ejemplo del “coche+barra”


Este ejemplo es clásico en la demostración de un sistema que necesita ser estabi-
lizado mediante la inclusión de un compensador. El sistema consiste en un cochecito
3
A la función de transferencia en lazo abierto.
104 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

con una barra fija en su capó y que oscila conforme el coche avanza y frena (Fig.
2.48).

u m

Figura 2.48: Diagrama del coche+barra.

El sistema se puede describir matemáticamente como sigue (Ogata, 1993):

φ(s) 1
θ̈ + θ = u → s2 φ(s) − φ(s) = U (s) → = 2 (2.105)
φU (s) s −1

Si representamos el LGR de este sistema obtenemos un sistema inestable (Fig. 2.49a).


Ahora bien, si introducimos un compensador por adelanto como en la Fig. 2.50,
podemos obtener un sistema estable (Fig. 2.49b) o incluso, cuando las variaciones
son menores, con mejor relación de amortiguamiento (Fig. 2.49c). Este último
sistema serı́a más lento pero conseguirı́a una mejor relación de amortiguamiento.
(a) (b) (c)
2 5 5

1.5

0.5
Imag Axis

Imag Axis

Imag Axis

0 0 0

-0.5

-1

-1.5

-2 -5 -5
-2 -1 0 1 2 -4 -2 0 2 -4 -2 0 2
Real Axis Real Axis Real Axis

Figura 2.49: Lugar de las raı́ces para (a) el sistema original, (b) compensador 1 y (c) compensador
2.

El código de MATLAB para realizar estos LGR serı́a:

subplot(131),rlocus([1],[1 0 -1]),grid,title(’(a)’)
alpha = 2;beta = 3;
2.4 Método de diseño del lugar de las raı́ces (MLR) 105

+ s+α 1
u e
2
s+β s -1
-

Figura 2.50: Control mediante un compensador por adelanto del sistema coche+barra.

subplot(132),rlocus([1 alpha],conv([1 0 -1],[1 beta])),grid,title(’(b)’)


alpha = 0.5;beta = 3;
subplot(133),rlocus([1 alpha],conv([1 0 -1],[1 beta])),grid,title(’(c)’)

Compensación en atraso

Si consideramos de nuevo la misma función de transferencia, y consideramos el


compensador en adelanto D(s) = (s + 2)/(s + 20), obtendremos el LGR de la Fig.
2.47 anterior. Si ahora elevamos la ganancia (K=31) hasta conseguir una relación
de amortiguamiento ξ = 0.707, la constante de velocidad es:

Kv = lim sKD(s)G(s) = (31/10) = 3.1 (2.106)


s→0

Si ahora añadimos un segundo compensador por atraso:


s + 0.1
D2 (s) = , (2.107)
s + 0.01
aumentamos la velocidad por 10 ya que z/p = 10 y además mantenemos pequeños
z y p de forma que D2 (s) tendrı́a poca influencia sobre la dinámica del sistema. El
LGR se muestra en la Fig. 2.51.
De este ejemplo podemos comentar que:

• El pequeño cı́rculo alrededor del origen es el resultado de la compensación por


atraso.

• Una raı́z de lazo cerrado se queda muy cerca del cero de compensación por
retardo de –1, lo que corresponde a un transitorio muy lento. Esta lentitud
se debe a que el cero casi cancela el polo en la función de transferencia. Sin
embargo, este decaimiento es tan lento que este término puede aumentar el
valor del tiempo de establecimiento.

• Por tanto, resulta importante situar la combinación de atraso polo-cero en


frecuencias tan altas como sean posibles sin causar desplazamientos demasiado
importantes en la localización de la planta original.
106 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Figura 2.51: Lugar de las Raı́ces para la inclusión de un compensador por atraso con control de
velocidad.

Técnica LGR de diseño mediante compensación en adelanto

El método del LGR es bastante bueno para el diseño de compensadores si las


especificaciones dadas son términos en el dominio del tiempo: amortiguamiento (δ),
frecuencia natural (wn ), sobreimpulso máximo (Mp ), tiempo de crecimiento (tr ),
tiempo de establecimiento (ts ), etc. El sistema original que se nos plantea en estos
casos es, bien inestable para cualquier ganancia estática K, bien estable para algún
valor de K pero con respuesta transitoria indeseable. Es entonces cuando tendremos
que modificar el LGR próximo al eje imaginario y al origen mediante la inclusión de
un compensador.
El procedimiento de diseño sigue estos pasos:

• A partir de las especificaciones obtenemos la ubicación de los polos dominantes


de lazo cerrado.

• Trazamos el LGR y nos planteamos la pregunta de si con sólo ajustar la ganan-


cia podemos obtener los polos deseados en lazo cerrado. En caso de no poder
hacerlo, calculamos la diferencia angular φ que deberá proporcionar nuestro
compensador para que el nuevo LGR pase por los polos deseados.

• Supondremos la función del compensador:

1 + Ts s + T1
Gc (s) = Kc α = Kc 1 , 0 < α < 1. (2.108)
1 + αT s s + αT

Los valores de α y T los podremos calcular a partir de φ y la ganancia estática


del compensador Kc a partir de la ganancia de lazo abierto.
2.4 Método de diseño del lugar de las raı́ces (MLR) 107

• Si las constantes de error no se proporcionan, determinar la posición del polo


y cero de Gc (s) de forma que éste contribuya con el ángulo necesario φ. Si
no hay otros requisitos impuestos, elegiremos α lo mayor posible ya que ası́
conseguimos una constante de velocidad elevada, lo cual es deseable.
Si se da alguna constante de error estático deberemos emplear el Método de
Compensación de Respuesta en Frecuencia que veremos en la siguiente sección

• Determinar la ganancia en lazo abierto del sistema compensado partiendo de


la condición de magnitud.

Técnica LGR de diseño mediante compensación en atraso

Se utiliza la compensación en atraso cuando tenemos, por ejemplo, un sistema


que presenta caracterı́sticas satisfactorias de respuesta transitoria pero no en estado
estacionario. Ası́ pues, la compensación consiste en incrementar la ganancia en lazo
abierto sin modificar las caracterı́sticas de la respuesta transitoria. Esto significa que
el LGR más cercano a los polos dominantes en lazo cerrado no debe variar de forma
significativa, pero hay que incrementar la ganancia de lazo abierto tanto como sea
necesario. Esto se puede lograr si se coloca un compensador en atraso en serie con
la planta.
Para evitar una modificación apreciable del LGR, la contribución angular del
compensador debe ser menor de 5o . Para asegurar esto, el polo y el cero del com-
pensador en atraso se tienen que colocar bastante juntos y cerca del origen. Ası́,
los polos de lazo cerrado del sistema total compensado se desplazan levemente de
sus ubicaciones originales por lo que las caracterı́sticas de respuesta transitoria no
se alteran.
La forma del compensador es:
1 + Ts s + T1
Gc (s) = Kc β = Kc 1 , β > 1. (2.109)
1 + βT s s + βT

Si el polo y el cero se colocan muy cerca entre si, s = s1 donde s1 es uno de los
polos dominantes de lazo cerrado por lo que s1 + 1/T y s1 + 1/βT son casi iguales y:

s + T1
|Gc (s)| = |Kc 1 | ≈ Kc . (2.110)
s + βT

Esto quiere decir que si Kc = 1 las caracterı́sticas de respuesta transitoria no se


alterarán (la ganancia global de la función de transferencia de lazo abierto (l.a.) se
puede incrementar en un factor β > 1.)
Como ponemos el polo y el cero cerca del origen, β puede hacerse muy grande
(1 < β < 15, β = 10 suele ser una buena elección). El valor de T debe ser grande pero
108 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

no en exceso. Un aumento en la ganancia significa un aumentao en las constantes


de error estático:

Sistema N o Compensado : Kv = lim [sG(s)] (2.111)


s→0

Sistema Compensado : K̂v = lim [sGc(s)G(s)] = Kc βKv (2.112)


s→0

El procedimiento de diseño es el siguiente4 :

• Trazar el LGR para el sistema no compensado. Empleando las especificaciones,


localizamos los polos dominantes en lazo cerrado (l.c.)

• Planteamos el compensador por atraso:

s + T1
Gc (s) = Kc 1 . (2.113)
s + βT

• Calculamos el error estático especificado: Kp , Kv , Ka , ess .

• Deteminar el aumento del coeficiente de error estático que se da para cumplir


las especificaciones.

• Determinar el polo y el cero del compensador en atraso que produce el aumento


necesario en el coeficiente de error estático sin alterar mucho el LGR original5 .

• Trazar el LGR del sistema compensado. Poner los polos dominantes de l.c. en
el LGR. Poner los polos dominantes de l.c. deseados conforme a las especifica-
ciones de la respuesta transitoria.

• Ajustar la ganancia Kc a partir de la condición de módulo para que los polos


dominantes l.c. queden en las ubicaciones deseadas.

Técnica LGR de diseño mediante compensación en atraso–adelanto

Hasta ahora hemos visto como un compensador en adelanto proporcionaba mayor


ancho de banda, aceleraba la respuesta y reducı́a el sobreimpulso máximo, mientras
que un compensador en atraso proporcionaba una mayor ganancia en frecuencias
4
Vamos a suponer que el sistema no compensado cumple las condiciones de respuesta transitoria
por ajsute de ganancia.
5
La relación de ganancias de las especificaciones/no compensado es la misma que la de distancias
del cero al origen y poloo al origen.
2.5 Método de diseño de la respuesta en frecuencia (MRF) 109

bajas (mejora la exactitud en estado estacionario) teniendo una mayor velocidad de


respuesta (menor ancho de banda). El compensador de atraso–adelanto aprovecha
las caracterı́sticas de ambos y se suele emplear cuando deseamos mejorar la respuesta
transitoria y estacionaria al mismo tiempo.
La forma del compensador es:
1 1
(s + T1 )(s + T2 )
Gc (s) = Kc γ 1 ,β > 1, γ > 1. (2.114)
(s + T1 )(s + βT1 )

Para los detalles y procedimiento de diseño se recomienda consultar (Ogata, 1993).

2.5 Método de diseño de la respuesta en frecuencia (MRF)


Éste es el método de diseño de sistemas de control con realimentación más usado
en la industria ya que:

• Da buenos diseños para modelos poco conocidos o con frecuencias altas de


resonancia.

• Permite el diseño con información experimental. Las medidas de amplitud


y fase de salida de una planta bajo una excitación de entrada senoidal son
suficientes para el diseño del sistema de control.

• No es necesario un cálculo intermedio de los datos como ocurrı́a con el método


del LGR en el que habı́a que encontrar los polos y ceros deseados.

La principal desventaja, sin embargo, es que la teorı́a es algo complicada (va-


riable compleja) aunque la metodologı́a de diseño sea sencilla. En este curso no
profundizamos en los conceptos matemáticos del diseño e iremos directamente a las
“recetas” del diseño de compensadores. Para más detalles se recomienda consultar
(Franklin y Powell, 1994; Ogata, 1993).

2.5.1 Respuesta en frecuencia


Definimos respuesta en frecuencia de un sistema a la respuesta de éste ante una
entrada sinusoidal. A partir de la lozalización de polos y ceros, podemos conocer
mejor esta respuesta en frecuencia. Consideremos una función de transferencia en
lazo abierto:

Y (s)
= G(s) → G(jw) (2.115)
U (s)
110 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Suponemos una entrada:

u(t) = sin(wt), (2.116)

que para un sistema lineal, tendrá una salida:

y(t) = Asin(wt + φ). (2.117)

Definimos:

M agnitud : A = |G(jw)| = |G(s)|s=jw (2.118)


Im(G(jw))
F ase : φ = ∠G(jw) = arctan{ } (2.119)
Re(G(jw))
Por tanto un sistema estable con función de transferencia G(s) excitada por una
sinusoide de amplitud unitaria y frecuencia w, tras alcanzar el estado estacionario,
exhibirá una salida sinusoidal con amplitud A(w) y fase φ(w). Hay que hacer notar
que la salida es una sinusoide con igual frecuencia que la de la enrtada y la amplitud A
es independiente de la señal de entrada. Esto es consecuencia de que G(s) representa
un sistema lineal.
Estamos interesados en representar A y φ porque nos ayudará a interpretar la
respuesta del sistema y a determinar la estabilidad en lazo cerrado del sistema a
partir del lazo abierto.

2.5.2 Diagramas de Bode


Hablamos de los Diagramas de Bode en dos casos:

• Diagrama de magnitud: log10 A frente a log10 w

• Diagrama de fase: φ frente a log10 w

Dado un sistema:

(s − z1 )(s − z2 )... Πm (s − zi )
KG(s) = K = K ni=1 (2.120)
(s − p1 )(s − p2 )... Πj=1 (s − pj )
Πm
i=1 (jwτi + 1)
→ KG(jw) = K0 n ; K0 = |KG(jw)|w<< (2.121)
Πj=1 (jwτj + 1)

A partir de esta expresión, obtenemos el diagrama de magnitud:

log10 KG(jw) = log10 K0 + log10 |jwτ1 + 1| + ...


−nlog10 |jw| − nlog10 |jwτa + 1|, (2.122)
2.5 Método de diseño de la respuesta en frecuencia (MRF) 111

y el de fase:

∠KG(jw) = ∠K + ∠(jwτ1 + 1) + ... − n90o − ∠(jwτa + 1). (2.123)

Todas las funciones de transferencia están compuestas por tres tipos de términos:

• Singularidad en el origen: K(jw)n (Fig. 2.52).

Figura 2.52: Diagrama de Bode de la amplitud para singularidades en el origen.

Se trata de una recta con pendiente n (20 db/dec) en una representación lo-
garı́tmica de la amplitud y añade una fase de n90o en el diagrama de fase:

20log10 [K0 |(jw)n |] = 20log10 K0 + 20nlog10 |jw| (2.124)

• Término de primer orden: (jwτ + 1)±1 (Fig. 2.53).

Figura 2.53: Diagrama de Bode de (a) amplitud y (b) fase para términos de primer orden.

Este término se aproxima a una ası́ntota a bajas frecuencias (wτ << 1 →


jwτ +1 ≈ 1 → 0) y a otras a altas (wτ >> 1 → jwτ +1 ≈ jwτ → 20nlog|jwτ |):

20log10 |(jwτ + 1)n | = 20nlog10 |jwτ + 1| (2.125)


112 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Por tanto, este término añade una linea con pendiente 0 para w << 1/τ y una
linea con pendiente ±1 para w > 1/τ . El punto de ruptura es w = 1/τ ya que
las dos ası́ntotas se cruzan y la curva de magnitud pasa por un factr 1.4 (3dB)
por encima. En el diagrama de fase, se añaden ±90o cuando w > 1/τ .
jw 2 jw
• Término de segundo orden: [( w n
) + 2ξ w n
+ 1]±1 (Fig. 2.54).

Figura 2.54: Diagrama de Bode de (a) amplitud y (b) fase para términos de segundo orden.

Su comportamiento es parecido al anterior pero con algunas diferencias: el


punto de ruptura es w = wn y el cambio de pendiente s +2 (+40 dB/dec) en
el punto de ruptura.

Veamos los Diagramas de Bode del sistema:


20(s + 0.5)
G(s) = (2.126)
s(s + 10)(s + 50)
En el panel 2.55 mostramos la construcción completa analitica de los diagramas
de amplitud (a), fase (b) y una aproximación de la fase (c).
En cambio, MATLAB proporciona un comando para realizar de forma sencilla
esta tarea: bode.m. El resultado de:

 grid
 bode(20*[1 0.5],conv([1 10 0],[1 50]))

se muestra en la Fig. 2.56.

2.5.3 Márgenes de Estabilidad


Veamos cómo trabajar con el concepto de estabilidad mediante los Diagramas
de Bode en un ejemplo concreto. Sea el siguiente sistema con control proporcional
(Fig. 2.57):
2.5 Método de diseño de la respuesta en frecuencia (MRF) 113

Figura 2.55: Diagramas de amplitud (a), fase (b) y una aproximación de la fase (c) para el
20(s+0.5)
sistema G(s) = s(s+10)(s+50) .
114 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Bode Diagrams

From: U(1)
50

-50

Phase (deg); Magnitude (dB)


-100

-20

-40

-60

-80
To: Y(1)

-100

-120

-140

-160

-180

-200
-2 -1 0 1 2 3
10 10 10 10 10 10

Frequency (rad/sec)

20(s+0.5)
Figura 2.56: Diagramas de amplitud (a), fase (b) para el sistema G(s) = s(s+10)(s+50) mediante
bode.m de MATLAB.

1
G(s) = (2.127)
s(s + 1)2

Figura 2.57: Bloque de control proporcional.

Si representamos el LGR y usamos el Criterio de Routh, observamos que el


sistema se hace inestable para K > 2 (el LGR pasa al SPD). Por tanto la condición
de estabilidad es 0 < K < 2 (Fig. 2.58).
Si representamos los Diagramas de Bode para distintos valores de K (Fig. 2.59),
podemos definir dos conceptos muy útiles para estudiar la estabilidad de un sistema:

• Margen de Ganancia. Es el factor para el cual la ganancia es menor que


1
el valor crı́tico: M G = |KG(jw)| . Es la diferencia en magnitud entre cualquier
Bode y el crı́tico (en nuestro caso el correspondiente a K = 2). Si el M G > 0
tenemos un sistema estable y, en caso contrario, inestable.

• Margen de Fase. Es la diferencia en fase respecto a 180o para una frecuencia


concreta.

Mediante Matlab se pueden obtener los valores de MG y MF fácilmente emplean-


do el comando margin, de la siguiente forma:
2.5 Método de diseño de la respuesta en frecuencia (MRF) 115

1
Figura 2.58: Lugar de las raı́ces para els sistema G(s) = s(s+1)2 . Se observa que para K > 2 el
sistema se hace inestable.

 margin([1],conv([1 0],[1 2 1]))

El resultado lo muestra Matlab junto con los Diagramas de Bode correspondientes


(Fig. 2.60).
El Teorema de Bode relaciona la Ganancia y la Fase de Bode estableciendo que
“Para todo sistema estable de fase mı́nima (sin polos o ceros en el semiplano de-
recho), la fase de G(jw) está relacionada únicamente con la magnitud de G(jw)”.
De este teorema se pueden inferir caracterı́sticas de estabilidad ya que si calculamos
|KG(jw)| = 1, tendremos que:

• ∠G(jw) ≈ −90o si n = −1.

• ∠G(jw) ≈ −180o si n = −2.

y la estabilidad se asegura con ∠G(jw) > −180o y P M > 0.


Algunas definiciones útiles:

• Frecuencia de cruce, “crossover frequency”. Se trata de la frecuencia


para la cual la ganancia es la unidad (0 dB).

• Vector de Margen. Menor distancia al punto -1 desde el diagrama de Ny-


quist. A pesar de la dificultad de cálculo, da una idea a “primera vista” sobre
la estabilidad del sistema.
116 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

1
Figura 2.59: Diagramas de Bode para el sistema G(s) = s(s+1)2 con K=1.

2.5.4 Criterio de estabilidad de Nyquist


Un Diagrama de Nyquist es una representación de la magnitud frente a la fase y es
útil cuando los Diagramas de Bode son demasiado ambiguos respecto a la estabilidad.
Un Diagrama de Nyquist resulta de evaluar una función de transferencia H(s) para
valores de s definidos por algunos contornos. Si hay polos o ceros dentro del trazado
del contorno, entonces el Diagrama de Nyquist dara una o más vueltas alrededor del
cı́rculo unidad. La función de transferencia de lazo cerrado tiene la forma:
Y (s) KG(s)
= (2.128)
R(s) 1 + KG(s)

La respuesta del lazo cerrado se evalúa mediante:

1 + KG(s) = 0, (2.129)

que es simplemente la respuesta de lazo abierto, KG(s), desplazada hacia la derecha


una unidad. Por tanto 1+KG(S) rodea el origen si y sólo si KG(s) rodea a -1 (ver
2.5 Método de diseño de la respuesta en frecuencia (MRF) 117

Bode Diagrams

Gm=6.0206 dB (at 1 rad/sec), Pm=21.386 deg. (at 0.68233 rad/sec)


50

-50
Phase (deg); Magnitude (dB)

-100

-50

-100

-150

-200

-250

-300
-2 -1 0 1
10 10 10 10

Frequency (rad/sec)

1
Figura 2.60: Diagramas de Bode para el sistema G(s) = s(s+1)2 con K=1 mediante el comando
margin de MATLAB.

Fig.2.67). Podemos definir el contorno que sea todo el semiplano derecho. Si hay
varios rodeos mientras evaluamos la función de transferencia se dice que el sistema
es inestable.
Un rodeo en el sentido de las agujas del reloj de -1 indica la presencia de un cero
en el semiplano derecho mientras que en sentido contrario indica la presencia de un
polo en el semiplano derecho. El número de rodeos en el sentido de las agujas del
reloj es:

N = Z − P. (2.130)

Como el número de polos en el RHP de G(s) es conocido, asumiremos que un


rodeo de -1 indica una raı́z inestable del sistema en lazo cerrado. Por tanto tenemos
que el número de raı́ces en el semiplano derecho es:

Z =N +P (2.131)

Para dibujar el Diagrama de Nyquist debemos seguir los siguientes pasos:

• Dibujar KG(s) para −j∞ ≤ s ≤ +j∞.

• El número de rodeos de -1 será N .

• El número de polos inestables (semiplano derecho) de G(s) será P .

• Calcular el número de raı́ces en lazo cerrado inestables: Z = N + P .


118 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Ejemplos del Diagrama de Nyquist

• EJEMPLO 1. Consideremos el sistema:


1
G(s) = (2.132)
(s + 1)2

El lugar de las raı́ces muestra que el sistema es estable para cualquier valor de
K. El Diagrama de Nyquist se muestra para K = 1 y no encierra a -1. Como
G(s) sólo cruza el eje real negativo en G(s) = 0, nunca cruzará −1/K para
cualquier valor de K positivo.

• EJEMPLO 2. Se considera el sistema:


1
G(s) = , (2.133)
s(s + 1)2

que es estable para valores pequeños de K (Fig. 2.62).


En la Fig. 2.63 mostramos los Diagramas de Bode.
A partir del Diagrama de Nyquist (Fig. 2.64) se puede ver como valores altos
de K provocan dos bucles. El arco infinito en el gráfico de Nyquist se debe al
polo en 0. Si hubiéramos tenido dos polos en s = 0, el cı́rculo hubiera sido de
360o .

• EJEMPLO 3. Consideremos el sistema:


s+1
G(s) = s (2.134)
s( 10 − 1)2

Para valores altos de K se da un rodeo del origen en el sentido contrario a


las agujas del reloj (ver Fig. 2.65), por lo que N = −1. Pero como P = 1
por el polo del semiplano derecho de G(s), Z = 0, y no hay por tanto raı́ces
inestables del sistema. Cuando K es pequeño, N = 1 lo que indica que Z = 2
y por tanto hay dos raı́ces inestables en lazo cerrado.

Estabilidad en el Diagrama de Nyquist

Al igual que en el Diagrama de Bode podemos analizar la estabilidad del sistema


en lazo cerrado en el Diagrama de Nyquist. Veamos cómo se calculan los márgenes
de fase (PM) y amplitud (GM) en estos diagramas en términos de la distancia del
sistema a rodear el punto -1. El margen de ganancia se define como la inversa de
|KG(jw)| cuando el dibujo cruza el eje real negativo. El margen de fase se define
como la diferencia entre la fase de G(jw) y -180o cuando el dibujo cruza el cı́culo
unidad. La Fig. 2.66 ilustra el cálculo gráficamente.
2.5 Método de diseño de la respuesta en frecuencia (MRF) 119

1
Figura 2.61: Planta, LGR, Bode y Nyquist del Ejemplo 1: G(s) = (s+1)2 .
120 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

1
Figura 2.62: Planta del Ejemplo 2: G(s) = s(s+1)2 .

1
Figura 2.63: Diagrama de Bode del Ejemplo 2: G(s) = s(s+1)2 .

Un problema con estas definiciones es que pueden haber varias PM y GM validos;


una solución propuesta es la definición del margen del vector que es la distancia al
punto -1 desde la situación más próxima del gráfico de Nyquist. El “vector margin”
puede ser dificil de calcular pero MATLAB hace esto de forma automática mediante
nyquist.m.

2.5.5 Diagrama de Nichols


El Diagrama de Nichols se define como el lugar de magnitud constante (M) y fase
constante (N) en el diagrama del logaritmo de la magnitud en función de la fase.
El Diagrama de Nichols contiene curvas de magnitud de lazo cerrado y ángulo de
fase constantes. Podemos determinar gráficamente PM y GM, magnitud de pico de
2.5 Método de diseño de la respuesta en frecuencia (MRF) 121

1
Figura 2.64: Diagrama de Nyquist del Ejemplo 2: G(s) = s(s+1)2 .

resonancia, frecuencia del pico de resonancia y ancho de banda del sistema en lazo
cerrado. Todo esto se calcula a partir del sistema en lazo abierto del lugar de G(jw).
Este tipo de diagramas se realizan de forma sencillo con el comando de MATLAB
nichols.m. Mediante la función de Matlab ngrid.m se muestran las lı́neas constantes
de fase y magnitud en un Diagrama de Nichols. En la Fig. 2.68 mostramos un
ejemplo de Diagrama de Nichols para el sistema:
s+1
G(s) = (2.135)
s(s + 3)(s + 5)

2.5.6 Compensación
Compensación en adelanto

La función de transferencia de un compensador por adelanto, recordemos, tiene


la siguiente expresión:

s + T1
D(s) = Kc 1 , 0 < α < 1. (2.136)
s + αT

La Fig. 2.69 muestra el diagrama de Bode de este tipo de compensador. El máximo


adelanto de fase ocurre con:
1
w=√ (2.137)
αT

La compensación por adelanto añade un adelanto de fase en la banda de frecuencias


entre puntos de ruptura (ver Fig. 2.69). Si no tenemos una variación de ganancia
en bajas frecuencias, el compensador añade un adelanto de fase al sistema por lo
122 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

s+1
Figura 2.65: LGR, Bode y Nyquist del Ejemplo 3: G(s) = s
s( 10 −1)2 .
2.5 Método de diseño de la respuesta en frecuencia (MRF) 123

Figura 2.66: Definiciones de los márgenes de estabilidad (PM y GM) sobre un Diagrama de
Nyquist genérico.

que mejora su velocidad de respuesta (aún no siendo estable!). Los compensadores


en adelanto actúan aproximadamente como un compensador PD pero con menor
amplificación de las altas frecuencias.
El diseño de compensadores en adelanto sigue el siguiente protocolo:

• Determinar la ganancia K que satisface el requisito de error estático.

• Con esa K trazar los Diagramas de Bode del sistema no compensado pero con
la ganancia determinada. Evaluar el margen de fase.

• Determinar φm (ángulo de fase en adelanto) necesario para agregarlo al sistema.

• Determinar la frecuencia en que la magnitud del sistema no compensado G1 (jw) =


−20log10 ( √1α ). Esta será la nueva frecuencia de cruce de ganancia.

• Las frecuencias de cruce del compensador por adelanto son: CERO: w = 1/T ,
POLO: w = 1/αT .

• Kc = K/α.

• Verificar el margen de ganancia (GM). Si no se cumple la especificación modi-


ficar la posición del polo/cero.

Continuamos con un ejemplo de diseño de un compensador de adelanto para una


planta con la siguiente función de transferencia:
1
G(s) = (2.138)
s(s + 1)
124 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Figura 2.67: Diagrama de Nyquist de un sistema complejo y definición del margen de vector.
2.5 Método de diseño de la respuesta en frecuencia (MRF) 125

Nichols Charts
From: U(1)
50

Open-Loop Gain (dB)


-50

To: Y(1)
-100

-150

-200
-180 -160 -140 -120 -100 -80 -60

Open-Loop Phase (deg)

s+1
Figura 2.68: Ejemplo de Diagrama de Nichols para el sistema en l.a. G(s) = s(s+3)(s+5) .

Figura 2.69: Diagrama de Bode del compensador en adelanto para α = 0.1 Kc = 1.

Se nos pide que el sistema en lazo cerrado tenga un error en estado estacionario
menor del 10% ante una entrada rampa y un sobreimpulso Mp < 25%.
El error en estado estacionario viene dado por:
1
(∞) = lim = s R(s), (2.139)
s→∞ 1 + D(s)G(s)

donde R(s) = 1/s2 para la rampa unitaria, con lo que la expresión se reduce a:
1 1 1
(∞) = lim = 1 = D(0) = K α , 0 < α < 1. (2.140)
s→∞ s + D(s) s+1 c

Podemos elegir K = 10 para conseguir el error estacionario deseado (10% = 0.1).


Además, conociendo la relación entre el margen de fase y el sobreimpulso (sinφ =
126 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

1−α √
1+α ,wm = 1/ αT , Mp ≈ 2sin(P1 M/2) ), podemos concluir que necesitamos un
PM=45o para conseguir los requerimientos (Fig. 2.70). Ahora sólo queda expe-
rimentar con algunos valores de α y T para conseguir el compensador deseado:
s
2 +1
D(s) = 10 s (2.141)
10 + 1

Figura 2.70: Diagramas de Bode para el sistema sin compensar (trazo continuo) y compensado
(trazo discontinuo) mediante red de adelanto.

Compensador PD

El Compensador PD (Control Proporcional Derivativo) es una versión simplifi-


cada del compensador en adelanto. Su función de transferencia es:

D(s) = K(1 + TD s). (2.142)

Se comporta como un filtro pasa alta y se emplea situando z = −1/TD de forma que
el adelanto de fase se da cerca de wc , es decir, donde |D(s)G(s)| = 1, de forma que
aumente la ganancia (Fig. 2.71).
La magnitud del compensador continúa creciendo con la frecuencia. Esto no es
deseable ya que amplifica el ruido de alta frecuencia que está siempre presente en los
problemas reales. Esto ocurre para w > 1/TD .
2.5 Método de diseño de la respuesta en frecuencia (MRF) 127

Figura 2.71: Diagrama de Bode del Compensador PD.

Compensación en atraso

Un controlador en atraso tiene la forma:

Ts + 1
D(s) = K , (2.143)
αT s + 1

donde ahora α es mayor que 1. La Fig. 2.72 muestra el diagrama de Bode de este
tipo de compensador.
La compensación por atraso aumenta la magnitud en frecuencias por debajo de
los dos puntos de ruptura y por tanto disminuye los errores en estado estacionario.
Básicamente se trata de un filtro pasa–baja ya que las frecuencias bajas se mantienen
inalteradas y las altas son atenuadas.
El diseño de compensadores en atraso sigue el siguiente protocolo:

• Determinar la ganancia K que satisface el requisito de errors estático.

• Si el sistema no compensado G1 (jw) = KG(jw) no satisface las especificacio-


nes de PM y GM, hallar el punto de frecuencias donde φm de la función de
transferencia en l.a. es −180o + P Mrequerido . El P Mrequerido es el especificado
más 5o a 12o . Estos grados adicionales compensan el atraso de fase del contro-
lador. Elegir esta frecuencia como nueva frecuencia de cruce de ganancia.
128 Capı́tulo 2. Introducción a los Sistemas Continuos de Control

Figura 2.72: Diagramas de Bode de un compensador de atraso.

• El polo y el cero del compensador se deben poner por debajo de la nueva


frecuencia de cruce de ganancia:

w = |1/T | < |wc /8| a |wc /10| (2.144)

• Determinar la atenuación necesaria para bajar la curva de magnitud a 0 dB


en la nueva frecuencia de cruce de ganancia. Esta atenuación es de −20log10 α.
Halla α.

• Kc = K/α.

• Verificar el margen de ganancia (GM). Si no se cumple la especificación modi-


ficar la posición del polo/cero.

Compensador PI

El compensador de control proporcional integral es una versión simplificada del


compensador en atraso y actúa como un filtro pasa baja. Su función de transferencia
es:

1 K 1
D(s) = K(1 + ) = (s + ) (2.145)
TI s s TI
El aspecto deseado de este compensador es la ganancia ∞ a frecuencia nula que
reduce el error estático. Esto se consigue con el coste de un decrecimiento de la
2.5 Método de diseño de la respuesta en frecuencia (MRF) 129

fase por debajo del punto de ruptura w = 1/TI . Por tanto, este punto se sitúa
normalmente a una frecuencia menor que la de cruce para que el PM no quede
afectado mucho. La Fig. 2.73 muestra el efecto de un compensador integral.

Figura 2.73: Diagrama de Bode de un Compensador Integral (PI).


130 Capı́tulo 2. Introducción a los Sistemas Continuos de Control
Capı́tulo 3

Toolbox de Control

E STE tema revisamos las funciones más útiles que contiene la Toolbox de Control
de Matlab 5.3 (Mathworks, 1997).

3.1 Organización del paquete de Control


La Toolbox de Control es un conjunto de funciones que facilitan la tarea de
diseñar compensadores, modelar sistemas SLIT, simular la dinámica de los siste-
mas, sus respuestas temporales y frecuenciales ası́ como el trabajar en tiempo con-
tinuo/discreto, espacio de estados, etc.
Las partes esenciales para nuestros intereses son:

Creation of LTI models.


tf - Create a transfer function model.
zpk - Create a zero/pole/gain model.
ss - Create a state-space model.
dss - Create a descriptor state-space model.
frd - Create a frequency response data model.
filt - Specify a digital filter.
set - Set/modify properties of LTI models.
ltimodels - Detailed help on various types of LTI models.
ltiprops - Detailed help on available LTI properties.

Overloaded arithmetic operations.


+ and - - Add and subtract LTI systems (parallel connection).
* - Multiply LTI systems (series connection).
\ - Left divide -- sys1\sys2 means inv(sys1)*sys2.
/ - Right divide -- sys1/sys2 means sys1*inv(sys2).
^ - LTI model powers.
’ - Pertransposition.
.’ - Transposition of input/output map.
132 Capı́tulo 3. Toolbox de Control

[..] - Concatenate LTI models along inputs or outputs.


stack - Stack LTI models/arrays along some array dimension.
inv - Inverse of an LTI system.

Model dynamics.
pole, eig - System poles.
zero - System (transmission) zeros.
pzmap - Pole-zero map.
dcgain - D.C. (low frequency) gain.
norm - Norms of LTI systems.
covar - Covariance of response to white noise.
damp - Natural frequency and damping of system poles.
esort - Sort continuous poles by real part.
dsort - Sort discrete poles by magnitude.

Time response.
ltiview - Response analysis GUI (LTI Viewer).
step - Step response.
impulse - Impulse response.
initial - Response of state-space system with given initial state.
lsim - Response to arbitrary inputs.
gensig - Generate input signal for LSIM.
stepfun - Generate unit-step input.

Frequency response.
ltiview - Response analysis GUI (LTI Viewer).
bode - Bode plot of the frequency response.
sigma - Singular value frequency plot.
nyquist - Nyquist plot.
nichols - Nichols chart.
margin - Gain and phase margins.
freqresp - Frequency response over a frequency grid.
evalfr - Evaluate frequency response at given frequency.

System interconnections.
append - Group LTI systems by appending inputs and outputs.
parallel - Generalized parallel connection (see also overloaded +).
series - Generalized series connection (see also overloaded *).
feedback - Feedback connection of two systems.
lft - Generalized feedback interconnection (Redheffer star product).
connect - Derive state-space model from block diagram description.

Classical design tools.


rltool - Root locus design GUI
rlocus - Evans root locus.
3.2 Funciones esenciales 133

rlocfind - Interactive root locus gain determination.


acker - SISO pole placement.
place - MIMO pole placement.
estim - Form estimator given estimator gain.
reg - Form regulator given state-feedback and estimator gains.

3.2 Funciones esenciales


En esta sección se enuncian y describen las funciones básicas de la Toolbox de
Control. El formato usado por dicho paquete de funciones consiste en representar
los polinomios de las funciones de transferencia como vectores fila conteniendo sus
coeficientes; para representar una función de transferencia se usan dos de éstos vec-
tores, uno para el numerador (num) y el otro para el denominador (den). Ası́, una
función de transferencia como:
3s2 + 6s + 7
G(s) = (3.1)
s3 − 4.2s + 8
se introducirı́a haciendo:

num = [3 6 7];
den = [1 0 -4.2 8];

o mejor aún:

num = [0 3 6 7];
den = [1 0 -4.2 8];

porque, aún cuando para la mayorı́a de las funciones de la Toolbox no es necesario


que numerador y denominador tengan la misma longiud como vectores, alguna de
ellas lo comprueba, debido al uso interno de la Toolbox de Procesado de Señales
(signal), que sigue otra convención. En el caso de que haya que introducir funciones
que vienen descompuestas en factores, como:

3s2 + 6s + 7
G(s) = , (3.2)
(s + 2)(s2 + 2s + 1)

se puede multiplicar a mano o usar el comando conv, que multiplica polinomios


(convolución de secuencias), haciendo:

num = [0 3 6 7];
den = conv([1 2],[1 2 1]);
134 Capı́tulo 3. Toolbox de Control

Funciones para la conversión de modelos


residue
Objetivo Descomposición en fracciones simples.
Sinópsis [r,p,k] = residue(num,den)
Descripción Los vectores num y den son los coeficientes del numerador y denominador
respectivamente, ordenados de forma decreciente respecto las potencias
de la variable. El vector columna r alamcena los restos, el p la localiza-
ción de los polos y el vector fila k almacena el cociente directo.
Ver La operación [num,den] = residue(r,p,k) realiza la operación con-
traria.
tf2zp
Objetivo Conversión de la función de transferencia a la forma ganancia–ceros–
polos.
Sinópsis [z,p,k] = tf2zp(num,den)
Descripción tf2zp encuentra los ceros, polos y la ganancia de una función de transfe-
rencia en forma polinómica. Los vectores columna z y p almacenan las
posiciones respectivas de ceros y polos. k almacena la ganancia.
Ver zp2tf
zp2tf
Objetivo Conversión de la forma cero–polo–ganancia a la función de transferencia.
Sinópsis [num, den] = zp2tf(z,p,k)
Descripción zp2tf construye una función de transferencia en forma polinomial a partir
de los ceros, polos y ganancia del sistema en forma polinomial. Los
vectores p, z y k contienen la misma información que la función anterior.
Los coeficientes del denominador y numerador se almacena en den y num,
respectivamente.
Ver tf2zp
3.2 Funciones esenciales 135

Funciones para el estudio de la respuesta temporal


impulse
Objetivo Respuesta al impulso unidad.
Sinópsis [y,x,t] = impulse(num,den), [y,x,t] = impulse(num,den,t)
Descripción Calcula la respuesta al impulso unidad de un sistema lineal continuo. Si
se indica t, este vector hace referencia al vector de tiempos en que se
calcula dicha respuesta. La función devuelve la respuesta del sistema y la
matriz de estados, respectivamente, evaluados en los puntos t. Cuando
se llama sin la parte izquierda, simplemente dibuja la respuesta en una
figura.
Ver lsim, step.
lsim
Objetivo Simulación de sistemas continuos con entradas arbitrarias.
Sinópsis [y,x] = lsim(num,den,u,t)
Descripción La función simula sistemas contiuos con entrada arbitraria u hasta un
instante t. El vector y es la respuesta del sistema y x es la matriz de
estados. Cuando se llama sin la parte izquierda, simplemente dibuja la
respuesta en una figura.
Ver impulse, step
step
Objetivo Respuesta al escalón unidad.
Sinópsis [y,x,t] = step(num,den), [y,x,t] = step(num,den,t)
Descripción Calcula la respuesta al escalón unidad de un sistema lineal continuo. Si
se indica t, este vector hace referencia al vector de tiempos en que se
calcula dicha respuesta. La función devuelve la respuesta del sistema y la
matriz de estados, respectivamente, evaluados en los puntos t. Cuando
se llama sin la parte izquierda, simplemente dibuja la respuesta en una
figura.
Ver lsim, impulse
136 Capı́tulo 3. Toolbox de Control

Funciones para el estudio de la respuesta frecuencial


bode
Objetivo Muestra la respuesta en frecuencia (diagrama de Bode).
Sinópsis [mag,phase,w] = bode(num,den)
Descripción Esta función calcula la magnitud y la fase de la respuesta en frecuencia
de sistemas lineales continuos. El vector w contiene las frecuencias en
rad/s en las cuales la respuesta del sistema es calculada. Si no se pasa, se
elige logarı́tmicamente espaciado en un rango apropiado, y es devuelto
por la función. Cuando se llama sin la parte izquierda, simplemente
dibuja la respuesta en una figura.
Ver margin, nichols, nyquist
margin
Objetivo Calcula los márgenes de ganancia y fase.
Sinópsis [Gm,Pm,Wcp,Wcg] = margin(mag,phase,w), [Gm,Pm,Wcp,Wcg] =
margin(num,den)
Descripción Esta función calcula el margen de fase (Pm), margen de ganancia (Gm),
y las frecuencias de corte asociadas (Wcp, Wcg), a partir de la respuesta
en frecuenca de Bode o de la función de transferencia. Cuando se llama
sin la parte izquierda dibuja la respuesta en la pantalla, situando lı́neas
verticales en los puntos de corte interesantes, y dando numéricamente
los valores de los márgenes en el tı́tulo de la figura.
Ver bode, nichols, nyquist
ngrid
Objetivo Dibuja las lı́neas del Diagrama de Nichols.
Sinópsis ngrid, ngrid(‘new’)
Descripción Esta función genera las lı́neas de un diagrama de Nichols para una región
entre -40dB y +40dB de magnitud y -360 a 0 grados de fase. Son lı́neas de
H H
magnitud mag( 1+H ) y fase constante angle( 1+H ), siendo H un número
complejo. Con la opción ‘new’ se borran los gráficos anteriores.
Ver nichols
nichols
Objetivo Dibuja la respuesta en frecuencia de Nichols.
Sinópsis [mag,phase,w] = nichols(num,den), [mag,phase,w] =
nichols(num,den,w)
Descripción Esta función calcula la magnitud y fase de la respuesta en frecuencia
de Nichols de sistemas lineales continuos. w se comporta com en los
casos anteriores (mirar bode). Cuando se llama sin la parte izquierda,
simplemente dibuja la respuesta en una figura.
Ver bode, margin, nyquist
nyquist
Objetivo Dibuja la respuesta en frecuencia de Nyquist.
Sinópsis [re,im,w] = nyquist(num,den)
Descripción Esta función calcula la magnitud y fase de la respuesta en frecuencia de
Nyquist de sistemas lineales continuos. Los vectores re e im almacenan
la parte real e imaginaria de la respuesta para cada punto a lo largo del
camino de Nyquist. w se comporta com en los casos anteriores (mirar
bode). Cuando se llama sin la parte izquierda, simplemente dibuja la
respuesta en una figura.
Ver bode, margin, nichols
3.2 Funciones esenciales 137

Propiedades de los modelos


dcgain
Objetivo Calcula la ganancia estática (DC) del sistema continuo.
Sinópsis k = dcgain(num,den)
Descripción Calcula el lı́mite cuando s → 0 de la función de transferencia dad como
polinomios de s.
Ver bode
timespec
Objetivo Muestra por pantalla los parámetros relevantes de la respuesta transito-
ria del sistema.
Sinópsis timespec(num,den)
Descripción Imprime en la pantalla el tiempo de pico (tp ), porcentaje de sobrenivel
(Mp ), tiempo de subida (tr ) y tiempo de establecimiento (ts ).
printsys
Objetivo Muestra por pantalla el sistema dado en forma de fracción.
Sinópsis printsys(num,den,’s’)
Descripción Imprime la función de transferencia como una fracción.
138 Capı́tulo 3. Toolbox de Control

Construcción de los modelos


parallel
Objetivo Conexión en paralelo de dos sistemas.
Sinópsis [num,den] = parallel(num1,den1,num2,den2)
Descripción Esta función calcula la función de transferencia polinomial de dos siste-
mas en paralelo tanto para sistemas continuos como discretos.
Ver feedback, series
series
Objetivo Conexión en serie de dos sistemas.
Sinópsis [num,den] = series(num1,den1,num2,den2)
Descripción Esta función calcula la función de transferencia polinomial de dos siste-
mas en serie tanto para sistemas continuos como discretos.
Ver cloop, feedback, parallel
feedback
Objetivo Conexión retroalimentada de dos sistemas.
Sinópsis [num,den] = parallel(num1,den1,num2,den2), [num,den] =
parallel(num1,den1,num2,den2,sign)
Descripción Esta función calcula la función de transferencia polinomial de dos siste-
mas en retroalimentación tanto para sistemas continuos como discretos.
Aquı́ se supone realimentación unitaria. sign se usa para indicar el
signo de realimentación: vale 1 si es positiva y -1 si es negativa (por
defecto es -1). Normalmente el sistema 1 es la planta y el sistema 2 es
el controlador.
Ver parallel, series
ord2
Objetivo Genera sistemas de segundo orden.
Sinópsis [num,den] = ord2(wn ,ξ)
Descripción Devuelve la función de transferencia de un sistema de segundo orden con
dos parámetros dados: la variable ξ que es el coeficiente de atenuación
y wn que es la frecuencia natural.
minreal
Objetivo Realización mı́nima y cancelación de polos y ceros.
Sinópsis [num,den] = minreal(num,den), [num,den] =
minreal(num,den,tol)
Descripción Esta es la única función que existe para cancelar polos y ceros comunes
o muy próximos cuya influencia en el comportamiento transitorio del
sistema se compensa y, por tanto, pueden ser despreciados a casi todos
los efectos. De todos modos, no deberı́an tratar de cancelarse polos y cers
situados en regiones inestables. Esta función cancela las raı́ces comunes
del numerador y denominador de la función de transferencia que están
a una distancia menor que cierta tolerancia, tol, una de otra.
3.2 Funciones esenciales 139

Funciones para el análisis del Lugar de la Raı́ces


pzmap
Objetivo Dibuja el diagrama de polos y ceros del sistema.
Sinópsis [p,z] = pzmap(num,den)
Descripción Esta función devuelve dos vectores, p y z, conteniendo respectivamente
la localización de los polos (raı́ces del denominador) y ceros (raı́ces del
numerador) de la función de transferencia dada. Llamando sin argun-
mentos a la parte izquierda, dibuja los polos como cruces y los ceros
como cı́rculos en un plano-s.
Ver rlocus, sgrid
rlocus
Objetivo Lugar de las raı́ces de Evans.
Sinópsis r = rlocus(num,den), r = rlocus(num,den,k)
Descripción Esta función obtiene el LGR de un sistema SISO. El vector r contiene la
localización de las raı́ces. El vector k es el vector de ganancia proporcio-
nado por el usuario, que se elige apropiadamente si no se pasa. Cuando
se llama sin la parte izquierda, la función dibuja el LGR en una figura.
Ver pzmap
sgrid
Objetivo Dibuja lı́neas del coeficiente de atenuación y frecuencia natural constante
para el LGR y diagramas de polos y ceros en el plano continuo.
Sinópsis sgrid, sgrid(‘new’)
Descripción Genera las lı́neas de atenuación constante de ξ desde 0 hasta 1 en pasos
de 0.1, y frecuencia natural normalizada wn desde 0 hasta π en pasos de
π
10 . sgrid(‘new’) borra los gráficos de la pantalla antes de dibujar la
rejilla y establece el modo hold on para que el lugar de las raı́ces o el
diagrama de ceros y polos pueda dibujarse encima.
Ver rlocus, pzmap
140 Capı́tulo 3. Toolbox de Control

3.3 Demostraciones ilustrativas


En cualquier paquete anexo de funciones de Matlab existen dos ordenes básicas
para tener acceso a información adicional sobre las caracterı́sticas de la misma: help
< nombre toolbox > y demo. El primero muestra una breve descripción de cada
función de la toolbox en cuestión mientras que la segunda es una acceso a todas las
demostraciones instaladas junto con el paquete estándar de Matlab.
Si nos fijamos en el contenido de contents tenemos las siguientes demostraciones:
Demonstrations.
ctrldemo - Introduction to the Control System Toolbox.
jetdemo - Classical design of jet transport yaw damper.
diskdemo - Digital design of hard-disk-drive controller.
milldemo - SISO and MIMO LQG control of steel rolling mill.
kalmdemo - Kalman filter design and simulation.

El caso de las demos “visuales” de la Toolbox de Control tenemos las siguientes:


Model analysis example
Digital Control of a Disk drive
Command Line demos

Todas las Toolbox de Matlab llevan una ayuda muy extensa tanto en HTML como
en PDF que podemos encontrar en c:\Matlab\help\html_doc y en c:\Matlab\
help\pdf_doc. En cualquier caso, podemos emplear el comando help para conseguir
ayuda de cualquier función. Por ejemplo:

 help rlocus

RLOCUS Evans root locus.

RLOCUS(SYS) computes and plots the root locus of the single-input,


single-output LTI model SYS. The root locus plot is used to
analyze the negative feedback loop

+-----+
---->O----->| SYS |----+---->
-| +-----+ |
| |
| +---+ |
+-------| K |<----+
+---+

and shows the trajectories of the closed-loop poles when the feedback
gain K varies from 0 to Inf. RLOCUS automatically generates a set of
positive gain values that produce a smooth plot.
3.4 Herramientas de Control con Matlab en Internet 141

RLOCUS(SYS,K) uses a user-specified vector K of gains.

[R,K] = RLOCUS(SYS) or R = RLOCUS(SYS,K) returns the matrix R


of complex root locations for the gains K. R has LENGTH(K) columns
and its j-th column lists the closed-loop roots for the gain K(j).

See also RLTOOL, RLOCFIND, POLE, ISSISO, LTIMODELS.

Overloaded methods
help lti/rlocus.m
help frd/rlocus.m

3.4 Herramientas de Control con Matlab en Internet


Las ventajas de simulación y control de sistemas complejos en un entorno sencillo
como MATLAB, junto con el rápido desarrollo y expansión de la red de ordenadores
ha permitido el intercambio de ficheros, demostraciones, aplicaciones alternativas,
referencias, etc. En esta sección reseñamos algunas de las direcciones más ilustrativas
de esto que decimos:

• Control Tutorials for Matlab: http://www.engin.umich.edu/group/ctm/


• CCSDEMO for Matlab 5 y Matlab/Simulink macros: http://www.control.
lth.se/~kursdr/tools.html
• Sitio Web de Mathworks: http://www.mathworks.com
• Libros de Control de Procesos: http://www-europe.mathworks.com/books
• PID Tuning, Analysis, and Simulation Software: http://www.expertune.com/
• Laboratorio Virtual de Control de la Universidad de Bochum (Alemania):
http://www.esr.ruhr-uni-bochum.de/VCLab/
• Course on Fuzzy and Neural Control : http://lcewww.et.tudelft.nl/~babuska/
• DISC Group: http://www.disc.tudelft.nl/
• Exploring the s-Plane: http://www.jhu.edu/~signals/explore/index.html
• The Joy of Convolution: http://www.jhu.edu/~signals/convolve/index.html
• Representación frecuencial de dos polo/ceros: http://www-hadoc.ensieg.
inpg.fr/hadoc/continu/n06/r06-03.htm
• Para curiosos: http://www.esr.ruhr-uni-bochum.de/cacsd/teachware/projects.
html
142 Capı́tulo 3. Toolbox de Control
Capı́tulo 4

Introducción al Entorno
Simulink
Quick Start
Running a Demo Model . . . . . . . . . . . . . . . 2-2
Description of the Demo . . . . . . . . . . . . . . . . 2-3
Some Things to Try . . . . . . . . . . . . . . . . . . 2-4
What This Demo Illustrates . . . . . . . . . . . . . . 2-5
Other Useful Demos . . . . . . . . . . . . . . . . . 2-5

Building a Simple Model . . . . . . . . . . . . . . 2-6


2 Quick Start

Running a Demo Model


An interesting demo program provided with Simulink models the
thermodynamics of a house. To run this demo, follow these steps:

1 Start MATLAB. See your MATLAB documentation if you’re not sure how to
do this.

2 Run the demo model by typing thermo in the MATLAB command window.
This command starts up Simulink and creates a model window that contains
this model.

When you open the model, Simulink opens a Scope block containing two plots
labeled Indoor vs. Outdoor Temp and Heat Cost ($), respectively.

3 To start the simulation, pull down the Simulation menu and choose the
Start command (or, on Microsoft Windows, press the Start button on the
Simulink toolbar). As the simulation runs, the indoor and outdoor
temperatures appear in the Indoor vs. Outdoor Temp plot and the
cumulative heating cost appears in the Heat Cost ($) plot.

2-2
4 To stop the simulation, choose the Stop command from the Simulation
menu (or press the Pause button on the toolbar). If you want to explore other
parts of the model, look over the suggestions in “Some Things to Try” on page
2-4.

5 When you’re finished running the simulation, close the model by choosing
Close from the File menu.

Description of the Demo


The demo models the thermodynamics of a house using a simple model. The
thermostat is set to 70 degrees Fahrenheit and is affected by the outside
temperature, which varies by applying a sine wave with amplitude of 15
degrees to a base temperature of 50 degrees. This simulates daily temperature
fluctuations.
The model uses subsystems to simplify the model diagram and create reusable
systems. A subsystem is a group of blocks that is represented by a Subsystem
block. This model contains five subsystems: one named Thermostat, one named
House, and three Temp Convert subsystems (two convert Fahrenheit to
Celsius, one converts Celsius to Fahrenheit).
The internal and external temperatures are fed into the House subsystem,
which updates the internal temperature. Double-click on the House block to
see the underlying blocks in that subsystem.

House subsystem

2-3
2 Quick Start

The Thermostat subsystem models the operation of a thermostat, determining


when the heating system is turned on and off. Double-click on the block to see
the underlying blocks in that subsystem.

Thermostat subsystem

Both the outside and inside temperatures are converted from Fahrenheit to
Celsius by identical subsystems

Fahrenheit to Celsius conversion (F2C)

When the heat is on, the heating costs are computed and displayed on the Heat
Cost ($) plot on the Thermo Plots Scope. The internal temperature is displayed
on the Indoor Temp Scope.

Some Things to Try


Here are several things to try to see how the model responds to different
parameters:

• Each Scope block contains one or more signal display areas and controls that
enable you to select the range of the signal displayed, zoom in on a portion of
the signal, and perform other useful tasks. The horizontal axis represents
time and the vertical axis represents the signal value. For more information
about the Scope block, see Chapter 8.
• The Constant block labeled Set Point (at the top left of the model) sets the
desired internal temperature. Open this block and reset the value to 80
degrees while the simulation is running. See how the indoor temperature
and heating costs change. Also, adjust the outside temperature (the Avg
Outdoor Temp block) and see how it affects the simulation.
• Adjust the daily temperature variation by opening the Sine Wave block
labeled Daily Temp Variation and changing the Amplitude parameter.

2-4
What This Demo Illustrates
This demo illustrates several tasks commonly used when building models:

• Running the simulation involves specifying parameters and starting the


simulation with the Start command, described in detail in Chapter 4.
• You can encapsulate complex groups of related blocks in a single block, called
a subsystem. Creating subsystems is described in detail in Chapter 3.
• You can create a customized icon and design a dialog box for a block by using
the masking feature, described in detail in Chapter 6. In the thermo model,
all Subsystem blocks have customized icons created using the masking
feature.
• Scope blocks display graphic output much as an actual oscilloscope does.
Scope blocks are described in detail in Chapter 8.

Other Useful Demos


Other demos illustrate useful modeling concepts. You can access these demos
from the Simulink block library window:

1 Type simulink3 in the MATLAB command window. The Simulink block


library window appears.

The Demos icon

2 Double-click on the Demos icon. The MATLAB Demos window appears. This
window contains several interesting sample models that illustrate useful
Simulink features.

2-5
2 Quick Start

Building a Simple Model


This example shows you how to build a model using many of the model building
commands and actions you will use to build your own models. The instructions
for building this model in this section are brief. All of the tasks are described
in more detail in the next chapter.
The model integrates a sine wave and displays the result, along with the sine
wave. The block diagram of the model looks like this.

To create the model, first type simulink in the MATLAB command window. On
Microsoft Windows, the Simulink Library Browser appears.

On UNIX, the Simulink library window appears.

2-6
Building a Simple Model

To create a new model on UNIX, select Model from the New submenu of the
Simulink library window’s File menu. To create a new model on Windows,
select the New Model button on the Library Browser’s toolbar.

New Model button

Simulink opens a new model window.

You might want to move the new model window to the right side of your screen
so you can see its contents and the contents of block libraries at the same time.
To create this model, you will need to copy blocks into the model from the
following Simulink block libraries:

• Sources library (the Sine Wave block)


• Sinks library (the Scope block)
• Continuous library (the Integrator block)
• Signals & Systems library (the Mux block)

You can copy a Sine Wave block from the Sources library, using the Library
Browser (Windows only) or the Sources library window (UNIX or Windows).

2-7
2 Quick Start

To copy the Sine Wave block from the Library Browser, first expand the
Library Browser tree to display the blocks in the Sources library. Do this by
clicking first on the Simulink node to display the Sources node, then on the
Sources node to display the Sources library blocks. Finally click on the Sine
Wave node to select the Sine Wave block. Here is how the Library Browser
should look after you have done this.

Simulink library

Sources library

Sine Wave block

Now drag the Sine Wave node from the browser and drop it in the model
window. Simulink creates a copy of the Sine Wave block at the point where you
dropped the node icon.
To copy the Sine Wave block from the Sources library window, open the Sources
window by double-clicking on the Sources icon in the Simulink library window.
(On Windows, you can open the Simulink library window by right-clicking the

2-8
Building a Simple Model

Simulink node in the Library Browser and then clicking the resulting Open
Library button.) Simulink displays the Sources library window.

The Sine Wave block

Now drag the Sine Wave block from the Sources window to your model window.

Copy the rest of the blocks in a similar manner from their respective libraries
into the model window. You can move a block from one place in the model
window to another by dragging the block. You can move a block a short distance
by selecting the block, then pressing the arrow keys.

2-9
2 Quick Start

With all the blocks copied into the model window, the model should look
something like this.

If you examine the block icons, you see an angle bracket on the right of the Sine
Wave block and two on the left of the Mux block. The > symbol pointing out of
a block is an output port; if the symbol points to a block, it is an input port. A
signal travels out of an output port and into an input port of another block
through a connecting line. When the blocks are connected, the port symbols
disappear.

Input port Output port

Now it’s time to connect the blocks. Connect the Sine Wave block to the top
input port of the Mux block. Position the pointer over the output port on the
right side of the Sine Wave block. Notice that the cursor shape changes to cross
hairs.

Hold down the mouse button and move the cursor to the top input port of the
Mux block. Notice that the line is dashed while the mouse button is down and
that the cursor shape changes to double-lined cross hairs as it approaches the
Mux block.

2-10
Building a Simple Model

Now release the mouse button. The blocks are connected. You can also connect
the line to the block by releasing the mouse button while the pointer is inside
the icon. If you do, the line is connected to the input port closest to the cursor’s
position.

If you look again at the model at the beginning of this section (see “Building a
Simple Model” on page 2-6), you’ll notice that most of the lines connect output
ports of blocks to input ports of other blocks. However, one line connects a line
to the input port of another block. This line, called a branch line, connects the
Sine Wave output to the Integrator block, and carries the same signal that
passes from the Sine Wave block to the Mux block.
Drawing a branch line is slightly different from drawing the line you just drew.
To weld a connection to an existing line, follow these steps:

1 First, position the pointer on the line between the Sine Wave and the Mux
block.

2 Press and hold down the Ctrl key. Press the mouse button, then drag the
pointer to the Integrator block’s input port or over the Integrator block itself.

2-11
2 Quick Start

3 Release the mouse button. Simulink draws a line between the starting point
and the Integrator block’s input port.

Finish making block connections. When you’re done, your model should look
something like this.

Now, open the Scope block to view the simulation output. Keeping the Scope
window open, set up Simulink to run the simulation for 10 seconds. First, set
the simulation parameters by choosing Parameters from the Simulation
menu. On the dialog box that appears, notice that the Stop time is set to 10.0
(its default value).

Stop time parameter

2-12
Building a Simple Model

Close the Simulation Parameters dialog box by clicking on the Ok button.


Simulink applies the parameters and closes the dialog box.
Choose Start from the Simulation menu and watch the traces of the Scope
block’s input.

The simulation stops when it reaches the stop time specified in the Simulation
Parameters dialog box or when you choose Stop from the Simulation menu.
To save this model, choose Save from the File menu and enter a filename and
location. That file contains the description of the model.
To terminate Simulink and MATLAB, choose Exit MATLAB (on a Microsoft
Windows system) or Quit MATLAB (on a UNIX system). You can also type
quit in the MATLAB command window. If you want to leave Simulink but not
terminate MATLAB, just close all Simulink windows.
This exercise shows you how to perform some commonly used model-building
tasks. These and other tasks are described in more detail in Chapter 3.

2-13
144 Capı́tulo 4. Introducción al Entorno Simulink
Capı́tulo 5

Prácticas
146 Capı́tulo 5. Prácticas

Práctica 0
Ejemplos sencillos, cuestiones y demos.

En esta primera práctica se proponen (y en algunos casos se proporciona la


solución) algunos problemas sencillos en el manejo de comandos de la Toolbox de
Control. Su uso será más exhaustivo en las prácticas posteriores.

1. Ejemplo 1. Descomponer en fracciones simples el sistema:

3s2 + 4s + 5
G(s) = , (5.1)
2s2 + 2s + 3

 [r,p,k]=residue([3 4 5],[2 2 3])

2. Ejemplo 2. Representa en una misma figura las respuestas del sistema ante-
rior al impulso, el escalón unitario, rampa unitaria y la función ‘sinc’ hasta un
tiempo t = 10.

subplot(221),grid,impulse([3 4 5],[2 2 3],10),title(’Resp. Impulso’)


subplot(222),grid,step([3 4 5],[2 2 3],10),title(’Resp. Escalón’)
subplot(223),grid,lsim([3 4 5],[2 2 3],0:10,0:10),title(’Resp. Rampa’)
subplot(224),grid,lsim([3 4 5],[2 2 3],sinc(0:10),0:10),title(’Resp. Sinc’)

3. Ejemplo 3. Representa la respuesta en frecuencia del sistema anterior.

4. Ejemplo 4. Calcula la ganancia estática del sistema anterior.

>> dcgain([3 4 5],[2 2 3])

5. Ejemplo 5. Dibuja la respuesta en frecuencia de Nichols del sistema, repre-


sentando el grid correspondiente:

3s8 + 1.44s5 + 5s + 3
G(s) = , (5.2)
(1.44s + 2.2)(4s7 + 2.44s4 + 3.3s3 + 3)

>> ngrid,
>> nichols([3 0 0 1.44 0 0 0 5 3],
>> conv([1.44 2.2],[4 0 0 2.44 3.3 0 0 3]))
147

Resp. Impulso Resp. Escalón


From: U(1) From: U(1)
0.6 1.9

0.4 1.8

Amplitude

Amplitude
To: Y(1)

To: Y(1)
0.2 1.7

0 1.6

-0.2 1.5
0 2 4 6 8 10 0 2 4 6 8 10

Time (sec.) Time (sec.)

Resp. Rampa Resp. Sinc

20 1.5

15 1
Amplitude

Amplitude
To: Y(1)

To: Y(1)
10 0.5

5 0

0 -0.5
0 2 4 6 8 10 0 2 4 6 8 10

Time (sec.) Time (sec.)

Figura 5.1: Respuestas del sistema del ejemplo 01 al impulso, el escalón unitario, rampa unitaria
y la función ‘sinc’ hasta un tiempo t = 10.

6. Ejemplo 6. Dado el sistema de segundo orden que tiene la siguiente función


de transferencia en lazo cerrado:
Y (s) 2
= , (5.3)
X(s) (s + 1)(s + 1)
representar su respuesta ante la entrada escalón con step. Obtener gráficamente
los valores de Ts , Tp , Mp y Tr . Comprobar los valores con timespec.

7. Ejemplo 7. Usando las funciones series, parallel y feedback, obtener la


función de transferencia YR(s)
(s)
del sistema siguiente:

s+1 1
Gc (s) = , G(s) = (5.4)
s+2 500s2

R(s) Y(s)
+ Gc(s) G(s)
-

Figura 5.2: Sistema del ejercicio 07.

8. Ejemplo 8. Encontrar las raı́ces de la ecuación caracterı́stica del sistema de


la figura siguiente. ¿Es estable?
148 Capı́tulo 5. Prácticas

1
G(s) = . (5.5)
s3 + s2 + 2s + 23

>> roots([1 1 2 23])

9. Ejemplo 9. Si la ecuación caracterı́stica de un sistema es:

q(s) = s3 + s2 + 4s + K = 0, (5.6)

encontrar el rango de K en que el sistema es estable.

10. Ejemplo 10. Encuentra el rango de K para que las raı́ces del siguiente polino-
mio estén en el semiplano izquierdo. Comprueba gráficamente los resultados:

q(s) = s5 + 5s4 + 10s3 + 10s2 + 5s + K = 0, (5.7)

11. Ejemplo 11. Generar con la orden ord2 un sistema de segundo orden. Re-
presenta gráficamente su respuesta ante un impulso, el escalón unitario, rampa
unitaria y la función ‘sin’ hasta un tiempo t = 10. Dibujar el diagrama de
polos y ceros usando pzmap.

12. Ejemplo 12. Ejecuta jetdemo.

13. Ejemplo 13. Ejecuta ctrldemo.

14. Ejemplo 14. Ejecuta diskdemo.

15. Ejemplo 15. Ejecuta ltimodels y ltiprops.

16. Ejemplo 16. Obtener el Diagrama de Bode del sistema de control con lazo
de realimentación unitario siguiente:

K
G(s) = , (5.8)
s(s + 2)(s + 50)

para una ganancia K = 1300.

17. Ejemplo 17. Para el sistema en lazo cerrado siguiente:

438
T (s) = , (5.9)
s3 + 52s2 + 100s + 438
se pide:
149

• Obtener la respuesta en frecuencia del sistema.


• Determinar el ancho de banda del sistema.
• Determinar la magnitud del pico de resonancia.

>> K=438;
>> num = [K]
>> den = [1 52 100 K]
>> w = 0:.1:10;
>> [mag,phase] = bode(num,den,w);
>> plot(w,mag),
>> title(’Respuesta de amplitud del sistema en lazo cerrado.’)
>> grid, pause, frqspec(w,mag)

1
18. Ejemplo 18. Para un sistema G(s) = s(s+2) con una ganancia en serie K
y lazo de realimentación unitario, se pide calcular K para que la salida y(t)
tenga un sobrenivel menor del 10% ante la entrada escalón.

19. Ejemplo 19. ¿Qué información proporciona el comando ltimodels?

20. Ejemplo 20. ¿Para qué sirve el comando ltiview? Inspecciona durante unos
instantes sus propiedades.

21. Ejemplo 21. Considera un sistema con los siguientes polos (‘x’) y ceros (‘o’):

Im

1
Re

The system is
Figura 5.3: Diagrama de polos y ceros del ejemplo 21.
a) stable b) unstable c) stability cannot be determined
¿El sistema es estable, inestable o no se puede determinar?
7. For an nth-order system

x(k + 1) = Φx(k) + Γu(k)


y(k) = Cx(k) + Du(k)

the controllability matrix Wc is given by:


   T
a) Wc = Φn b) Wc = Γ ΦΓ ... Φn−1 Γ c) Wc = C CΦ ... CΦn−1

8. A discrete-time system

x(k + 1) = Φx(k) + Γu(k)


150 Capı́tulo 5. Prácticas

Práctica 1
Controladores P/I/D/PID. Compensación dinámica.

A. Retroalimentación P, I, D, PID

Dado el sistema:
1
G(s) = (5.10)
s(s + 1)

• Supón una retroalimentación proporcional Kp . ¿Cuál es el efecto de la retroa-


limentación proporcional sobre el error estacionario? ¿Cuál es el efecto sobre
el tiempo de subida? ¿Y sobre la amortiguación?

• Supón una retroalimentación integral y varı́a K/TI , ¿Cuál es el efecto de la


retroalimentación integral sobre el error estacionario? ¿Qué ocurre con la es-
tabilidad? ¿Y sobre la amortiguación?

• Supón una retroalimentación diferencia. ¿Afecta ésta por sı́ sola al error en
estado estacionario? ¿Y a la estabilidad?

• Supón una retroalimentación PID. Comprobar que Kp y 1/TI crecientes redu-


cen los errores, 1/TI creciente reduce la estabilidad, y TD creciente mejora la
estabilidad.

B. LGR y selección de ganancia (I)

Dado el sistema:
K((s + 1)2 ) + 1
KG(s) = (5.11)
s2 (s + 2)(s + 3)

• Rerpesentar la localización de los polos y ceros de G(s), mostrando el segmento


del LGR sobre el eje real.

• ¿Cuáles son los ángulos de llegada a los ceros complejos y los ángulos de salida
desde los polos?

• ¿Cuáles son las ası́ntotas?

• ¿Cuál es el cruce del LGR con el eje imaginario? Usa el Criterio de Routh para
verificar los puntos de cruce.

• ¿Cuáles son los puntos de ruptura?


151

• Dibuja el LGR completo para K > 0 y comprueba el resultado usando la


función rlocus de MATLAB.

C. LGR y selección de ganancia (II)

Dado el sistema:
K
KG(s) = , (5.12)
s(s2 + 6s + 12)

• Dibuja el LGR completo para K > 0 y comprueba el resultado usando la


función rlocus de MATLAB.

• ¿Cuál es el valor de K en el punto donde las raı́ces complejas en lazo cerrado


tienen un coeficiente de amoriguamiento ξ = 0.5? Usa las funciones rlocfind
y sgrid.

D. Compensación dinámica: redes de adelanto y atraso (I)

Dado el sistema:
K
G(s) = , (5.13)
s(s + 1)

y el compesador:

s+z
D(s) = , (5.14)
s+p

• Estudiar el efecto de una red de adelanto y atraso sobre el LGR y sobre los
parámetros de la respuesta transitoria, para diferentes valores de z, p y z/p.

• Comprobar que un compensador de adelanto reduce el tiempo de subida y el


sobrenivel y uno de atraso mejora la precisión en estado estacionario.

• Recordar que la red de adelanto es una aproximación al control diferencial y


la red de atraso es una aproximación al control integral.

E. Compensación dinámica: redes de adelanto y atraso (II)

Un diagrama de bloques de la posición de un servomecanismo se muestra en la


Figura 5.4.

• Dibuja el LGR en función de K para KT = 0.


152 Capı́tulo 5. Prácticas

R(s) + + Y(s)
K 1 1
s+1 s
- -

KT

Figura 5.4: Sistema del apartado E.

• Indica sobre el LGR obtenido las localizaciones de las raı́ces correspondientes


a K = 4. Para esas localizaciones estima los parámetros de la respuesta tran-
sitoria Tr , Ts y Mp . Comprueba el resultado representado la salida del sistema
ante el escalón unitario y empleando también la función timespec.

• Para K = 4, dibuja el LGR en función de KT .

• Para K = 4 y KT ubicado de modo que Mp = 0.5, o sea ξ = 0.707, estima Tr


y Ts . Comprueba el resultado de las estimaciones.

• Para los parámetros del apartado anterior, ¿cuál es la constante de velocidad


Kv de este sistema?

F. Compensación dinámica: redes de adelanto y atraso (III)

Sea el sistema continuo con función de transferencia en lazo abierto:


4
G(s) = , (5.15)
s(s + 1)

• Obtener la salida ante entrada escalón y los parámetros de la respuesta tran-


sitoria.

• Se pide diseñar un compensador que cumpla las siguientes especificaciones:


constante de tiempo 1.27 sec. (τ = 1.27sec.), tiempo de pico menor de 1.5 sec.
(Tp ≤ 1.5sec.), error de velocidad menor que 1 (ev ≤ 1).

• Obtener analı́ticamente la posición de polo y cero que harı́an al sistema cum-


plirlas. Dibujar las lı́neas de amortiguamiento constante y frecuencia natural
constante que pasan por esos polos (comando sgrid). Dibujar el LGR y decir,
de acuerdo a la deformación que éste deberı́a sufrir, qué tipo de regulador harı́a
falta. ¿Por qué un regulador proporcional no es adecuado?

• Buscar la posición adecuada para el polo y cero, y añadirlos, dibujando de


nuevo el LGR. Comprobar que las especificaciones efectivamente se cumplen.
153

• Obtener la salida ante entrada rampa y el error de velocidad.

• Usar el comando rldesign para obtener los parámetros para controladores


de tipo PI, PD y PID. ¿Qué les ocurre a los PI? ¿Por qué? (Recuérdese la
semejanza entre adelanto de fase–PD y atraso de fase–PI). Obtener para cada
caso la respuesta ante escalón y los parámetros de la respuesta transitoria.
Comprobarlos con el primer regulador diseñado. En el caso de los PD, estudiar
también la respuesta ante entrada ramap y error de velocidad. ¿Cuál se espera
y cuál se obtiene?
154 Capı́tulo 5. Prácticas

Práctica 2
Análisis de la respuesta en frecuencia y diseño de compensadores.

A. Bode, Nichols y Nyquist, Márgenes de fase y de ganancia.

Obtener el diagrama de Bode (magnitud y fase) del sistema de control cuya


función de transferencia en lazo abierto es:
10
GH(s) = (5.16)
s(s + 2)(s + 50)
• Obtener también el diagrama de Nyquist y el de Nichols. Medir gráficamente
sobre estos tres diagramas el MF y el MG. Comprobar el resultado con la orden
margin.

• Estudiar cómo varı́a el Diagrama de Bode y el de Nyquist en función de la


posición, número de ceros y polos de la función de transferencia de un sistema
en lazo abierto.

B. Criterio de estabilidad de Nyquist.

La función de transferencia de un sistema en lazo abierto es:


K(s + 1)
GH(s) = (5.17)
(s − 2)(s − 4)
Obtener el diagrama de Nyquist para K=12, 6 y 4 usando la función nyquist y
determinar si el sistema es estable o no. ¿Qué ocurre para valores K < 6?

C. Diseño en el dominio de la frecuencia.

• Para el sistema con función de transferencia en lazo abierto:


K
G(s) = , (5.18)
s(0.1s + 1)(s + 1)
diseñar un compensador de adelanto Gc (s) tal que el margen de fase sea 45o ,
el margen de ganancia no sea menor de 8dB y el coeficiente de error estático
de velocidad Kv sea 4.0 s−1 . Comprobar que se cumplen las especificaciones
del sistema compensado.

• Para el sistema con función de transferencia en lazo abierto:


8
G(s) = , (5.19)
s(s + 1)(s + 4)
155

diseñar un compesador en atraso (“phase-lag”) tal que el sistema tenga un


margen de fase de 45o y un error en estado estacionario de 0.05 para una entrada
rampa. Usa la funcióon frdesign. Dibujar la respuesta ante la entrada rampa
y comprobar que se cumplen las especificaciones.

• Para el sistema con función de transferencia en lazo abierto:


50
G(s) = , (5.20)
s(s + 1)(s + 4)(s + 5)

se pide:

– Diseñar un controlador PD para que el sistema compensado tenga un


margen de fase de 50o . Comprobar que se cumplen las especificaciones.
– Diseñar un controlador PI para que el sistema compensado tenga un mar-
gen de fase de 50o . Comprobar que se cumplen las especificaciones.
– Diseñar un controlador PID para que el sistema compensado tenga un
margen de fase de 50o . Comprobar que se cumplen las especificaciones.
Elegir KI = 0.01. Usar la función frdesign.
156 Bibliografı́a.
P1. Introducción a los Sistemas de Control (I)

Práctica 3
Introducción a los Sistemas de Control (I)

En esta tercera práctica veremos algunas de las instrucciones básicas que Matlab ofre-
ce para el estudio de los sistemas de control. Además, veremos cómo las caracterı́sticas
dinámicas de un sistema pueden mejorarse mediante su adecuada realimentación.

1. Sistemas de Primer Orden


Los sistemas continuos de primer orden y de coeficientes constantes están descritos
por una ecuación diferencial de la forma ẏ(t)/a + y(t) = u(t), y por tanto su función de
1
transferencia será H1 (s) = s/a+1 , que introduciremos en Matlab haciendo,

a=1
numH1=[1]
denH1=[1/a 1]

Su diagrama de Bode puede obtenerse haciendo,

freqs(numH1, denH1)

o también,

Bode(numH1, denH1)

donde se observan las caı́das de fase y de ganancia de 900 y de −20db/dec (= 1dec/dec)


respectivamente. Su respuesta al escalón unitario es,

step(numH1, denH1)

El equivalente discreto de este sistema puede obtenerse mediante el método del bloquea-
dor de orden cero, con un periodo de muestreo T = 0.1 segundo,

T=0.1
[numH1z, denH1z]=c2dm(numH1, denH1, T, ’zoh’)
y=dstep(numH1z, denH1z);
dstep(numH1z, denH1z)

Para verificar que los sistemas analógico y digital son equivalentes, representamos si-
multáneamente sus respuestas al escalón unitario (fig.1),

step(numH1, denH1)
hold on
plot([0:size(y,1)-1]*T, y,’o’)

Si usamos la transformación bilineal o de Tustin,

1
Bibliografı́a. 157
P1. Introducción a los Sistemas de Control (I)

Respuesta ante 1(t) de H1(s) y H1(z) con ZOH y T=0.1


1

0.9

0.8

0.7

0.6
Amplitude

0.5

0.4

0.3

0.2

0.1

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)

Figura 1: Respuestas ante entrada escalón unitario del sistema de primer orden continuo
y de su discreto equivalente (obtenido con el método del bloqueador de orden cero y un
periodo de muestreo T =0.1 segundo).

[numH1z, denH1z]=c2dm(numH1, denH1, T, ’tustin’)


y=dstep(numH1z, denH1z);
step(numH1, denH1)
hold on
plot([0:size(y,1)-1]*T, y,’o’)

2. Sistemas de Segundo Orden


1
Consideramos ahora un sistema de segundo orden H(s) = (s/ω0 )2 +2ζ(s/ω 0 )+1
. Cuando
el coeficiente de amortiguamiento ζ es mayor que 1 los dos polos son reales, y cuando es
menor que 1 son complejos. Tomamos una frecuencia natural o de resonancia ω0 =1rad/s,
y un coeficiente de amortiguamiento ζ=0.1,

zeta=0.1
numH2=[1]
denH2=[1 2*zeta 1]

cuyo diagrama de Bode se obtiene haciendo,

Bode(numH2, denH2)

donde se observa la caı́da de fase de 1800 en ω0 =1. El pico de la ganancia en la resonancia


1
se puede calcular como Q(db) ≡ 2ζ (db), o sea,

Q=1/(2*zeta)
20*log10(Q)

2
158 Bibliografı́a.
P1. Introducción a los Sistemas de Control (I)

siendo Q el llamado factor de calidad asociado al par de polos conjugados.


Es conocido que un sistema de segundo orden con ζ < 1 tiene, ante entrada escalón unita-
rio, un tiempo de establecimiento ts ≈ ωπ0 ζ y una sobreoscilación Mp (%) = 100 exp( √−πζ 2 ),
1−ζ
que en nuestro caso son,

ts=pi/zeta
Mp=100*exp(-pi*zeta/(1-zeta^2)^0.5)
step(numH2, denH2)

3. Realimentación
A continuación realimentaremos convenientemente el sistema de segundo orden para
modificar su dinámica, de forma que el sistema resultante no oscile y su tiempo de es-
s+ωz
tablecimiento sea menor. Utilizaremos una compensación de la forma C(s) = s+ω p
, con
ωz = 1rad/s y ωp = 100rad/s,

numC=[1 1]
denC=[1 100]

que conectaremos en serie con el sistema de segundo orden,

[numGH, denGH]=series(numH2, denH2, numC, denC)

Veamos cómo es el diagrama de Bode resultante (fig.2),

Bode(numGH, denGH)

−50
Gain dB

−100

−150 −1 0 1 2 3
10 10 10 10 10
Frequency (rad/sec)

90

0
Phase deg

−90

−180
−1 0 1 2 3
10 10 10 10 10
Frequency (rad/sec)

Figura 2: Diagrama de Bode de la ganancia de lazo antes de ajustar la ganancia.

Observamos que alrededor de ω = 10rad/s la fase de GH es de aproximadamente −900 .


Si desplazamos el Bode de la ganancia hacia arriba sin modificar el de la fase (multiplicando

3
Bibliografı́a. 159
P1. Introducción a los Sistemas de Control (I)

GH por una ganancia), podremos situar el cruce de la ganancia por los 0db en ω = 10rad/s,
obteniendo un margen de fase óptimo de aproximadamente 900 . En el diagrama de Bode
se observa que será necesaria una ganancia adicional de aproximadamente 60db ≡ 1000, lo
que comprobamos haciendo,
Bode(1000*numGH, denGH)
La ganancia de lazo definitiva será,
numGH=1000*numGH
Para establecer la realimentación y obtener el sistema en lazo cerrado haremos,
[numF, denF]=feedback(numGH, denGH, 1, 1)
Podemos ahora comparar las respuestas al escalón unitario de los sistemas sin realimen-
tar y realimentado (fig.3),
t=0:0.1:50;
yH2=step(numH2, denH2, t);
yF=step(numF, denF, t);
plot(t, yH2, t, yF, t, ones(size(t)), ’--’)
grid
observando que el sistema compensado es mucho más rápido y estable que el sistema de
segundo orden de partida.
1.8

1.6

1.4

1.2

0.8

0.6

0.4

0.2

0
0 5 10 15 20 25 30 35 40 45 50

Figura 3: Respuestas ante escalón del sistema original y el compensado.

4. Error Estático
Sin embargo, apreciamos un error estático ante la entrada escalón (error de posición),
que no tenı́a el sistema de segundo orden de partida. Para eliminar el error será necesario
que el sistema sea de tipo 1, es decir, que GH(s) tenga un polo en el origen. Multiplicamos
GH(s) por s+ω s , con ωz2 = 1rad/s,
z2

4
160 Bibliografı́a.
P1. Introducción a los Sistemas de Control (I)

[numGH2, denGH2]=series(numGH, denGH, [1 1], [1 0])

El nuevo diagrama de Bode será ahora,

Bode(numGH2, denGH2)

conservándose el margen de fase y la frecuencia de cruce (por encima de ωz2 el nuevo


compensador no altera a GH).
Finalmente cerramos el lazo y atacamos con un escalón unitario al nuevo sistema,

[numF2, denF2]=feedback(numGH2, denGH2, 1, 1)


step(numF2, denF2)
grid

del que hemos eliminado el error de posición (fig.4).

1.2

0.8
Amplitude

0.6

0.4

0.2

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)

Figura 4: Respuesta del sistema compensado ante entrada escalón unitario una vez elimi-
nado el error de posición.

5
Bibliografı́a. 161
P2. Introducción a los Sistemas de Control (II)

Práctica 4
Introducción a los Sistemas de Control (II)

En esta práctica se repasan los conceptos de “sistema reducido equivalente”, “frecuen-


cia de cruce”, “margen de fase”, “margen de ganancia”, etc., mediante su aplicación a
varios ejemplos concretos. Se pretende además que el alumno adquiera cierta madurez en
el análisis frecuencial de los sistemas a través de la información que se desprende de sus
diagramas de Bode.

1. Sistema Reducido Equivalente


Supóngase que tras un proceso de identificación o modelización se han caracterizado
los siguientes sistemas. Antes de proceder con el diseño de sus compensadores conviene
reducirlos de orden.
100
1. H1 (s) = s3 +3s2 +103s+101
85
2. H2 (s) = s4 +11s3 +45.25s2 +46.5s+42.5

100(s+2)
3. H3 (s) = s4 +42s3 +491s2 +1202s+4010

Cuestión 1: Encontrar los correspondientes sistemas reducidos equivalentes, y verifi-


carlos mediante una entrada escalón unitario. Ejemplo (fig.1):

numH1=100
denH1=[1 3 103 101]
damp(roots(denH1))
denH1eq=poly(-1)
numH1eq=dcgain(numH1, denH1)/dcgain(1, denH1eq)
step(numH1, denH1)
hold on
step(numH1eq, denH1eq)
grid

2. Frecuencia de Cruce y Margen de Fase


Cuestión 2: Determinar la máxima frecuencia de cruce de los siguientes sistemas en
lazo abierto antes de hacerse inestables (k > 0) (consejo: usar el comando Bode(numGH,
denGH) aplicado a algún caso particular de los propuestos).
k
1. GH1 (s) = s(s2 +2ζω0 s+ω02 )

k(s+10)
2. GH2 (s) = s2 (s+1)(s+100)

k(100−s)
3. GH3 (s) = s(s+1)

1
162 Bibliografı́a.
P2. Introducción a los Sistemas de Control (II)

0.9

0.8

0.7

0.6
Amplitude

0.5

0.4

0.3

0.2

0.1

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)

Figura 1: Respuesta al escalón unitario de H1 (s) y de su reducido equivalente.

ke−sT
4. GH4 (s) = s

Cuestión 3: En relación con el tercer caso anterior, justifica que la frecuencia de cruce
nunca puede ser mayor que la frecuencia natural del cero del semiplano derecho.

3. Estabilización de un Sistema Inestable


Considérese ahora un sistema inestable de primer orden,
1
G(s) =
s−1
que se pretende estabilizar y eliminar el error de posición mediante el compensador,
k(s + 1)
C(s) = (k > 0)
s
situado en serie con G(s) en el camino de ganancia directa (la realimentación es unitaria).
Cuestión 4: Escoger un valor de k para que el sistema en lazo cerrado presente un
buen margen de fase (consejo: usar los comandos Bode(numGH, denGH) y margin(numGH,
denGH)).
Cuestión 5: ¿Por qué el margen de ganancia es negativo cuando el sistema es estable?
Cuestión 6: Dibuja el diagrama de Nyquist aproximado de GH(s) = G(s)C(s) (deja
el polo en s = 0 fuera del camino de Nyquist). Razona la estabilidad conseguida basándote
en el criterio de estabilidad de Nyquist,

Sistema Estable ⇐⇒ −N umP olos(GH)SP D = N umV ueltas(GH(jω))(−1,0)

(Puedes usar el comando Nyquist(numGH, denGH)).


Cuestión 7: ¿A qué se debe el incremento de fase de 1800 que se observa en los
diagramas de Bode y de Nyquist, y gracias al cual se estabiliza el sistema?

2
Bibliografı́a. 163
P2. Introducción a los Sistemas de Control (II)

Cuestión 8: Dibuja el diagrama de Bode en lazo cerrado.


¿Qué pasarı́a si se hubiese situado el compensador como ganancia de realimentación, en
vez de como ganancia directa? (dibuja también el Bode en lazo cerrado en este caso).
Compara las respuestas al escalón unitario del sistema en lazo cerrado en ambos casos.

3
164 Bibliografı́a.
P3. Diseño Clásico de Compensadores

Práctica 5
Diseño Clásico de Compensadores

En esta práctica se diseña el control del posicionamiento del cabezal de una impresora.
Para el diseño del compensador se utilizan las técnicas clásicas de inspección de diagramas
de Bode y del lugar geométrico de las raı́ces.

1. Introducción
Se pretende construir un sistema de posicionamiento del cabezal de escritura de una
impresora, tal y como se muestra en la fig.1. Se dispone de un motor de tensión continua
bidireccional cuya velocidad angular de giro es,
Km
ω(s) = vc (s) (1)
[τ s + 1] [(s/ω0 )2 + 2ζ(s/ω0 ) + 1]
siendo vc la tensión de entrada al motor (entre Vcc− = −15v y Vcc+ = 15v), Km su ganancia
tensión-velocidad angular, τ = 0.1s su constante de tiempo dominante, ζ = 0.1961 y ω0 =
1020rad/s.
Cuestión 1: Encontrar Km si la máxima velocidad del motor es ωmax = 10 vueltas/s
y ésta se tiene con vc = Vcc .
El cabezal se adhiere al motor, y solidario con su eje se coloca una rueda dentada (de
radio R = 1cm) que transforma su velocidad angular en desplazamiento lineal. Para sensar
la posición exacta del cabezal se distribuye un potenciómetro a lo largo de su recorrido (de
longitud L = 0.5m), entre cuyos extremos se aplica la tensión de alimentación (fig.1). La
tensión ası́ obtenida es proporcional a la posición a través de v = VLcc x. El diagrama de
bloques del sistema es el mostrado en la fig.2.




Figura 1: Implementación práctica del sistema propuesto.

2. Dinámica del Motor


Lo primero que haremos será construir el modelo del motor.
Cuestión 2: ¿Cuál es la posición de los polos complejos?

L=0.5; %Longitud del rail

1
Bibliografı́a. 165
P3. Diseño Clásico de Compensadores

v ref ve vc Km ω x 1 x
C (s ) R
+ 1 + τs s

Vcc
L

Figura 2: Diagrama de bloques del sistema de posicionamiento del cabezal.

Vcc=15; %Tensión de alimentación


R=0.01; %Radio de la rueda dentada
tau=0.1; %Constante de tiempo del motor
wpm=1/tau; %Polo dominante del motor
Km=10*2*pi/Vcc; %velocidad máxima del motor: 10vueltas/segundo
denGm=poly([-wpm, 1000*(-0.2+i), 1000*(-0.2-i)]);
denGmre=poly(-wpm);
numGm=Km/dcgain(1, denGm);
numGmre=Km/dcgain(1, denGmre);

Ahora representamos la respuesta del motor y la de su reducido equivalente, y su dia-


grama de Bode (fig.3):

figure(1);
hold on;
step(numGm, denGm);
step(numGmre, denGmre);
grid;
title(’Velocidad angular del motor ante un escalón unitario’);
hold off;
figure(2);
bode(numGm, denGm);

3. Sistema sin Compensar


Aunque se ha dibujado un compensador en el diagrama de bloques, el lazo podrı́a
cerrarse sin ninguna circuiterı́a adicional, es decir, llevando la señal de error directamente
al motor. Veamos cómo se comportarı́a el sistema. Construimos las ganancias directa, de
realimentación y de lazo:

%Ganancia directa:
numG1=R*numGm;
denG1=[denGm, 0];
%Ganancia de realimentación:
H=Vcc/L;

2
166 Bibliografı́a.
P3. Diseño Clásico de Compensadores

50

0
Gain dB

−50

−100 −1 0 1 2 3 4
10 10 10 10 10 10
Frequency (rad/sec)

−90
Phase deg

−180

−270
−1 0 1 2 3 4
10 10 10 10 10 10
Frequency (rad/sec)

Figura 3: Diagrama de Bode del motor, donde se observa la posición del polo simple domi-
nante y los dos polos complejos.

%Ganancia de lazo sin compensar:


numGH1=numG1*H;
denGH1=denG1;

El diagrama de Bode de la ganancia de lazo sin compensar, y su comportamiento en


lazo cerrado ante entrada escalón unitario (fig.4) son:

figure(1);
Bode(numGH1, denGH1);
[numF1, denF1]=feedback(numG1, denG1, H, 1);
figure(2);
step(numF1, denF1);
grid;
title(’Respuesta al escalón sin compensar’);

Cuestión 3: ¿Por qué el valor final es 0.033?


El comportamiento no es satisfactorio debido a la excesiva lentitud del sistema ts ≈ 4s
(no es aceptable con un motor de ts ≈ 0.5s). Para solucionarlo usaremos un compensador
proporcional derivativo.
Cuestión 4: ¿Qué conseguiremos con el compensador PD?

4. Sistema Compensado
Lo primero que haremos será introducir los datos del compensador. Cancelaremos el polo
dominante del motor, quedando pendiente únicamente el ajuste de ganancia (supondremos
inicialmente que tenemos ganancia Kc = 1).

wcz=wpm;

3
Bibliografı́a. 167
P3. Diseño Clásico de Compensadores

Respuesta al escalón sin compensar


0.035

0.03

0.025

0.02
Amplitude

0.015

0.01

0.005

0
0 0.5 1 1.5 2 2.5 3 3.5 4
Time (secs)

Figura 4: Respuesta en lazo cerrado del sistema sin compensar ante entrada escalón unitario.

Kc=1;
numC=Kc*poly(-wcz)/wcz;
denC=1;

Construimos las nuevas ganancias directa y de lazo (la de realimentación es la misma


de antes):

%Ganancia directa compensada:


numG2=R*conv(numGm, numC);
denG2=[conv(denGm, denC), 0];
%Ganancia de lazo:
numGH2=numG2*H;
denGH2=denG2;

Para la selección de la ganancia del compensador Kc usaremos el comando rlocfind.


Primero dibujaremos el “lugar de las raı́ces” del sistema (lugar geométrico de los polos de
lazo cerrado en función de una ganancia adicional K) con el comando rlocus (fig.5). Luego,
usando rlocfind, seleccionaremos las raices deseadas en lazo cerrado y obtendremos el valor
de la ganancia K que les corresponde. Finalmente asignaremos esta K al compensador
(Kc = K):

rlocus(numGH2, denGH2);
K=rlocfind(numGH2, denGH2)
Kc=K;
numG2=K*numG2;
numGH2=K*numGH2;

Cuestión 5: ¿Qué punto del plano s conviene marcar?


Los márgenes de estabilidad relativa que se obtendrán son (fig.6):

4
168 Bibliografı́a.
P3. Diseño Clásico de Compensadores

margin(numGH2, denGH2);

y la respuesta en lazo cerrado al escalón unitario será (fig.7):

[numF2, denF2]=feedback(numG2, denG2, H, 1);


step(numF2, denF2);
grid;
title(’Respuesta del sistema compensado’);

donde observamos un considerable aumento de la velocidad del sistema (ts ≈ 0.03s).


Los polos en lazo cerrado y sus residuos serán:

damp(roots(denF2));
abs(residue(numF2, denF2))

Cuestión 6: ¿Qué nos indican los residuos de los polos?


Cuestión 7: Propón una implementación electrónica del sistema.
2000

1500

1000

500
Imag Axis

−500

−1000

−1500

−2000
−2000 −1500 −1000 −500 0 500 1000 1500 2000
Real Axis

Figura 5: Lugar de las raı́ces del sistema una vez compensado. Tendremos siempre dos
polos complejos y uno real.

5
Bibliografı́a. 169
P3. Diseño Clásico de Compensadores

Gm=9.485 dB, (w= 1020) Pm=86.94 deg. (w=136.5)


100

50
Gain dB

−50

−100 −1 0 1 2 3 4
10 10 10 10 10 10
Frequency (rad/sec)

−90
Phase deg

−180

−270

−360 −1 0 1 2 3 4
10 10 10 10 10 10
Frequency (rad/sec)

Figura 6: Bode de la ganancia de lazo del sistema compensado, una vez ajustada la ganancia.
Se muestran los márgenes de ganancia y de fase, y las frecuencias de cruce por 1800 y 0db

Respuesta del sistema compensado


0.035

0.03

0.025

0.02
Amplitude

0.015

0.01

0.005

0
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04
Time (secs)

Figura 7: Respuesta en lazo cerrado del sistema compensado.

6
170 Bibliografı́a.
P4. Introducción a Simulink de Matlab

Práctica 6
Introducción a Simulink de Matlab

En esta práctica se diseña el control del posicionamiento del cabezal de una impresora.
Para el diseño del compensador se utilizan las técnicas clásicas de inspección de diagramas
de Bode y del lugar geométrico de las raı́ces.

1. Introducción
En una central lechera se utiliza un sistema automático para el control del proceso de
pasteurización de la leche. El proceso consiste en la repetición de ciclos de temperatura de la
leche, entre 100 C y 900 C en 1 minuto. Para ello (fig.1) se sensa la temperatura de la leche en
cada uno de los recipientes de la fábrica mediante termopares debidamente acondicionados.
La tensión proporcionada por cada termopar v es adquirida por un ordenador que centraliza
el control digital del proceso. El ordenador compara las señales sensadas con una referencia
de temperatura (que él mismo genera) e implementa la función de compensación. La salida
del ordenador constituye la señal de control vc de una fuente de corriente (implementada
mediante un convertidor Buck con control de corriente de pico). La carga resistiva R del
convertidor está distribuida en el interior del depósito, y la potencia que se disipa en ella
permite controlar la temperatura del mismo.

Vin i

vc R
T

v
C(z) Kv
- T
+
Vref
Ordenador

Figura 1: Implementación práctica del sistema de control de temperatura.

Antes de plantear un diagrama de bloques es necesario saber cómo se relacionan las


diversas variables del sistema.
La relación entre la potencia P disipada en la resistencia R = 50Ω y la temperatura T
del depósito es,
T (s) KT
HT (s) = = (1)
P (s) τT s + 1
siendo KT = 0.10 C/W y τT = 10s.
La respuesta del termopar es,
v(s) Kv
Hv (s) = = (2)
T (s) τv s + 1

1
Bibliografı́a. 171

P4. Introducción a Simulink de Matlab

siendo Kv = 0.1V /0 C y τv = 0.01s.


Finalmente, la respuesta de la corriente del convertidor frente a su señal de control es,

i(s) Ki
Hi (s) = = (3)
vc (s) τi s + 1

siendo Ki = 0.5A/V y τi = 0.1s.

2. Diseño del Compensador


En este apartado seleccionaremos y diseñaremos el compensador en formato continuo
C(s), y posteriormente lo discretizaremos para obtener el compensador C(z) buscado.
Para poder diseñar el compensador C(s) deberemos primero representar el sistema me-
diante un diagrama de bloques. Sin embargo, esto no es posible si no se linealiza la relación
entre la potencia y la corriente P = i2 R. Para pequeñas variaciones de corriente, los in-
crementos de potencia que se producen son dP = 2IRdi. Por tanto, los incrementos en
corriente y en potencia se relacionan a través de una ganancia variable GP = 2IR, siendo
I la corriente continua sobre la que se producen las variaciones.
Teniendo en cuenta estas relaciones, el diagrama de bloques simplificado es el mostrado
en la fig.2.

vref ve vc i P T
C(s) Hi(s) 2IR HT (s)
+
-

v
Hv (s)

Figura 2: Diagrama de bloques linealizado.

Se propone un compensador del tipo,

(s + ωz1 )(s + ωz2 )


C(s) = Kc (4)
s(s + ωp )

con ωz1 = τ1T = 0.1rad/s, ωz2 = τ1i =10rad/s y ωp = 10τv =1000rad/s.


Cuestión 1: Dibujar la ganancia de lazo, y justificar la posición de ceros y polos del
compensador, y la frecuencia de cruce. Dibujar el Bode de lazo cerrado.
Cuestión 2: ¿Para qué valor de Gp deberemos diseñar la ganancia del compensador
Kc ? (Suponer que la máxima temperatura a alcanzar es 1000 C).
En estas condiciones, ajustamos la frecuencia de cruce a 50rad/s con una ganancia Kc =,

2. Modelo Simulink
A continuación se construirá el diagrama de bloques del sistema y se implementará en
Simulink.

2
172 Bibliografı́a.
Bibliografı́a

Franklin, G. F., y Powell, J. D. (1994). Feedback control of dynamic systems. (Vol. 1,


1 ed.). Addison-Wesley.

Ljung, L. (1999). System identification. Theory for the user. (2nd ed.). PTR Prentice
Hall, Upper Saddle River, N.J.

Mathworks. (1997). Using Matlab–the language of technical computing. The Math-


works, Inc.

Ogata, K. (1993). Ingenierı́a de control moderna (Vol. 1, 1 ed.). Prentice-Hall.

Ungar, L. H. (1995). Forecasting. The Handbook of Brain Theory and Neural


Networks, 399–403.
“Diseño de Sistemas de Control Usando MATLAB-SIMULINK”

Emilio Soria Olivas & Gustavo Camps i Valls, 2002.


e-mail: {soriae,gcamps}@uv.es
Grupo de Procesado Digital de Se~ nales, http://gpds.uv.es

También podría gustarte