MATLAB M. C.

BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
1
1
INTRODUCCION
Las computadoras se han hecho indispensables para el trabajo creativo en ciencias e ingeniería, nosotros
como institución académica comprometidos con la calidad en el servicio educativo, estamos conscientes
de la importancia de la utilización de la computadora como una herramienta muy poderosa de apoyo en el
proceso de enseñanza-aprendizaje.

El uso de las computadoras y para facilitar el aprendizaje de los conceptos propuestos por la Teoría de
Control, surgen herramientas que proporcionan una nueva forma de solucionar problemas de control. Las
herramientas CACSD (Computer Aided Control System Design, Diseño de Sistemas de Control -
Auxiliados por Computadora) han sido de gran ayuda para la solución de estos problemas.

Algunos de los paquetes más comunes:

MATLAB The MathWorks, Inc.
MATRIX Integrated Systems, Inc.
CTRL-C Systems Control Technology, Inc.
CC Systems Technology Inc.

El nombre MATLAB proviene de ``MATrix LABoratory'' (Laboratorio de Matrices). MATLAB fue escrito
originalmente para proporcionar un acceso sencillo al software matricial desarrollado por los proyectos
LINPACK y EISPACK, que juntos representan lo más avanzado en programas de cálculo matricial.
MATLAB es un sistema interactivo cuyo elemento básico de datos es una matriz que no requiere
dimensionamiento.

MATLAB se utiliza para investigación y para resolver problemas prácticos de ingeniería y matemáticas,
con un gran énfasis en aplicaciones de control y procesamiento de señales. MATLAB también proporciona
una serie de soluciones específicas denominadas TOOLBOXES. Estas son muy importantes para la
mayoría de los usuarios de MATLAB y son conjuntos de funciones MATLAB que extienden el entorno
MATLAB para resolver clases particulares de problemas.MATLAB es un entorno de cálculo técnico de
altas prestaciones para cálculo numérico y visualización. Integra:
- Análisis numérico
- Cálculo matricial
- Procesamiento de señales
- Gráficos

El aprendizaje de las técnicas de control para el diseño y optimización de sistemas ha sido un obstáculo
en la formación de ingenieros. La falta de herramientas especializadas ha sido determinante.

Se asume que cualquier ingeniero encargado del diseño de sistemas de control tiene a su disposición una
herramienta de éstas o su equivalente. Por lo cual es necesario aprender a utilizar adecuadamente esta
clase de paquetes.

CAPITULO 1: FUNDAMENTOS DE MATLAB
1.1 INTRODUCCIÓN
MATLAB es un programa interactivo para cálculos científicos y de ingeniería. La familia de programas de
MATLAB incluye un programa base y una gran variedad de módulos, (denominados TOOLBOXES), como
el de Sistemas de Control, Identificación, Optimización, Redes Neuronales etc.

En concreto utilizaremos el control system toolbox, el cual es un conjunto de rutinas para MATLAB
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
2
2
dedicadas a aplicar las distintas herramientas de la teoría de control clásico para sistemas lineales.
Podemos dividir esta Toolbox en cuatro subgrupos:

• funciones para definir modelos
• funciones para obtener la respuesta temporal
• funciones para obtener la respuesta en frecuencia
• funciones para el diseño de controladores

En una sesión típica de MATLAB básicamente se utilizan relaciones, matrices, gráficas y programas
scripts.

1.2 Relaciones Fundamentales
Después de ejecutar el programa MatLab desde el sistema operativo empleado, por ejemplo haciendo
doble click sobre el icono de MatLab en ambientes Windows, aparece el indicador de comandos el cual
está listo para recibir instrucciones en lenguaje MatLab. Este indicador es de la siguiente forma: >>

Al iniciar el uso de MatLab están disponibles los comandos de ayuda y demostración. Para ejecutarlos se
escribe el comando en la línea de comandos después del símbolo >> y se presiona la tecla <Enter>. Por
ejemplo:

>>help ayuda sobre los diferentes comandos de MatLab.
>>demo hace una demostración de las diferentes aplicaciones de MatLab.
>>quit Para cerrar o finalizar el uso de MatLab se usa el comando quit.

En MATLAB se usa el signo de igual para asignar una expresión a una variable.

>>variable = expresión

La forma de interactuar con MatLab es a través de la línea de comandos. Puede ejecutarse un comando si
este escrito después del símbolo >> y presione <Enter>.

Se muestra una relación simple donde los comandos se introducen tal como ellos se escriben
matemáticamente. >>a=4 / 3 < enter >
MATLAB produce la respuesta: a =1.3333

Asigna a la variable "a" el valor de cuatro dividido por tres. En general se recomienda el usar nombres de
variables apropiados y fáciles de memorizar. MATLAB reconoce los primeros 19 caracteres del nombre
de una variable y solamente requiere que el primer carácter de una variable sea una letra, además es
sensible a mayúsculas y minúsculas por ejemplo A y a son variables diferentes y las funciones de
MATLAB deben estar en minúsculas.

Si no se desea crear una nueva variable pero se quiere saber el valor de una expresión, se puede teclear
la expresión por si misma: >> 4 / 3
lo cual produce ans =1.3333
donde " ans " variable que genera MATLAB que significa respuesta (answer).

Alternativamente si se desea crear una nueva variable pero no se quiere ver la respuesta de MATLAB, se
teclea un punto y coma " ; " al final de la expresión.
Por ejemplo: >>b=4+7;
MATLAB creará la variable b de valor 11, pero no mostrará el valor de b.
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
3
3

El punto y coma (" ; " )es muy útil cuando se definen vectores o matrices muy grandes y no se desea que
se muestren. Se puede ver el valor de una variable en cualquier tiempo únicamente tecleando el nombre
de dicha variable: >>b
b =11
Se pueden hacer expresiones de una secuencia de números, operadores, funciones y variables que hallan
sido previamente definidas. Por ejemplo: >>c= a*(b-1)
c =13.3333
Si se esta tecleando una expresión y no se completa en la línea, se utilizan tres o mas puntos al final de la
línea y se continua tecleando en la siguiente línea, por ejemplo: >>p=1+2+...
3+4+6;
Los operadores ' matemáticos que se
utilizan en MATLAB para escribir
relaciones matemáticas son los
siguientes:
+ Suma
- Resta
* Multiplicación
^ Potencia

Por ejemplo si queremos elevar a una potencia el valor de p obtenido anteriormente: >>p^2
(Para obtener el circunflejo ^ : oprima <alt> y luego 94)
MATLAB responde ans =256

El orden de prioridad en el cual MATLAB efectúa las operaciones aritméticas es el siguiente: potencia ( ^ ),
división ( / ), multiplicación ( * ), suma ( + ) y resta ( - ), esto es de izquierda a derecha pero pueden usarse
paréntesis para alterar el orden de la operación por ejemplo :

caso 1 > > 1 + 2 ^ 3 / 4 * 2 caso 2 >> 1 + 2 ^ 3 / (4 * 2)
MATLAB responde ans =5 MATLAB responde ans=2

caso 3 >>(1+2) ^ 3 / (4 * 2)
MATLAB responde ans = 3.3750

MATLAB tiene una gran variedad de funciones que fácilmente pueden ser incorporadas dentro de
expresiones, las más comunes se muestran en seguida:

sin(x) seno de x cos(x) coseno de x
asin(x) arcoseno de x acos(x) arcocoseno de x
tan(x) tangente de x atan(x) arcotangente de x
abs(x) valor absoluto de x sqrt(x) raíz cuadrada de x
imag(x) parte imaginaria de x real(x) parte real de x
conj(x) complejo conjugado de x log(x) logaritmo natural de x
log10(x) logaritmo base 10 de x exp(x) exponencial de x

MATLAB tiene algunas variables predefinidas como: j, i Para representar números complejos
NaN Operaciones indefinidas (Not is a Number)
inf Infinito
pi Representa t

Ejemplos: > > c = 4 / 0
MATLAB responde Warning: Divide by zero
c=inf
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
4
4

MATLAB responde NAN cuando se realizan ciertos cálculos indefinidos
> > d = inf / inf
d =NaN
Para representar números complejos > > z = 3 + 4j “o” 3+4i
MATLAB responde z =3.0000 + 4.0000i
El operador complejo (i o j) debe ir después del coeficiente numérico.

Todos los cálculos en MATLAB se representan en doble precisión. El usuario puede controlar el número
de decimales con que aparece en pantalla el valor de las variables, utilizando el comando format sin
olvidar que ello no está relacionado con la precisión con la que se hacen los cálculos, sino con el aspecto
con que éstos se muestran:

Si al final un elemento de una matriz no es un entero exacto, hay cuatro formatos de salida posibles. La
salida visualizada se puede controlar visualizando una de las siguientes órdenes:

format short coma fija con 4 decimales (defecto)
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 long g notación científica o decimal, dependiendo del valor
format loose introduce líneas en blanco en la salida (defecto)
format compact elimina las líneas en blanco citadas (recomendada)
format rat números racionales como cocientes de enteros

Una vez llamado el formato elegido permanece activo hasta que sea cambiado.
Para el análisis de sistema de control, se suelen utilizar format short y format long. Siempre que se llame a
MATLAB y no se introduzca una orden de formato, MATLAB muestra los resultados numéricos en formato
corto:
>>1/3
ans = 0.3333
>>format long
>>1/3
ans = 0.33333333333333
>>format % Vuelve al formato estándar que es el de 4 cifras decimales

Todas las variables utilizadas en una sesión se almacenan automáticamente en el espacio de trabajo de
MATLAB para su uso posterior. Para borrar las variables de espacio de trabajo se puede utilizar la función
clear all. La función who se utiliza para mostrar las variables almacenadas en el área de trabajo y la
función whos muestra información adicional sobre la dimensión tipo y tamaño de las lo variables.

Es posible recuperar comandos anteriores de MATLAB y moverse por dichos comandos con el ratón y con
las teclas-flechas | y + Al pulsar la primera de dichas flechas aparecerá el comando que se había
introducido inmediatamente antes. De modo análogo es posible moverse sobre la línea de comandos, ir al
principio de la línea con la tecla Inicio, al final de la línea con Fin, y borrar toda la línea con Esc.
Recuérdese que sólo hay una línea activa (la última).

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
5
5
Para borrar todas las salidas anteriores de MATLAB y dejar limpia la ventana principal se pueden
utilizar las funciones clc y home.

La función clc (clear console) elimina todas las salidas anteriores, mientras que home las mantiene, pero
lleva el prompt (» ) a la primera línea de la ventana.

1.3.- MATRICES
La manera de introducir matrices pequeñas a MATLAB es utilizando una lista de elementos. Los
elementos de la matriz son separados por espacios o en blanco ó comas (“,”) y encerrados por corchetes
y se usa punto y coma (;)para indicar el final del renglón.
Por ejemplo: >> A = [ 1 2 3;4 5 6; 7 8 9 ]
MATLAB responde: A = 1 2 3
4 5 6
7 8 9
Las matrices también pueden ser introducidas por medio de una lista de elementos de cada renglón de la
matriz utilizando punto y coma al terminar cada renglón o simplemente darle retorno al terminar cada
renglón y se encierra entre corchetes.
Ejemplo: > > B = [ 1 2 3 4 5 6 7;
2 4 6 8 2 4 6;
1 3 5 7 9 1 3;
1 2 3 4 5 6 7];
Al oprimir B y luego <enter> aparece: B =
1 2 3 4 5 6 7
2 4 6 8 2 4 6
1 3 5 7 9 1 3
1 2 3 4 5 6 7
Las matrices pueden tener elementos formados por medio de expresiones ó funciones y pueden ser reales
o complejos veamos el siguiente ejemplo:

>> A = [ 1, - 4j , sqrt(2);
log(-1) sin (pi/2) cos(pi/3)
asin(0.5), acos(0.8) exp(0.8) ]
Al oprimir A y <enter> aparece
>>A= 1.000 0 - 4. 0000i 1.4142
0 + 3.1416i 1.0000 0.5000
0.5236 0.6435 2.2255
1.3.1.- Operaciones básicas con matrices:Suma, resta, multiplicación, transpuesta, inversa y las
operaciones de elemento a elemento:

>>A=[ 1 3; 5 9 ] B= [5 -7;10 0]
> > A + B
ans = 6 -4
15 9

> > b = [ 1 ; 5 ];
> > A * b
ans =16
50
>> A’
ans = 1 5
3 9

>>inv (A)
ans =-1.5 0.5000
0.8333 -0.1667


MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
6
6
La transpuesta de una matriz se obtiene utilizando el apóstrofo y la inversa con la función inv.
En las operaciones elemento a elemento el símbolo matemático es precedido por un punto “ . “las
operaciones de suma y resta no requieren de punto.
Suponiendo que A y B son dos matrices de 2 x 2 dadas por:
(
¸
(

¸

=
22 21
12 11
a a
a a
A
(
¸
(

¸

=
22 21
12 11
b b
b b
B
Utilizando la multiplicación elemento a elemento se obtiene:
(
¸
(

¸

=
-
22 22 21 21
12 12 11 11
*
b a b a
b a b a
B A
Los elementos de B A -
-
. son el producto de los correspondientes elementos de A y B.
2
.
-
A es el cuadrado de cada uno de sus elementos, Por ejemplo
>> A=[1; 2; 3]; , B=[-6; 7; 10]; >>A.*B
ans= -6
14
30
>>A.^2
ans= 1
4
9

1.3.2 .- Generación de vectores
MATLAB puede generar vectores automáticamente que contengan elementos que van de un valor inicial
Xi a un valor final Xf con ciertos incrementos especificados por dX.: X = Xi : dX : Xf

Pueden generarse fácilmente vectores utilizando esta notación llamada notación colon. Por ejemplo, se
desea generar un vector con valor inicial 1 y final 10 con incrementos de 1 >>X=[1:1:10]
X=1 2 3 4 5 6 7 8 9 10
La transpuesta de este vector X=[1:1:10]’ y MATLAB responde con una columna de datos. Esta notación
es útil cuando se desea calcular ó graficar alguna función contra algún parámetro que varia. Por ejemplo
se desea calcular los valores de y= x sen(x) si x varia de 0 a 1 con incrementos de 0. 1 .
>>x=[0:0.1:1]’; y = x. * sin (x);
>> [x y]
ans= 0 0
0.1000 0.0100
0.2000 0.0397
0.3000 0.0887
0.4000 0.1558
0.5000 0.2397
0.6000 0.3388
0.7000 0.4510
0.8000 0.5739
0.9000 0.7050
1.0000 0.8415
Si lo que conocemos del vector es que la primera coordenada vale 0, la última 20 y que tiene 11 en total,
escribiremos:
>>x=linspace(0,20,11)
x= 0 2 4 6 8 10 12 14 16 18 20

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
7
7
A las coordenadas de un vector se accede sin más que escribir el nombre del vector y, entre
paréntesis, su índice:
>>x(3)
ans = 4
y se pueden extraer subvectores, por ejemplo:
>>x(2:5)
ans= 2 4 6 8
>>x(:)
ans= 0
2
4
6
8
10
12
14
16
18
20

1.3.3.-MATRICES DE UTILIDAD:
En MATLAB, las funciones: Ones(n)
Ones(m,n)
Ones(A)
Zeros
Produce matrices especiales. Esto es, ones(n) genera una matriz de unos de n x n Ones(m,n) genera una
matriz de unos de m x n. Similarmente zeros(n) genera una matriz de ceros de n x n. Mientras que
zeros(m,n) genera una matriz de ceros de m x n. Zeros(A) genera una matriz de ceros de¡ mismo tamaño
que A, excepto cuando A es un escalar.

Frecuentemente necesitamos la matriz identidad.
En MATLAB la proposición eye(n) genera una matriz identidad de n x n.

Si x es un vector, la proposición diag(x), genera una matriz diagonal con x puesto en la diagonal principal;
por ejemplo:

X=[ones(1,n)]; Diag((ones(1,n)) genera una matriz identidad como sigue
:
>>diag(ones(1,5))
ans = 1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Si A es una matriz cuadrada, entonces diag(A) es un vector que consiste en la diagonal principal de A y
diag(diag(A)) es una matriz diagonal en la cual la diagonal principal de A aparece en la diagonal principal
de la nueva matriz.

>>A=[1 2 3;4 5 6;7 8 9]
A = 1 2 3
4 5 6
7 8 9
>>díag(A)
ans= 1
5
9
>>diag(diag(A))
ans= 1 0 0
0 5 0
0 0 9



MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
8
8
Note que diag(1:5) nos da:
ans=1 0 0 0 0
0 2 0 0 0
0 0 3 0 0
0 0 0 4 0
0 0 0 0 5

Como y se menciono 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 (por ejemplo A(1,2) ó A(i,j)). Las matrices se almacenan por
columnas (aunque se introduzcan por filas), y teniendo en cuenta esto puede accederse a cualquier
elemento de una matriz con un sólo subíndice. Por ejemplo, si A es una matriz (3x3) se obtiene el mismo
valor escribiendo A(1,2) que escribiendo A(4).

Los operadores matriciales de MATLAB son los siguientes:

+ adición o suma
– sustracción o resta
* multiplicación
' transpuesta
^ 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

TIPOS DE MATRICES PREDEFINIDOS
Existen en MATLAB varias funciones orientadas a definir con gran facilidad matrices de tipos particulares.
Algunas de estas funciones son las siguientes:
eye(4) forma la matriz unidad de tamaño (4x4)
zeros(3,5) forma una matriz de ceros de tamaño (3x5)
zeros(4) ídem de tamaño (4x4)
ones(3) forma una matriz de unos de tamaño (3x3)
ones(2,4) idem de tamaño (2x4)
linspace(x1,x2,n) genera un vector con n valores igualmente espaciados entre x1 y x2
logspace(d1,d2,n) genera un vector con n valores espaciados logarítmicamente entre 10^d1
y 10^d2. Si d2 es pi los puntos se generan entre 10^d1 y pi
rand(3) forma una matriz de números aleatorios entre 0 y 1, con distribución uniforme, de
tamaño (3x3)
rand(2,5) idem de tamaño (2x5)
randn(4) forma una matriz de números aleatorios de tamaño (4x4), con
distribución normal, de valor medio 0 y varianza 1.
magic(4) crea una matriz (4x4) con los números 1, 2, ... 4*4, con la propiedad de que todas las filas y
columnas suman lo mismo
hilb(5) crea una matriz de Hilbert de tamaño (5x5). La matriz de Hilbert es una matriz cuyos
elementos (i,j) responden a la expresión (1/(i+j-1)). Esta es una matriz especialmente difícil
de manejar por los grandes errores numéricos a los que conduce
invhilb(5) crea directamente la inversa de la matriz de Hilbert
kron(x,y) produce una matriz con todos los productos de los elementos del vector x por los elementos
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
9
9
del vector y. Equivalente a x'*y, donde x e y son vectores fila compan(pol) construye una
matriz cuyo polinomio característico tiene como coeficientes los elementos del vector pol
(ordenados de mayor grado a menor)
vander(v) construye la matriz de Vandermonde a partir del vector v (las columnas son las potencias de
los elementos de dicho vector)

A continuación se describen algunas de las funciones que crean una nueva matriz a partir de otra o de
otras, comenzando por dos funciones auxiliares:

[m,n]=size(A) devuelve el número de filas y de columnas de la matriz A. Si la matriz es cuadrada
basta recoger el primer valor de retorno.
n=length(x) calcula el número de elementos de un vector x
zeros(size(A)) forma una matriz de ceros del mismo tamaño que una matriz A previamente creada.
ones(size(A)) ídem con unos
A=diag(x) forma una matriz diagonal A cuyos elementos diagonales son los elementos de un
vector ya existente x
x=diag(A) forma un vector x a partir de los elementos de la diagonal de una matriz ya existente.
A= diag(diag(A)) crea una matriz diagonal a partir de la diagonal de la matriz A=blkdiag(A,B) crea una
matriz diagonal de submatrices a partir de las matrices que se le pasan como
argumentos.
triu(A) forma una matriz triangular superior a partir de una matriz A (no tiene por qué ser cuadrada).
Con un segundo argumento puede controlarse que se mantengan o eliminen más diagonales
por encima o debajo de la diagonal principal.
tril(A) ídem con una matriz triangular inferior
rot90(A,k) Gira k*90 grados la matriz rectangular A en sentido antihorario. k es un entero que puede
ser negativo. Si se omite, se supone k=1 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 m×n cuyas columnas se obtienen a partir
de un vector formado por las columnas de A puestas una a continuación de otra. Si la matriz
A tiene menos de m×n elementos se produce un error. Un caso especialmente interesante es
el de crear una nueva matriz componiendo como submatrices otras matrices definidas
previamente.

OPERADOR DOS PUNTOS (:)
Ya se ha mencionado la utilidad de este operador. Aquí se retoma porque es un operador muy importante
en MATLAB y puede usarse de varias formas. Para empezar, defínase un vector x con el siguiente
comando:
» x=1:10
x =1 2 3 4 5 6 7 8 9 10

En cierta forma se podría decir que el operador (:) representa un rango: en este caso, los números enteros
entre el 1 y el 10. Por defecto el incremento es 1, pero este operador puede también utilizarse con otros
valores enteros y reales, positivos o negativos. En este caso el incremento va entre el valor inferior y el
superior, en las formas que se muestran a continuación:

» x=1:2:10
x =1 3 5 7 9
» x=1:1.5:10
x =1.0000 2.5000 4.0000 5.5000 7.0000 8.5000 10.0000
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
10
10
» x=10:-1:1
x =10 9 8 7 6 5 4 3 2 1

Puede verse que, este operador produce vectores fila. Si se desea obtener un vector columna basta
trasponer el resultado. El siguiente ejemplo genera una tabla de funciones seno y coseno.
» x=[0.0:pi/50:2*pi]';
» y=sin(x); z=cos(x);
» [x y z]

El operador dos puntos (:) es aún más útil y potente –y también más complicado con matrices. A
continuación se va a definir una matriz A de tamaño 6x6 y después se realizarán diversas operaciones
sobre ella con el operador (:).
» A=magic(6)
A = 35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
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. Por ejemplo:
» A(2,3)
ans =7

El siguiente comando extrae los 4 primeros
elementos de la 6ª fila:
» A(6, 1:4)
ans = 4 36 29 13

Los dos puntos aislados representan "todos los
elementos". Por ejemplo, el siguiente comando
extrae todos los elementos de la 3ª fila:
» A(3, :)
ans =31 9 2 22 27 20
Para acceder a la última fila o columna puede
utilizarse la palabra end, en lugar del número
correspondiente. Por ejemplo, para extraer la sexta
fila (la última) de la matriz:
» A(end, :)
ans =4 36 29 13 18 11
El siguiente comando extrae todos los elementos
de las filas 3, 4 y 5:
» A(3:5,:)
ans = 31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
Se pueden extraer conjuntos disjuntos de filas
utilizando corchetes [ ]. Por ejemplo, el siguiente
comando extrae las filas 1, 2 y 5:
» A([1 2 5],:)
ans = 35 1 6 26 19 24
3 32 7 21 23 25
30 5 34 12 14 16
En los ejemplos anteriores se han extraído filas y
no columnas por motivos del espacio ocupado por
el resultado en la hoja de papel. Es evidente que
todo lo que se dice para filas vale para columnas y
viceversa: basta cambiar el orden de los índices.


El operador dos puntos (:) puede utilizarse en ambos lados del operador (=). Por ejemplo, a continuación
se va a definir una matriz identidad B de tamaño 6x6 y se van a reemplazar filas de B por filas de A.
Obsérvese que la siguiente secuencia de comandos sustituye las filas 2,4 y 5 de B por las filas 1,2 y 3 deA
» B=eye(size(A));
» B([2 4 5],:)=A(1:3,:)
B = 1 0 0 0 0 0
35 1 6 26 19 24
0 0 1 0 0 0
3 32 7 21 23 25
31 9 2 22 27 20
0 0 0 0 0 1
Se pueden realizar operaciones aún más
complicadas, tales como la siguiente
» B=eye(size(A));
» B(1:2,:)=[0 1; 1 0]*B(1:2,:)

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
11
11
Como nuevo ejemplo, se va a ver la forma de
invertir el orden de los elementos de un vector:
» x=rand(1,5)
x =0.9103 0.7622 0.2625 0.0475
0.7361
» x=x(5:-1:1)
x =0.7361 0.0475 0.2625 0.7622
0.9103

Obsérvese que por haber utilizado paréntesis –en
vez de corchetes- los valores generados por el
operador (:) afectan a los índices del vector y no al
valor de sus elementos.

Para invertir el orden de las columnas de una matriz
se puede hacer lo siguiente:
» A=magic(3)
A = 8 1 6
3 5 7
4 9 2
Se sustituyen las dos primeras filas de B por el
producto de dichas filas por una matriz de
permutación.
» A(:,3:-1:1)
ans = 6 1 8
7 5 3
2 9 4
aunque hubiera sido más fácil utilizar la función
fliplr(A), que es específica para ello. Finalmente,
hay que decir que A(:) representa un vector
columna con las columnas de A una detrás de otra.


CAPITULO 2: GRAFICACIÓN
2.1.- INTRODUCCIÓN
Las gráficas juegan un papel muy importante en el diseño y análisis de los sistemas de control. Un
componente importante de un paquete interactivo para el análisis y diseño de sistemas de control es su
capacidad gráfica, debe incluir formatos para gráficas del Lugar de Raíces, Bode, Nyquist y de
respuesta en el tiempo, etc.

Para las gráficas en dos dimensiones las funciones que se utilizan son plot, semilog(x), semilog(y),
loglog y algunas funciones para rotular las gráficas, además se introducen los programas script.

2.2.- GRÁFICAS EN DOS DIMENSIONES
Hay dos grupos básicos de funciones gráficas. El primer grupo de funciones se muestra en la tabla 2.1,
donde se especifican los formatos de gráficas como la x-y, logarítmica y semilogarítmica. El segundo
grupo de funciones se muestran en la tabla 2.2, estas funciones nos permiten etiquetar los ejes, añadir
textos, mostrar varias gráficas y dividir una ventana gráfica.
Tabla 2.1 Formatos de gráficas x - y.
plot(x,y) Gráfica el vector x vs vector y
semilogx(x,y) Gráfica el vector x vs vector y.
el eje x es log10; el eje y es lineal
semilogy(x,y) Gráfica el vector x vs vector y.
El eje x es lineal; el eje y es log10
loglog(x,y) Gráfica el vector x vs vector y
los ejes x , y son log10

Tabla 2.2 Funciones gráficas.
title('texto’) Pone un texto en el encabezado
xlabel('texto’) Etiqueta el eje x con un texto
ylabel('texto’) Etiqueta el eje y con un texto
text(pl,p2,'texto') Pone un texto en las coordenadas pl, p2
subplot Divide la pantalla en ventanas
grid Red de coordenadas
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
12
12
La función plot crea una gráfica lineal con ejes x -y. Para generar gráficas logarítmicas se sustituye la
función plot por loglog, semilogx, semilogy, todas estas ftmciones se utilizan de manera similar.

Gráfica lineal simple Plot (y)
Para un vector dado y, la función plot(y) generará una gráfica lineal de los elementos de y contra el
numero de elementos de y.

Por ejemplo si se requiere graficar los siguientes datos [0 1 3 5 2 7 0 8 4 0] con respecto a un numero de
ellos y rotular la gráfica se utilizan las funciones plot (y), title, xlabel, ylabel, el procedimiento se muestra
en seguida
» y=[0 1 3 5 2 7 0 8 4 0];
» plot(y);grid
» title('GRÁFICA');
» xlabel('NUMERO DE DATOS');
» ylabel('AMPLITUD');


Figura 2.2 Gráfica simple rotulada utilizando la función plot (y).
Gráficas(x,y)
Para crear una gráfica simple x - y se utiliza la función plot (x , y), es decir si se desea graficar los
elementos de x con respecto a los elementos de y, el vector x puede ser generado con datos aleatorios
x=[1 4 6 2 8 9 1 0 6 7 9 0 7 6] ó por la notación colón x=[xi:dx:xf].
En seguida se muestra un ejemplo de una gráfica x - y de la función y xseno(x) con respecto a x.
» x=[0:0.1:1]';
» y=x.*sin(x);
» plot(x,y)
» title('Gráfica de x*sen(x) Vs x')
» xlabel('x')
» ylabel('y')
» grid
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
13
13

Figura 2.4 Gráfica simple de y = x seno(x) vs x.

Los ejes y la escala son generados automáticamente. Los ejes son rotulados con los comandos xlabel ,
ylabel; el titulo de la gráfica se determina con el comando títle y la red de coordenadas con el comando
grid.

Pueden ser generadas también varias gráficas en una misma ventana utilizando la función plot con
argumentos múltiples por ejemplo plot ( x , yl , x , y2 , x , y3 ), puede indicarse también los tipos de líneas
para cada gráfica, como se muestra en el siguiente ejemplo. Los tipos de líneas disponibles se muestran
en la tabla 2.2.
» x=[0:0.1:1]';
» y1=x.*sin(x);y2=sin(x);
» plot(x,y1,'b*',x,y2,'g--')
» text(0.1,0.9,'y1=x seno(x) ***')
» text(0.1,0.85,'y2=seno(x) ---')
» xlabel('x'),ylabel('y1,y2'),grid

Figura 2.6 Gráfica múltiple x -y.



MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
14
14

Los tipos de líneas se seleccionan automáticamente a menos que el usuario quiera modificarlos..El uso de
la función text, el cambio del tipo de línea y color se muestran también en el procedimiento para obtener la
gráfica múltiple de la figura 2.6. Los tipos de línea disponibles y colores se muestran en la tabla 2.2

Tabla 2.2 Tipos de línea y colores
- Línea sólida
-- Línea discontinua
.. Línea punteada
; Línea punto y coma
* Asterisco
+ Mas
. Punto
o Circulo
y Amarillo
r Rojo
g Verde
b Azul
w Blanco
b Negro
m Magenta

Gráficas a colores y tipos de línea se pueden obtener añadiendo un argumento a la función plot, por
ejemplo si queremos generar una gráfica de color azul con tipo de línea asterisco hacemos:

plot(x,y,’b*’)

Las otras funciones gráficas loglog, semilogx, semilogy se utilizan en forma similar a la función plot .

FUNCIÓN SUBPLOT
La función subplot se utiliza para dividir la pantalla en varias gráficas su forma general es:

subplot(m,n,p)

Donde m n p son tres números, m n divide la pantalla en m x n ventanas, los valores máximos permitidos
de m ó n es 2 por lo que se puede dividir la pantalla hasta en 4 ventanas, el numero p determina la
posición de la ventana donde se desea mostrar la gráfica por ejemplo

subplot(211), plot( y ), subplot (212) , plot(u)

Podemos observar que m = 2 y n = 1, divide la pantalla en dos renglones una columna , mostrando dos
gráficas, en la primera se graficaría ( y ) y en la segunda (u ) .

Para gráficas múltiples la función subplot se puede utilizar de la siguiente manera:

subplot(211), plot (x , y1, x , y2), subplot(212), plot (x,y3,x ,y4 )

para desactivar la función subplot, se puede utilizar subplot(111) o simplemente subplot.

2.3.- PROGRAMAS SCRIPT
Hasta este momento todo nuestro trabajo lo hemos desarrollado dentro del espacio de trabajo de
MATLAB. Este es un modo adecuado de operación cuando las sesiones son cortas y no repetitivas, sin
embargo la potencialidad real de MATLAB se basa en su habilidad para ejecutar de manera secuencial
una gran cantidad de comandos almacenados en un archivo. Estos son llamados archivos M, porque
precisamente la extensión para que MATLAB los ejecute debe ser M.

Un programa script es un archivo cuya extensión es M. Los programas script son archivos de texto que
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
15
15
pueden ser escritos utilizando cualquier editor de textos.

Un programa script es una archivo que contiene una secuencia de instrucciones ó funciones que deberá
de ejecutar MATLAB. Es importante recordar que deberá guardarse con extensión. M, para llamar a un
programa script desde MATLAB solo se teclea el nombre del archivo.

Se muestra un ejemplo de un programa script para graficar la función y(t)=seno(alfa*t) donde alfa es un
parámetro que se desea variar, se va guardar como ejl.m.

% Programa Seript para graficar la función y(t)=seno(alfa*t)
% El valor de alfa deberá darse en el espacio de trabajo
% antes de llamar a este archivo
t=[0:0.01:1];
y=sin(alfa*t);
plot t,y)
xlabel(‘tiempo [segundos]’)
ylabel(y(t)=seno(alfa *t’)
grid

Como se observa en el programa anterior, los comentarios en los programas script deben empezar con el
signo de por ciento (%), utilizando la función help se pueden mostrar los comentarios del titulo y de esta
manera saber las características del programa script .
» help ej1
Programa script para graficar la función y=seno(alfa*t)
El valor de alfa deberá existir en el espacio de trabajo de matlab
antes de llamar a este archivo

MATLAB responde automáticamente generando la gráfica, el valor de alfa deberá introducirse a MATLAB
antes de llamar al programa script, se obtienen dos gráficas para los valores de alfa =10 y 50 , como se
muestran en las siguientes figuras:
Para ejecutar el programa script ej1.m haga lo siguiente en el espacio de trabajo de MATLAB
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
16
16
:» alfa=10;
» ej1


Figura 2.9 Gráfica de y=seno(alfa*t) para alfa=10

Ahora teclee lo siguiente para aumentar la frecuencia de la señal
» alfa=50
» ej1


Figura 2.10 Gráfica de y=seno(alfa*t) para alfa=50.



MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
17
17
CAPITULO 3 MODELACIÓN MATEMÁTICA DE SISTEMAS
3.1.- INTRODUCCIÓN
El análisis y diseño de sistemas de control esta basado en modelos matemáticos de sistemas físicos,
estos se obtienen de las leyes físicas que determinan el comportamiento de dichos sistemas. Como los
sistemas considerados son de naturaleza dinámica, las ecuaciones descriptivas son generalmente
ecuaciones diferenciales. Además si estas ecuaciones pueden linealizarse, entonces puede utilizarse la
transformada de Laplace y obtenerse la función de transferencia de un sistema.

MATLAB puede utilizarse para analizar sistemas lineales invariantes en el tiempo. Representados en
forma de función de transferencia ó de ecuaciones de estado.

Se emplea MATLAB para ayudar en el análisis de modelos matemáticos particularmente en el cálculo de
polos y ceros de una función de transferencia, reducción de diagramas a bloques, calculo de una función
de transferencia en lazo cerrado y para graficar la respuesta de un sistema ante una entrada escalón.

Las funciones de MATLAB que se usarán son:
roots, series, feedback, cloop, poly, conv, polyval, printsys, minreal, pzmap y step.

3.2.- Función de transferencia
La función de transferencia de un sistema se define como la transformada de Laplace de la salida con
respecto a la transformada de Laplace de la entrada para condiciones iniciales nulas.
La función de transferencia de un sistema es una relación formada por un polinomio numerador y un
polinomio denominador:
n n
n n
m m
m m
a s a s a s
b s b s b s b
s U
s Y
s F
+ + + +
+ + + +
= =
÷
÷
÷
÷
1
1
1
1
1
1 0
) (
) (
) (



Las raíces del polinomio del numerador son llamados zeros del sistema; las raíces del polinomio del
numerador se denominan polos. La respuesta transitoria de un sistema esta directamente relacionada con
la ubicación de los polos y ceros en el plano s.

En Matlab debe definirse el numerador Y(s) y el denominador U(s) como vectores, cuyos elementos son
los coeficientes de los polinomios del numerador y del denominador en potencias decrecientes de “s”. Por
ejemplo, para definir la función de transferencia:
1 25 . 0
1
) (
) (
) (
2
+ +
= =
s s s U
s Y
s F
>>y=[1];
>>u=[1 0.25 1];

Consideremos un sistema descrito por la función de transferencia:
4 3
2 6
) (
2 3
2
+ +
+ +
=
s s
s s
s G

Igualando el polinomio denominador a cero se obtiene la ecuación característica: 0 4 3
2 3
= + + s s

Como una función de transferencia es una relación de polinomios, empezaremos utilizando MATLAB para
manejar y evaluar polinomios.

Raíces de un polinomio
En MATLAB los polinomios se representan por vectores renglón que contienen los coeficientes del
polinomio en orden descendente de las potencias de S. Por ejemplo sea el polinomio p(s):
4 3 ) (
2 3
+ + = s s s p

Se introduce en MATLAB de la siguiente manera: >> p=[1 3 0 4]; Como se observa nada mas se dan los
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
18
18
coeficientes de mayor a menor potencia.
La función roots se utiliza para calcular las raíces
de un polinomio representado en la forma de
vector.
>>p=[1 3 0 4];
>> r=roots(p)
r
- 3.3553
0.17765 + 1.0773,7
0.17765 - 1.07731

La función poly se usa para generar un polinomio a partir de sus raíces, estas deben estar en forma de
vector columna.

La función poly crea un vector renglón con los
coeficientes del polinomio.
>>p=poly(r)
p =1.0000 3.0000 0.0000 4.0000

Multiplicación de polinomios
La multiplicación de polinomios se realiza con la función conv. Supongamos que queremos desarrollar el
polinomio N(S), donde :
4 9 14 3 ) 4 )( 1 2 3 ( ) (
2 3 2
+ + + = + + + = s s s s s s s N
Definimos el polinomio 1 2 3 ) (
2
+ + = s s s P y el
polinomio 4 ) ( + = s s Q
>>P=[3,2,1];Q=[1,4];
>>N=conv(P,Q)
3 14 9 4

Para evaluar un polinomio se emplea la función polyval, por ejemplo si evaluamos el polinomio
4 9 14 3 ) (
2 3
+ + + = s s s s N para s=-5 se hace lo siguiente

>> valor=polyval(n,-5)
valor =-66

Gráficas de polos y ceros
Con la función pzmap podemos obtener una gráfica de la localización de los polos y ceros en el plano
complejo. Su forma general es:

[p,z]=pzmap(num,den)
donde:
p localización de polos ( vector columna)
z localización de ceros ( vector columna )
num, den : numerador y denominador de la función de transferencia.

Si la función pzmap se usa sin los argumentos del lado izquierdo, la gráfica se genera automáticamente.

Considere las siguientes funciones de transferencia
1 3 3
1 6
) (
2 3
2
+ + +
+
=
s s s
s
s G
) 3 )( 4 (
) 2 )( 1 (
) (
2
+ +
+ +
=
s s
s s
s H
Calcular los polos y ceros de G(S) y de H(S).
» numg=[6 0 1];deng=[1 3 3 1];
» zerosg =roots(numg) % Se obtienen los zeros de G(s)
» polosg=roots(deng) % Se obtienen los polos de G(s)
» n1=[1 1]; n2=[1 2]; d1=[1 0 4];d2=[1 3];
» numh=conv(n1,n2);denh=conv(d1,d2);
» zerosh =roots(numh) % Se obtienen los zeros de H(s)
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
19
19
» polosh =roots(denh) % Se obtienen los polos de H(s)
» pzmap(numg,deng)
» pzmap(numh,denh)

Figura 3.1 Mapa de polos y ceros para G(s) H(s).

Existen tres maneras básicas de representar la función de transferencia en Matlab:
Usando el comando tf:
Para introducir una FdT del tipo
) (
) (
) (
s D
s N
s W = , usando el comando tf, escribir
>>W=tf(num,den)

donde num y den son vectores representando los coeficientes de los polinomios n(s) y d(s),
respectivamente.

El resultado de la variable W es un objeto del tipo TF, conteniendo el numerador y el denominador.

Ejemplo: Tenemos tres sistemas ( ) ( ), ( ), (
3 2 1
s H s H s H ), vamos a introducirlas usando el comando
tf(num,den)
2
1
) (
1
+
+
=
s
s
s H
6 5 4
3 2
) (
2 3
2
2
+ + +
+ +
=
s s s
s s
s H
3 6 2
3
) (
2
2
3
+ +
=
s s
s
s H
% En este ejemplo introduciremos los sistemas ) ( ), ( ), (
3 2 1
s H s H s H
% mediante el comando tf(num,den)
%Definicion del sistema H
1
(s):
n1=[1 1]; % Aqui se define la variable vector del numerador
d1=[1 2]; % y del denominador.
H
1
=tf(n1,d1); % Creacion del sistema H
1
(s)
%Definicion del sistema H
2
(s),mediante una sola linea:
H
2
=tf([1 2 3],[1 4 5 6]);
%Definicion del sistema H
3
(s):
n3=[3 0 0]; % Atencion con los ceros
d3=[2 6 3];
H
3
=tf(n3,d3);
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
20
20
% Visualizacion de las Funciones de transferencia H
1
(s), H
2
(s), H
3
(s)
H
1

H
2

H
3

Matlab mostrara despues de correr el programa:

Transfer function:
s + 1
-----
s + 2
Transfer function:
s^2 + 2 s + 3
---------------------
s^3 + 4 s^2 + 5 s + 6
Transfer function:
3 s^2
---------------
2 s^2 + 6 s + 3


Como expresión racional usando la variable s de Laplace
Primero se define la variable s como un objeto TF:

>> s=tf('s');

y luego introducimos la función de transferencia como una expresión racional con la variable s.
Nota: Solo hay que definir la variable s como TF una sola vez. Todas las expresiones que vengan a
continuación serán objetos TF

Ejemplo :Introducir las Fdts H(s) y G(s) mediante la definición de s como objeto TF.
3 6 2
3
) (
2
2
+ +
=
s s
s
s H

2
) 2 )( 5 (
1
) (
+ +
=
s s
s G

% En este ejemplo introduciremos las FDTs H(s) y G(s)
% Primero definimos la variable s como un objeto TF
s=tf('s');
% Ahora podemos introducir las funciones directamente:
h=(3*s^2)/(2*s^2+6*s+3);
g=1/((s+5)*(s+2)^2);
% Finalmente las visualizamos:
disp('H(s)');
h
disp('G(s)');
g
Matlab responde:
H(s)
Transfer function:
3 s^2
---------------
2 s^2 + 6 s + 3
G(s)
Transfer function:
1
-----------------------
s^3 + 9 s^2 + 24 s + 20

Mediante modelos ZPK (Zero-Pole-Gain)
Una forma alternativa de representar la Fdt, es
mediante la factorización del numerador y del
denominador:
% En este ejemplo introduciremos G(s) y W(s)
% como modelos zpk (zero-pole-gain)
%---------------------------------------------------
% G(s)
% Primero definimos los ceros:
z=[0];
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
21
21
) )( ( ) )( (
) )( ( ) )( (
) (
1 2 1
1 2 1
n n
m m
p s p s p s p s
z s z s z s z s
s H
÷ ÷ ÷ ÷
÷ ÷ ÷ ÷
=
÷
÷




La ventaja de esta forma es que los ceros (z) y los
polos (k) de la FdT son fáciles de visualizar. La
sintaxis para especificar este tipo de modelos es:

>>H=zpk(z,p,k)

donde,
z: Son los ceros de la FdT en forma de vector.
p: Son los polos de la FdT en forma de vector.
k: Es la ganancia del sistema.
Ejemplo: Introduce la siguientes FdTs definidas
como modelos ZPK
) 2 2 )( 2 (
2
) (
2
+ ÷ ÷
÷
=
s s s
s
s G


) 4 )( 2 (
) 3 )( 1 (
) (
+ +
+ +
=
s s s
s s
s W


% Después los polos:
p=[1-i 1+i 2];
% y la ganancia
k=[-2]
% Finalmente el comando
G=zpk(z,p,k);
% W(s)
% Aqui lo haremos mediante la definición de s
%como objeto ZPK
s=zpk('s');
W=((s+1)*(s+3))/(s*(s+2)*(s+4));
% Visualizacion
disp('G(s)=')
G
disp('W(s)=')
W
Matlab responde:
G(s)=
Zero/pole/gain:
-2 s
--------------------
(s-2) (s^2 - 2s + 2)
W(s)=
Zero/pole/gain:
(s+1) (s+3)
-------------
s (s+2) (s+4)

Sistemas realimentados en MATLAB:

Matlab dispone de un comando para crear sistemas
realimentados a partir de dos sistemas LTI (sys1 y
sys2), la sintaxis básica es la siguiente:

>>w=feedback(sys1,sys2)


El sistema resultante w tiene como entrada u y como salida y. Los sistemas sys1 y sys2 pueden ser de
diferente tipo(por ejemplo sys1 TF y sys 2 ZPK), pero ambos han de ser continuos o discretos. El tipo de
sistema resultante LTI dependerá de las reglas de prioridad de sistemas.
Por defecto Matlab asume una realimentación negativa, para aplicar una realimentación positiva la sintaxis
es:
>>w=feedback(sys1,sys2,+1)

Ejemplo: Sistemas Realimentados en Matlab con feedback
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
22
22
Calculé la Función Transferencia del
sistema realimentado para los
siguientes casos


a).-
3 5
10
) (
2
+ +
=
s s
s G
) 2 )( 1 (
) 4 ( 5
) (
+ +
+
=
s s
s
s H
b).-
) 5 )( 2 (
1
) (
+ +
=
s s
s G 1 ) ( = s H
% En este ejemplo veremos el uso del comando feedback
% sistemas realimentados.
% Para el inciso a)
% Primero definimos G y H
G=tf([10],[1 5 3]);
H=zpk(-4,[-1 -2],5);
% Y luego aplicamos el comando
A=feedback(G,H);
% Para el inciso b)
% Definimos G:
G=zpk([],[-2 -5],1); % Al no tener cero indicamos [ ] y ganancia 1
% Al ser realimentación unitaria hacemos:
B=feedback(G,1);
% Visualizacion
A
B
Matlab responde:
Zero/pole/gain:
10 (s+2) (s+1)
-----------------------------------------
(s+3.849) (s+5.298) (s^2 - 1.147s + 10.1)
Zero/pole/gain:
1
-------------------
(s+2.382) (s+4.618)

El resultado es un objeto ZPK, esto es debido a las reglas de prioridad de sistemas en Matlab

Un sistema de control puede tener varios componentes. Para mostrar las funciones que lleva a cabo cada
componente en la ingeniería de control por lo general se usa la representación denominada diagrama de
bloques.

Definir las propiedades de un sistema, SET Y GET

También existe la posibilidad de completar la información de un sistema LTI (nombre de la entrada y la
salida, retardos, información adicional...), mediante las propiedades de este.
Básicamente, distinguiremos dos tipos de propiedades, las comunes a todos los sistemas y las especificas
de cada modelo, tal como vemos en las siguientes tablas.

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
23
23
PROPIEDADES COMUNES A TODOS LOS SISTEMAS LTI
Nombre de la propiedad Descripción Valor
ioDelay Retraso Entrada-Salida Matriz
InputDelay Retraso en la Entrada Vector
InputGroup Nombre grupo entrada(MIMO) Cell array
InputName Nombre de la entrada Vector-String
Notes Notas sobre el modelo Texto
OutputDelay Retraso en la salida Vector
OutputGroup Nombre grupo salida(MIMO) Cell array
OutputName Nombre de la salida Vector-String
Ts Tiempo de muestreo Escalar
Userdata Datos adicionales Arbitrario

Introducir/Modificar Propiedades: Sintaxis básica

Introducir propiedades:

>>Set(modelo,'nombrePropiedad','valorPropiedad'...)
>>Modelo=tf(num,den,'NombrePropiedad','ValorPropiedad' ...)

Acceder a propiedades:

>>Get(modelo,'propiedad')

Para mas información teclear en matlab:
-para las propiedades genericas:
>>ltiprops
-para las propiedades especificas:
>>ltiprops tf , zpk, ss, o frd

Ejemplo: Introduce en Matlab el sistema con las características siguientes:


%En este ejemplo veremos el uso de las propiedades de un sistema
%------------------------------------------------------
%Primeramente definimos el modelo y su retraso:
G=zpk([-1 -3],[0 -2 -4],[1],'Inputdelay',0.3);
%Seguidamente introducimos las propiedades
set(G,'inputname','Voltaje',...
'outputname','Posicion angular ',...
'notes','Control de la posicion de un motor DC');
% Una vez el modelo ha sido creado podemos
% extraer informacion con el comando get
get(G,'notes')
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
24
24
get(G,'outputname')
%Modificacion de un propiedad:
set(G,'outputname','Posicion angular (Rad)');
% Ver el sistema y sus propiedades:
G
get(G)%Con este comando vemos todas las propiedades

Cuando se corre se muestra lo siguiente en pantalla:

>> ans =
'Control de la posicion de un motor DC'
ans =
'Posicion angular'
Zero/pole/gain from input "Voltaje" to output "Posicion angular (Rad)":
(s+1) (s+3)
exp(-0.3*s) * -------------
s (s+2) (s+4)
z: {1x1 cell}
p: {1x1 cell}
k: 1
Variable: 's'
Ts: 0
ioDelay: 0
InputDelay: 0.3
OutputDelay: 0
InputName: {'Voltaje'}
OutputName: {'Posicion angular (Rad)'}
InputGroup: {0x2 cell}
OutputGroup: {0x2 cell}
Notes: {'Control de la posicion de un motor DC'}
UserData: []

Funciones feedback y cloop
Existen dos funciones que se pueden utilizar para simplificar un diagrama a bloques y calcular la función
de transferencia en lazo cerrado de sistemas sencillos ó de múltiples lazos. Estas funciones son feedback
y cloop .

Figura 3.5 Función feedback.

[num,den]=feedback(num1,den1,num2,den2,signo); o
sys=feedback(sys1,sys2,signo);

Figura 3.6 Función cloop.
[num,den]=cloop(num1,den1,signo); o
sys=cloop(sys1,signo);

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
25
25
Ejemplo de la función feedback
La función feedback calcula la función de transferencia en lazo cerrado con retroalimentación H(s) , si se
omite el signo se considera por defecto negativo.
Calcular la función de transferencia del
siguiente sistema de control utilizando la
función feedback.


La secuencia de instrucciones en MATLAB para resolver este problema es

» numg=[1];deng=[500 0 0];G=tf(numg,deng);
» numh=[1 1];denh=[1 2];H=tf(numh,denh);
»YR=feedback(G,H,-1);
» YR
num/den =
s + 2
----------------------------------------
500 s^3 + 1000 s^2 + s + 1

Ejemplo de la función cloop
La función cloop calcula la función de transferencia en lazo cerrado con retroalimentación unitaria, si se
omite el signo se considera por default negativo.
Calcular la función de transferencia del
siguiente sistema de control utilizando la
función cloop



La secuencia de instrucciones en MATLAB para resolver este problema es
» numg=[1];deng=[500 0 0]; G=tf(numg,deng);
» numc=[1 1];denc=[1 2]; GC=tf(numc,denc);
»GS=G*GC;
»YR=cloop(GS,-1);
» YR
num/den =
s + 1
---------------------------
500 s^3 + 1000 s^2 + s + 1

Simplificación de diagramas a bloques:
Un diagrama de bloques complicado que contenga muchos lazos de realimentación lo podemos simplificar
mediante un reordenamiento paso a paso mediante las reglas del álgebra de los diagramas de bloques. La
simplificación de los diagramas de bloques reduce de manera considerable la labor necesaria para el
análisis posterior.

Simplificación de bloques con MATLAB
El Control System Toolbox dispone de varias herramientas para la interconexión de sistemas.
Básicamente podemos distinguir:
A. Mediante operaciones aritméticas
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
26
26
Matlab permite realizar la mayoría de operaciones aritméticas con los sistemas LTI. Con la ayuda de
estas operaciones podemos llegar a simplificar sistemas, como por ejemplo:
Conexión serie
Un proceso a controlar se muestra en la figura 3.2 . Un sistema de control simple en lazo abierto se puede
obtener conectando en serie el controlador con la planta como se muestra en la figura 3.3, o fig.3.4
emplearemos MATLAB para calcular la función de transferencia Y(s) / R(s).



Figura 3.1 Sistema de control en lazo abierto

>>[num,den]=series(num1,den1,num2,den2); o también
>>sys3=series(sys1,sys2); o
>>sys=sys1*sys2

Conexión en paralelo:
En algunos casos se requiere conectar en paralelo funciones de transferencias para esto se utiliza la
función parallel. Su forma general es


>>[num,den]=parallel(num1,den1,num2,den2); o
>>sys=parallel(sys1,sys2); o
>>sys=sys1+sys2

B. Mediante funciones propias Aparte de las operaciones aritméticas el Control System ToolBox tiene una
serie de funciones para la interconexión de sistemas.:

Ejemplo: Consideramos el siguiente diagrama de bloques:



) (
) (
) (
1
1
1
s b
s a
s G =
) (
) (
) (
2
2
2
s b
s a
s G =
) (
) (
) (
3
3
3
s b
s a
s G =
) (
) (
) (
4
4
4
s b
s a
s G =


MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
27
27
Escribiremos un archivo con extensión m, el cual tendrá los vectores a1, b1, a2, b2, a3, b3, a4, b4
correspondientes a las funciones de transferencia y calcularemos la Función de Transferencia del sistema.

% Ejemplo de simplificación usando funciones propias
% Creación de los bloques
G1=tf(a1,b1);
G2=tf(a2,b2);
G3=tf(a3,b3);
G4=tf(a4,b4);
% Simplificacion:
G34=feedback(G3,G4);
G12=feedback(G1,G2);
G=series(G12,G34);

Si tenemos una planta o un controlador modelados matemáticamente en forma de función de transferencia
G(s) y Gc(s) respectivamente. Nuestro objetivo ahora es interconectar y simplificar esos componentes
para obtener el esquema de control..
La función de transferencia del proceso G(s) es
2
500
1
) (
s
s G =
y el controlador representado es:
2
1
) (
+
+
=
s
s
s G
c

Introducimos a MATLAB los denominadores y numeradores de las funciones de transferencia Gc(s), G(s)
y utilizamos la función series.
>>numg=[1];deng=[500 0 0]; g=tf(numg,deng);
>numc=[1 1];denc=[1 2];gc=tf(numc,denc);
>>gs=series(gc,g);
>>gs
Matlab muestra:
num /den = S + 1

500S^3+1000S^2
Calcular la función de transferencia en lazo cerrado Y(s) / R(s) del siguiente sistema de control donde las
funciones de transferencia son:

10
1
) (
1
+
=
s
s G
1
1
) (
2
+
=
s
s G
4 4
1
) (
2
2
3
+ +
+
=
s s
s
s G
6
1
) (
4
+
+
=
s
s
s G

2
1
) (
1
+
+
=
s
s
s H 2 ) (
2
= s H 1 ) (
3
= s H
Este ejemplo se puede resolver en 5 pasos

1 . Introducir a MATLAB las funciones de transferencia G1(s),G2(S), G3(S),G4(s),H1(s),H2(s),H3(s).
2. Mover el lazo de H2(s) adelante de G4(S)
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
28
28
3. Eliminar el lazo G3 (s) G4(s) H, (s).
4. Eliminar el lazo que contiene H2(S)
5. Eliminar el lazo restante y calcular C(s) / R (s).

La secuencia de instrucciones en MATLAB de acuerdo a los cinco pasos para
obtener la función de transferencia de lazo cerrado Y(s)/R(s) es
n1=[1];d1=[1 10];G1=tf(n1,d1); %G1(s)=1/(s+10)
n2=[1];d2=[1 1];G2=tf(n2,d2); %G2(s)=1/(s+1)
n3=[1 0 1];d3=[1 4 4];G3=tf(n3,d3); %G3(s)=s^2+1/(s^2+4s+4)
n4=[1 1];d4=[1 6];G4=tf(n4,d4); %G4(s)=s+1/(s+6)
nh1=[1 1];dh1=[1 2];H1=tf(nh1,dh1); %H1(s)=s+1/(s+2)
nh2=[2];dh2=[1];H2=tf(nh2,dh2); %H2(s)=2
nh3=[1];dh3=[1];H3=tf(nh3,dh3); %H3(s)=1
% Ahora se mueve el lazo de H2(s) adelante de G4(S)
G34=G3*G4;
H24=H2/G4;
% Se simplifica el lazo4 de realimentacion;
F1=feedback(G34,H1);
GF21=G2*F1;
F2=feedback(GF21,H24);
GF12=G1*F2;
F3=feedback(GF12,H3)
Matlab responde:
Transfer function:
s^5 + 4 s^4 + 6 s^3 + 6 s^2 + 5 s + 2
------------------------------------------------------------------------
2 s^7 + 40 s^6 + 299 s^5 + 1222 s^4 + 2691 s^3 + 3276 s^2 + 2278 s + 732

CAPITULO 4 RESPUESTA EN EL TIEMPO
4.1 Características de los Sistemas de Control
A menudo se necesita introducir la retroalimentación con el objeto de mejorar los sistemas de control. Es
interesante el hecho de que esto también suceda en los sistemas de la naturaleza como los biológicos y
fisiológicos, en los cuales la retroalimentación es inherente. Por ejemplo, el sistema de control humano
para el ritmo cardiaco es un sistema de control con retroalimentación.

La retroalimentación se introduce en los sistemas de control para

1. Disminuir la sensibilidad del sistema frente a variaciones en los parámetros del proceso.
2. Facilitar el control y ajuste de la respuesta transitoria del sistema.
3. Mejorar el rechazo de las señales perturbadoras y de ruido dentro del sistema..
4. Reducir el error en estado estable del sistema.

Agregar retroalimentación a un sistema de control produce las ventajas mencionadas arriba. Sin embargo,
es natural que estas ventajas impliquen un costo de aplicación. El costo de la retroalimentación se
manifiesta primero en el aumento de los componentes y la complejidad del sistema.

Con el objeto de agregar la retroalimentación, es necesario considerar varios componentes de la
retroalimentación, de los cuales el de medición (sensor) es el componente clave. El sensor es
frecuentemente el componente mas caro en un sistema de control. Además, el sensor introduce ruido e
imprecisiones en el sistema.
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
29
29

El segundo costo de la retroalimentación es la perdida de ganancia. por ejemplo , en un sistema de un
solo circuito , la ganancia del circuito abierto es G ( s ) y se reduce a G ( s ) / ( 1 + G ( s ) ) en un sistema
de retroalimentación negativa unitaria. La reducción de la ganancia del circuito es 1/(1+G(s ) ) , que es
exactamente el factor que reduce la sensibilidad del sistema frente a variaciones y perturbaciones de los
parámetros.

Generalmente, se tiene ganancia del circuito abierto de reserva y estamos más que dispuestos a invertirla
para incrementar el control de la respuesta del sistema.

Por último , un costo de retroalimentación es la inclusión de la posibilidad de inestabilidad. Mientras que el
circuito abierto es estable, el de circuito cerrado puede no serlo siempre.

Agregar retroalimentación a sistemas dinámicos produce varios problemas adicionales para el diseñador.
Sin embargo, en la mayoría de los casos, las ventajas superan a las desventajas. Por lo tanto es
necesario considerar la complejidad adicional y el problema de estabilidad cuando se diseña un sistema
de control.

En esta sección se ilustran las ventajas de la retroalimentación por medio de dos ejemplos. El objetivo es
mostrar el uso del MATLAB para el análisis de los sistemas de control.

Una vez ya se conoce el modelo Matemático del sistema, ya estamos en disposición de analizar el
comportamiento dinámico del sistema. Para ello se utilizan señales de entrada o excitación sencillas. El
análisis se puede realizar en el dominio del tiempo o de la frecuencia.
Primero veremos una clasificación del análisis temporal según la señal de excitación, aquí daremos a
conocer las principales funciones para analizar el comportamiento de un sistema.
Las señales de prueba que se usan regularmente para realizar el análisis temporal de sistemas. Con estas
señales de prueba es posible realizar con facilidad análisis matemáticos y experimentales, dado que las
señales son funciones del tiempo muy simples.

Análisis al impulso: Señal de excitación: Impulso de dirac




1 ) ( = s X

El análisis al impulso es una herramienta usada habitualmente, ya que gracias a ella es posible comprobar
la estabilidad y la velocidad de un sistema.
Para ver la respuesta de un sistema ante una entrada al impulso, en MATLAB usamos el comando
impulse:

>>Impulse(sys)

Esta función dibujara la respuesta al impulso para un sistema LTI. El modelo puede ser continuo o
discreto, SISO o MIMO. La duración de la simulación será determinada automáticamente para mostrar
correctamente la respuesta transitoria del sistema.
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
30
30

>>Impulse(sys,t)

De esta forma determinamos el tiempo de simulación explícitamente.

a=1;
a=2;
a=zpk(‘s’);
g=1/((s+a)*(s+b));

Podemos especificar t como el tiempo final o también mediante un vector del tipo: t = 0:dt:Tf donde dt es
el tiempo de muestreo.

>>impulse(sys1,sys2,...,sysN)
>>impulse(sys1,sys2,...,sysN,t)

Esta es la sintaxis para dibujar la respuesta al impulso de varios sistemas LTI en una misma figura.

>>impulse(sys1,'y:',sys2,'g--')

Como cualquier gráfico en MATLAB, podemos especificar colores y estilos de línea, como por ejemplo:

>>[y,t] = impulse(sys)

De esta forma obtenemos la respuesta al impulso y, y el vector de tiempo t, utilizado en la simulación. No
se dibuja ninguna gráfica.

Ejemplo:Dado el siguiente sistema crea un archivo m que realice:


a) Represente la respuesta al impulso del
sistema.
b) El Gráfico representa respuesta al impulso
hasta t=12s.
c) Realice una comparación entre la respuesta
encontrada con el comando impulse, y la
respuesta antitransformando Y(s).
Primero introducimos en un fichero m, la función de transferencia del sistema. Ya que con MATLAB no
podemos trabajar simbólicamente, daremos valores a las constantes a y b. Luego crearemos un modelo
ZPK ya que es el que mejor define la función de transferencia de nuestro sistema.

y=impulse(g,t);
plot(t,y,’g´)
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
31
31
Una vez ya hemos definido el sistema podemos
realizar un análisis al impulso mediante el
comando impulse. impulse(sys)

Si ejecutamos el código hasta ahora
obtendremos la siguiente gráfica:






Esta gráfica muestra la respuesta al impulso del sistema hasta los primeros 6 segundos. Supongamos que
nosotros queremos ver la respuesta hasta los 12 segundos.
(b) Para ello crearemos un vector t donde el primer elemento es 0, el último 12 y los elementos entre ellos
estarán a intervalos de 0.1
t=0:0.1:12;
Creamos otro gráfico con figure y aplicamos el vector t para obtener la respuesta hasta t=12 s. figure
impulse(sys,t)
(c) Ahora vamos a grabar la salida en un vector, el cual representaremos más tarde. Para hacer esto
asignamos el valor de la respuesta al impulso a la variable y, y representamos la respuesta en otro gráfico
con el comando plot. Pondremos la gráfica en verde y puntos para poder comparar.
Ahora sabiendo que: representaremos
y(t) en la misma gráfica obteniendo:

f=(exp(-a*t) – exp(-b*t) / (b – a);
hold on
plot(t,f,’r-.’)
xlabel(‘Tiempo en segundos’);
ylabel(‘Respuesta al Impulso’);
title(‘Respuesta transitoria al impulso’);
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
32
32


Señal de excitación: Escalón unitario




Respuesta del sistema




MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
33
33
Escalón retardado



Respuesta escalón unitario con MATLAB:
El análisis de un sistema frente a un escalón unitario es el más usado en la ingeniería de control. El
comando utilizado para realizar este análisis con MATLAB es step.
La sintaxis del comando es prácticamente igual que la del comando impulse:

>> step(sys)

Esta función dibujara la respuesta de un sistema LTI, ante una entrada escalón unitario. El modelo puede
ser continuo o discreto, SISO o MIMO. La respuesta para un sistema con múltiples entradas será una
colección de respuestas escalón por cada entrada. En este caso la duración de la simulación es
determinada automáticamente por MATLAB.

>>step(sys,t)

De esta forma determinamos el tiempo de simulación explícitamente. Podemos especificar t como el
tiempo final o también mediante un vector del tipo:
t = 0:dt:Tf donde dt es el tiempo de muestreo.
>>step(sys1,sys2,...,sysN)
>>step(sys1,sys2,...,sysN,t)
Esta es la sintaxis para dibujar la respuesta escalón de varios sistemas LTI en una misma figura.

>>step(sys1,'y:',sys2,'g--')

Podemos especificar colores y estilos de línea.
>>[y,t] = step(sys)

De esta forma obtenemos la respuesta escalón y, y el vector de tiempo t, utilizado en la simulación. No se
dibuja

Ejemplo:Graficar la respuesta al escalón unitario de la siguiente función de transferencia:
100 12
100
) (
) (
2
+ +
=
s s s C
s R


num=[0 0 100];den=[1 12 100];
t=[0:0.1:2];
[y,x,t]=step(num,den,t);
plot(t,y),grid
xlabel('tiempo')
ylabel('y(t)')
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
34
34

Figura 3.9 Gráfica de respuesta a un escalón


Ejemplo:Tenemos dos sistemas:
1 5 . 0
1
2
1
+ +
=
s s
sys y
4 5 . 0
1
3
2
+ +
=
s s
sys
Realizar con MATLAB una gráfica donde veamos la respuesta de los dos sistemas ante un escalón
unitario con un tiempo de simulación de 30s. También representar en la misma gráfica, la función escalón
unitario

%En este ejemplo veremos el uso del comando step
%----------------------------------------------------------
%Definicion de los sistemas:
sys1=tf([1],[1 0.5 1]);
sys2=tf([1],[1 0.5 4]);
%Representacion de la respuesta:
t=0:0.01:30; %Respuesta hasta los 30 s.
step(sys1,'r', sys2,'g',t);
%Representacion en la misma grafica
%Aplicaremos rejilla y pondremos un titulo con text:
grid
text(5, 1.4,'Respuesta de dos sistemas','FontSize',13);
%Representacion de la entrada
t0 = -2.0:0.01:-0.01; % definicion u(t)=0, -2<=t<=-.01
u0 = zeros(size(t0));
t1 = 0:0.01:30; % definicion u(t)=1, 0<=t<=25
u1 = ones(size(t1));
t = [t0 t1]; % creamos t and u(t)
u = [u0 u1];
hold on
plot(t,u);
legend('Sistema 1','Sistema 2','Escalon unitario');
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
35
35



Análisis mediante rampa unitaria
Señal de excitación: Rampa



Respuesta del sistema



Respuesta ante una rampa con MATLAB:
En la Control System Toolbox no existe ningún comando que determine la respuesta de un sistema ante
una rampa unitaria. A pesar de este inconveniente, podemos encontrar la respuesta mediante el comando
step.:
Para obtener la respuesta a una entrada en rampa de la función de transferencia del sistema G(s), hay
que dividir G(s) por s y utilizar la orden de respuesta a un salto.
Por ejemplo sea el sistema:
1
1
) (
) (
2
+ +
=
s s s R
s C

Para una entrada en rampa unitaria se tiene que
2
1
) (
s
s R = . Por tanto:
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
36
36
s s s s s s s s s
s
s C
1
) 1 (
1 1
1
1
1
1
) (
2 2 2 2
2
+ +
=
+ +
=
+ +
=
Entonces aplicamos el comando step a G(s)/s
Ejemplo: Respuesta ante una Rampa
Dado el siguiente sistema con una Función Transferencia
1
1
) (
) (
2
+ +
=
s s s R
s C
, obtener la respuesta ante una
rampa unitaria para un tiempo de respuesta de 7s. Incluir también en la misma gráfica la función rampa
aplicada en la entrada, para así poder ver el error del sistema.

%Respuesta ante una entrada unitaria rampa
%La respuesta a una entrada unitaria rampa se obtiene como la
% respuesta a un salto unitario de G(s)/s ***
%Primero introducimos el numerador y denominador de G(s)/s
num=[1];
den=[1 1 1 0];
%Creamos el sistema
sys=tf(num,den);
%Especificamos el tiempo de calculo en 7 s.
t=0:0.1:7;
%Guardamos la respuesta en un vector c
c=step(sys,t)
%Al representar la respuesta a una rampa, añadimos la entrada
%de referencia
%La entrada de referencia es t.El comando plot es:
plot(t,c,'ro',t,t,'g-');
%Introducimos la rejilla y las etiquetas:
grid
title('Respuesta ante una rampa unitaria del sistema G(s)=1/(s^2+s+1)');
xlabel('t seg');ylabel('Amplitud');


MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
37
37
En la práctica, la señal de entrada para un sistema de control no se conoce con anticipación, es por
esto que se suelen utilizar las señales de prueba vistas en la sección anterior. Sin embargo hay casos
donde la señal de entrada se conoce con anticipación y se puede expresar de forma analítica.

Respuesta ante una señal cualquiera con MATLAB
Existen casos en los que las funciones como este, impulse no son suficientes para estudiar un sistema. En
los casos que necesitemos la respuesta temporal ante otras entradas podemos utilizar el comando lsim.
La sintaxis para el comando lsim es la siguiente:

>>lsim(sys,u,t)

Este comando nos da la gráfica de la respuesta de un sistema sys ante una entrada definida por dos
vectores u y t, u será el vector de entrada y t el vector de tiempo. El vector u debe tener tantas filas como
elementos tiene t y tantas columnas como entradas tenga el sistema.

>>lsim(sys,u,t,x0)

Con x0 indicamos las condiciones iniciales del sistema. x0 debe ser un vector columna con tantas filas
como estados tenga el sistema. Esta función solo es valida para los sistemas descritos en variables de
estado.

>>lsim(sys1,sys2,...,sysN,u,t)
>>[y,t]=lsim(sys,u,t)

Al igual que con impulse y step es posible dibujar varias respuestas en una misma gráfica y también
tenemos la posibilidad de guardar la respuesta en un vector.
Para ayudarnos a generar el vector de entradas u, disponemos de el comando gensig. La sintaxis es la
siguiente:

>>[u,t]=gensig(tipo,tau,Tf,Ts)

El tipo de función puede ser 'sin', para onda senoidal, 'square' para onda cuadrada, y 'pulse' para onda de
pulsos. El argumento tau indica el periodo, Tf el tiempo final, y Ts el tiempo de muestreo.
Ejemplo: Respuesta ante una señal cualquiera con MATLAB
Sea un sistema con la siguiente función de transferencia:
25 4
4
) (
2
+ +
+
=
s s
s
s W realizar:
a) Representar la respuesta del sistema ante la entrada ) 3 ( 5 ) 3 ( ÷ = ÷ t t u
b) Representar la respuesta del sistema para una señal cuadrada con un periodo de 5s., durante 30s.
c) Representar la respuesta del sistema ante una entrada rampa unitaria. Representar también la
entrada rampa unitaria
clear all
%En este ejemplo veremos el uso de los comandos
% lsim y gensig
%Primero definimos el sistema
num=[1 4];
den=[1 4 25];
sys=tf(num,den);
% A)
t=-5:0.01:30;% Establecemos el tiempo de simulacion en 30 s
u1=50*exp(-3*t);% Introducimos la primera funcion de entrada
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
38
38
subplot(2,2,1),lsim(sys,u1,t);%Aplicamos lsim con la funcion
legend('respuesta ante u(t)');
% B)
[u,t]=gensig('square',5,30,0.1);%generamos la onda cuadrada
subplot(2,2,2),lsim(sys,u,t);%y dibujamos la respuesta
legend('respuesta ante onda cuadrada');
% C)
%Esta es otra manera de conseguir la respuesta ante una rampa
u=t;
subplot(2,2,3),lsim(sys,u,t)%Dibujamos la respuesta
hold
plot(t,t,'g');%Esta es la rampa unitaria, en verde
legend('respuesta del sistema','entrada rampa unitaria')
hold off

FUNCION step:
Se utiliza para obtener la respuesta de un sistema representado en función de transferencia o en variables
de estado, puede dar información numérica o gráfica de la salida o de los estados. Si la función step se
utiliza sin los argumentos del lado derecho se obtiene una gráfica automáticamente:

4.1.1 Rechazo de señales perturbadoras
Un efecto importante de la retroalimentación de un sistema de control es la eliminación parcial de las
señales perturbadoras. Como ejemplo especifico de un sistema con una perturbación no deseada ,
consideraremos primero un sistema de control de velocidad en lazo abierto de un motor de C . D.
controlado por armadura con una perturbación en la carga, Td(s) como se muestra en la fig. 4.1 , y
después el caso en lazo cerrado.

Figura 4.1 Control de velocidad de un motor de c.d. en lazo abierto

Como puede observarse se desprecia la inductancia. Para investigar los efectos de la perturbación en el
sistema, hacemos Va(s)=0 y consideramos solamente la perturbación Td(s).

Con estas consideraciones se redibuja el
diagrama a bloques

La funcion de transferencia nos queda o sea el cambio de velocidad debido a la perturbación en la carga
es:
m b a a
a
d
K K F R Js R
R
s T
s
+ +
=
) (
) ( e

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
39
39
Los valores de los parámetros para el caso en lazo abierto y cerrado se muestran en la tabla 4.1

Ra Km J F Kb Ka Kt
1 10 2 0.5 0.1 54 1

Tabla 4.1 Parámetros del sistema de control de velocidad
. Sustituyendo estos valores en la ecuación anterior se tiene:
5 . 1 2
1
) (
) (
+
=
s s T
s
d
e

Si el sistema tiene un buen rechazo a las perturbaciones , entonces esperamos que la perturbación Td(s)
tenga un efecto pequeño en la salida e(s).
error = lo que deseo – lo que obtengo = valor ideal – valor real

para este caso: lo que deseo es Va(s) mientras que lo que obtengo es e(s) la ecuacion del error es:

E(s)=Va(s)- e(s) . Relacionando el error con respecto a la perturbación:

) (
) (
) (
) (
) (
) (
s T
s
s T
s V
s T
s E
d d
a
d
e
÷ = como 0 ) ( = s V
a

) (
) (
) (
) (
s T
s
s T
s E
d d
e
÷ =

El error en estado estacionario de la velocidad debido al momento de torsión de la carga Td(s)=1 / s
(escalón unitario) se puede encontrar utilizando el teorema del valor final. Por tanto para el sistema en
lazo abierto se tiene:
6666667 . 0
1
5 . 1 2
1
) (
) (
) (
) (
0 0 0
÷ =
|
.
|

\
|
+
=
|
|
.
|

\
|
÷ = =
÷ ÷ ÷
s s
s Lim s T
s T
s
s Lim s sE Lim e
s
d
d
s s
ss
e


MATLAB calcula la respuesta de velocidad e(s) para la perturbación Td (s) 1/ s y el error en estado
estacionario.

El programa script se muestra en seguida :

%Control de velocidad de un Motor de cd en lazo abierto
%Para analizar el rechazo de perturbaciones
%
Ra=1;Km=10;J=2;F=0.5;Kb=0.1;
num1=[1];den1=[J F];num2=[Km*Kb/Ra];den2=[1];
[num,den]=feedback(num1,den1,num2,den2);
%Como el error da un valor negativo se le cambio de signo al numerador
Num=-num;
printsys(Num,den)
t=[0:1:10];
[yo,x,t]=step(Num,den);
plot(t,yo)
title('Respuesta a una perturbacion escalon en lazo abierto')
xlabel('tiempo[s]'),ylabel('velocidad'),grid
yo(length(t))

El valor deseado de e(t) es cero (recordar que Va (s) = 0) el error en estado estable es el valor final de
e(t) o sea E(s)=Va(s) - e(s) = - e(s) , en la figura 4.3 podemos ver que el error en estado estable es el
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
40
40
valor de la velocidad cuando el tiempo es de 7 segundos . Podemos obtener una aproximación del
valor del error en estado estable buscando el ultimo valor del vector de salida ' yo ' del programa de la
figura 4.2. e(·)= e0(7)= -0.663 rad/s


Figura 4.3 Respuesta de velocidad a una perturbación en lazo abierto
En la figura 4.4 se muestra el diagrama a bloques de un sistema de control de velocidad de un motor de C.
D. en lazo cerrado.

Figura 4.4 Control de velocidad de un motor de c.d en lazo cerrado
Considerando
Va(s)=0 y
redibujando el
diagrama anterior

La función de transferencia para una entrada V(s) = 0 es:
( )
b a t
a
m
d
K K K
R
K
F Js
s T
s
+ + +
÷
=
1
) (
) ( e
Sustituyendo
los valores
5 . 541 2
1
) (
) (
+
÷
=
s s T
s
d
e

Utilizamos MATLAB para obtener la respuesta en el tiempo e(t) para una perturbación Td(s)=1 / s . El
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
41
41
programa script de la Figura 4.5 muestra el procedimiento

%Control de velocidad de un motor de c.d. en lazo cerrado
%Para analizar el rechazo de perturbaciones
Ra=1;Km=10;J=2;F=0.5;Kb=0.1;Ka=54;Kt=1;
num1=[1];den1=[J F];num2=[Ka*Kt];den2=[1];
num3=[Kb];den3=[1];num4=[Km/Ra];den4=[1];
[numa,dena]=parallel(num2,den2,num3,den3);
[numb,denb]=series(numa,dena,num4,den4);
[num,den]=feedback(num1,den1,numb,denb,-1);
%Al igual que en el caso anterior se le cambia de signo porque el error es negativo
Num=-num;
Printsys(Num,den);
t=[0:0.005:0.002];
[yc,x,t]=step(Num,den);
plot(t,yc),grid
title('Respuesta a una perturbacion en lazo cerrado')
xlabel('tiempo[S]'),ylabel('velocidad'),grid
yc(length(t))

El error en estado estable se muestra en la gráfica de la figura 4.6 el cual se puede obtener del vector de
salida yc que se genera en el programa. La aproximación del valor de e en estado estable es: e(·)=
ec(0.02)= -0.0018 rad/s

puede observarse que con la retroalimentación se mejoro el rechazo de perturbaciones , con esto se
demuestra la importancia de la retroalimentación para reducir el efecto de las perturbaciones.

Figura No. 4.6 Respuesta a una perturbación en lazo cerrado

4.1.2 Control y ajuste de la respuesta transitoria de un sistema utilizando la retroalimentación

En la figura 5.7 se muestra el diagrama a bloques de un sistema de control retroalimentado la función de
transferencia del sistema es: ) (
12
1
) (
12
) (
2 2
s D
k s s
s R
K s s
K
s C
+ +
+
+ +
= En este ejemplo se analizaran los
efectos de la ganancia K sobre la respuesta transitoria del sistema
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
42
42
.
Figura 4.7 Sistema de control de un sistema de 20 orden
A continuación se muestra el programa script que genera las respuestas del sistema para diferentes
valores de K.

%Respuesta a una entrada escalon unitario R(s)1/s
%para K=50 y 100
numg=[1];deng=[1 12 0];k1=100;k2=50;
num1=k1*numg;num2=k2*numg
%
[numa,dena]=cloop(num1,deng);
[numb,denb]=cloop(num2,deng);
%
t=[0:0.05:2];
[y1,x,t]=step(numa,dena,t);
[y2,x,t]=step(numb,denb,t);
subplot(211),plot(t,y1),title('Respuesta al escalon para k=100')
xlabel('tiempo[s]'),ylabel('c(t)'),grid
subplot(212),plot(t,y2),title('Respuesta al escalon para k=50')
xlabel('tiempo[s]'),ylabel('c(t)'),grid


Figura 4. 9 Respuesta a una entrada escalón para K = 50 y 100
En las respuestas obtenida podemos observar que cuando se decrementa K se reduce el sobreimpulso y
el tiempo de establecimiento. En base a este análisis podríamos preferir el valor de K = 50. Sin embargo
existen otras consideraciones que deben ser tomadas en cuenta.

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
43
43
Antes de hacer la selección de la ganancia K , es importante considerar la respuesta del sistema a
perturbaciones.

%Respuesta a una Perturbacion Td(s)=1/s
%para K=100 y 50
numg=[1];deng=[1 12 0];k1=100;k2=50;
%
[numa,dena]=feedback(numg,deng,k1,1,-1);
[numb,denb]=feedback(numg,deng,k2,1,-1);
%
t=[0:0.05:2];
[y1,x,t]=step(numa,dena,t);
[y2,x,t]=step(numb,denb,t);
subplot(211),plot(t,y1),title('Respuesta a una perturbacion k=100')
xlabel('tiempo[s]'),ylabel('c(t)'),grid
subplot(212),plot(t,y2),title('Respuesta a una perturbacion k=50')
xlabel('tiempo[s]'),ylabel('c(t)'),grid

Figura 4.11 Respuesta a una perturbación para K = 50 y 1 00

En la tabla 5.2 se muestran el máximo sobreimpulso porcentual (MP%) , Tiempo de establecimiento (Ts) y
el Error en estado estacionario (ess) del sistema de control analizado para K = 50 y K = 1 00 . La decisión
para escoger K depende de las necesidades del diseñador.

K=50 K=100
MP% 0 10
Ts 1.1 1.3
ess 2% 1%
Tabla 4.2 Máximo Sobreimpulso Porcentual,Tiempo de establecimiento y error en estado estable

4.2.- FUNCIONAMIENTO DE LOS SISTEMAS DE CONTROL
Para analizar y diseñar un sistema de control se debe primero establecer adecuadamente las
especificaciones de funcionamiento. Estas pueden presentarse en el dominio del tiempo o en el dominio
de la frecuencia. En el dominio del tiempo generalmente son: El tiempo de establecimiento, porcentaje de
sobreimpulso, tiempo de pico y especificaciones del error en
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
44
44
estado estable.

En esta sección se analizan las especificaciones de funcionamiento en el dominio de tiempo dadas en
términos de respuesta transitoria. Se introducen las funciones de Matlab, impulse y Isim , las cuales se
utilizan para simular sistemas lineales.

4.2.1 Simulación de un sistema de segundo orden para una entrada escalón

En el siguiente ejemplo se obtiene la respuesta de un sistema de segundo orden a una entrada escalón,
variando el coeficiente de amortiguamiento Se utiliza la función step de MATLAB.

Figura 4.12 Sistema de segundo orden

La salida del sistema es :
2 2
2
2
) (
n n
n
s s
s C
e ,e
e
+ +
=
En la figura 5.13 se muestra el programa script para obtener la respuesta a un escalón del sistema de
segundo orden variando el coeficiente de amortiguamiento

%Respuesta a un escalon de un sistema de segundo orden
t=[0:0.1:12];num=[1];
z1=0.1;den1=[1 2*z1 1];
z2=0.2;den2=[1 2*z2 1];
z3=0.4;den3=[1 2*z3 1];
z4=0.7;den4=[1 2*z4 1];
z5=1.0;den5=[1 2*z5 1];
z6=2.0;den6=[1 2*z6 1];
[y1,x,t]=step(num,den1,t);[y2,x,t]=step(num,den2,t);
[y3,x,t]=step(num,den3,t);[y4,x,t]=step(num,den4,t);
[y5,x,t]=step(num,den5,t);[y6,x,t]=step(num,den6,t);
plot(t,y1,t,y2,t,y3,t,y4,t,y5,t,y6),grid
xlabel('tiempo'),ylabel('C(t)')
title('z=0.1,0.2,0.4,0.7,1.0,2.0’)

En la figura 4.14 se muestran las gráficas de respuesta de sistema de segundo orden para una entrada
escalón y zeta de 0. 1 , 0.2 , 0.4, 0.7 , 1.0, 2.0.

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
45
45

Figura 4.14 Respuesta de un sistema de segundo orden a una entrada escalón

Esto mismo también lo puede hacer de la manera siguiente:

%RESPUESTA AL ESCALON UNITARIO
%DE UN SISTEMA DE SEGUNDO ORDEN
t=[0:0.1:12];wn=1;nu=[wn^2];
z(1)=0.1;z(2)=0.2;z(3)=0.4;
z(4)=0.7;z(5)=1.0;z(6)=2.0;
hold on
for k=1:6
de=[1 2*z(k)wn 0];
[num,den]=cloop(nu,de);
[y,x,t]=step(num,den,t);
plot(t,y,’k-‘)
end
title(‘Z=0.1,0.2,0.4,0.7,1.0,2.0’),grid
xlabel('tiempo'),ylabel('C(t)')

Al correrlo en MATLAB obtendrá:
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
46
46

Como se observa es la misma grafica anterior. Es obvio que cada quien puede programar de acuerdo con
sus gustos y habilidades, lo anterior es un ejemplo.

En seguida se analiza la respuesta de un sistema de segundo orden para una entrada impulso, se utiliza
la función impulse de MATLAB.

4.2.2.- Simulación de un Sistema de Segundo Orden para una entrada Impulso

La respuesta al impulso es la derivada de la respuesta a un escalón. Para obtener la respuesta a un
impulso se utiliza la función impulse como se muestra a continuación:

[Y,X,T] = IMPULSE(NUM,DEN,.,.)

Para el ejemplo anterior considerando que la señal de prueba es la función impulso, simplemente
modificamos la línea 10 donde tenemos

[y,x,tl=step(num,den,t); en lugar de step escribimos impulse y al correr matlab tenemos:

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
47
47
Figura 4.17 Respuesta del mismo sistema de segundo orden a una entrada impulso.

4.2.3 .- Respuesta de un Sistema de Control para una entrada Arbitraria

Si se requiere simular un sistema de control para entradas arbitrarias , se puede utilizar la función Isim de
MATLAB :

En el siguiente ejemplo se utiliza la función Isim para simular un sistema de control para una entrada
arbitraria ( señal triangular ). En la figura 4.19 se muestra el diagrama a bloques de un sistema de control.

Figura 4.18 Diagrama a bloques de un sistema de control.

Suponiendo que el controlador G1(s) , es del tipo proporcional + integral se tiene
s
K
K s G
2
1 1
) ( + =
Y si la entrada es una rampa se tiene que el error en estado estacionario es:

K K
e
ss
2
1
=
El efecto de la ganancia K2 del controlador sobre el error en estado estacionario es evidente cuando K2 es
grande el error en estado estable es pequeño y viceversa. En la figura 4.20 se muestra el programa script
y la respuesta a una señal de entrada triangular.

%Programa script para obtener la respuesta de un
%sistema de control para obtener una senal triangular
numg=[10 20];deng=[1 10 0];
[num,den]=cloop(numg,deng);
t=[0:0.1:8.2]';
v1=[0:0.1:2]';v2=[2:-0.1:-2]';v3=[-2:0.1:0]';
u=[v1;v2;v3];
[y,x]=lsim(num,den,u,t);
whitebg('w')
plot(t,y,'b-',t,u,'r-');
xlabel('Tiempo en segundos'),ylabel('C(t)'),grid
title(‘señal triengular’)
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
48
48

Figura 4.19 Programa script y respuesta a una señal triangular

CAPITULO 5 ESTABILIDAD DE LOS SISTEMAS DE CONTROL EN EL DOMINIO DEL TIEMPO
5.1 INTRODUCCIÓN

Una característica muy importante del funcionamiento transitorio de un sistema es su estabilidad. Un
sistema estable se define como aquel que tiene una respuesta limitada. Esto es, se dice que el sistema es
estable si estando sujeto a una entrada o perturbación limitada, su respuesta es de magnitud limitada.

La localización de los polos de un sistema en el plano s indica la respuesta transitoria resultante. Los
polos en la parte izquierda del plano s dan como resultado una repuesta decreciente para entradas de
perturbación, por lo tanto un sistema estable. El método de Routh-Hurwitz determina el numero de polos
inestables de un sistema en lazo cerrado.

La estabilidad relativa y el funcionamiento transitorio de un sistema de control de lazo cerrado, están
directamente relacionados con la localización en el plano s de las raíces de lazo cerrado de la ecuación
característica. Así mismo, con frecuencia , es necesario ajustar uno o mas parámetros del sistema para
obtener las localizaciones adecuadas de las raíces. Por tanto, vale la pena determinar como se desplazan
en el plano s las raíces de la ecuación característica de un sistema dado, a medida que varían los
parámetros; es decir, es útil determinar el lugar geométrico de las raíces en el plano s a medida que se
varia un parámetro. El método del lugar geométrico de las raíces fue planteado por Evans en 1948 y se
ha desarrollado y utilizado mucho en el análisis y diseño de los sistemas de control.

En este capitulo se utiliza MATLAB para verificar el criterio de Routh-Hurwitz y para obtener gráficas del
lugar de las raíces. Las funciones de MATLAB que se usaran son rlocus , rlocfind.

5.2.- Criterio de estabilidad de routh -hurwitz
Dada una ecuación característica con coeficientes constantes, podemos utilizar el criterio de Routh para
determinar el numero de raíces en el semiplano derecho. Por ejemplo:
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
49
49

Consideremos la ecuación característica: 0 24 2 ) (
2 3
= + + + = s s s s G

Asociada con el sistema de control de lazo cerrado mostrado en la figura 5. 1. El arreglo de Routh
correspondiente se muestra en la figura 6.2.

figura 5.1 Sistema de control de lazo cerrado
Los dos cambios de signo en la primera columna, indica que hay 2 raíces de la ecuación característica en
el semiplano derecho, por lo tanto el sistema es inestable. El arreglo de Routh se muestra en seguida:
24
0 22
24 1
0 2 1
0
2
3
s
s
s
s
÷

Figura 5.2 Arreglo de Routh - Hurwitz
Utilizando MATLAB podemos verificar el resultado del criterio de Routh-Hurwitz, esto es calculando
directamente las raíces de la ecuación característica empleando la función roots,, como se muestra en la
figura 5.3.

numg=[1];deng=[1 1 2 23];
[num,den]=cloop(numg,deng);
roots(den)
ans =
-3.0000
1.0000 + 2.6458i
1.0000 - 2.6458i

Cuando la ecuación característica esta en función de un parámetro K, el método de RouthHurwitz puede
utilizase para determinar el rango de valores que el parámetro puede tener para que el sistema sea
estable. Consideremos el sistema de control de la figura 5.4. La ecuación característica es:
0 4 ) (
2 3
= + + + = K s s s s F

Utilizando el método de Routh-Hurwitz encontramos que el rango de K para que el sistema sea estable es
0 < K < 8

Figura 5.4 Sistema de Control en lazo Cerrado

MATLAB puede ser usado para verificar gráficamente este resultado. En la figura 5.5 se muestra el
programa script en el cual primero se determina un vector con los valores de K para los cuales queremos
calcular las raíces de la ecuación característica, después usamos la función roots para calcular las raíces
y plot para graficarlo.


MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
50
50
clear all
%Programa script para calcular las raices de la ecuacion
%caracteristica q(s)=s^3+2s^2+4s+k
%para 0<k<20
k=[0:0.5:20];
for j=1:length(k)
q=[1 2 4 k(j)];
p(:,j)=roots(q);
end
plot(real(p),imag(p),'x'),grid
xlabel('eje real'),ylabel('eje imaginario’)

En la figura 5.6 se muestran los resultados gráficos del rango de valores del parámetro K para los cuales
el sistema es estable. Estos resultados gráficos verifican los resultados obtenidos por el método de
Routh-Hurwitz.

Figura 5.6 Localización de las raíces para 0 < K < 20

El programa script de la figura 5.5 utiliza la función for para ejecutar repetidamente una serie de
instrucciones en cierto numero de veces, su forma general es:

for variable = expresión
relación
..............
.............
relación
end

Figura 5.7 La Función For
5.3.- Lugar geométrico de las raíces
Para obtener el lugar de las raíces de un sistema. Se debe determinar su ecuación característica, la cual
es de la forma: ) ( 1 ) ( s KG s D + =
Para obtener el lugar de las raíces, Matlab dispone del comando rlocus. Las diferentes sintaxis para
utilizar este comando son:

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
51
51
rlocus(NUM,DEN)

Calcula y dibuja el lugar de las raíces.
MatLab generará automáticamente un conjunto de valores de la ganancia K.

rlocus(NUM,DEN,K)

calcula y dibuja el lugar de las raíces cuando se trabaja con la función de transferencia y ha sido
previamente definido el rango de valores de K. Por ejemplo de 0 a 100 con incrementos de 10: k=0:10:100

R = rlocus(NUM,DEN,K) o [R,K] = rlocus(NUM,DEN)

no dibuja el lugar de las raíces pero almacena en la matriz R, de longitud igual al número de elementos de
K, la localización de las raíces. R tendrá tantas columnas como raíces existan, estas pueden además ser
complejas.

Para la siguiente forma modificada de la ecuación característica de un sistema se desea hallar el lugar de
las raíces mediante MatLab:
s s s
k s D
2 3
1
1 ) (
2 3
+ +
+ =
>>num=[0,0,0,1];
>>den=[1,3,2,0];
>>rlocus(num,den)

Ejemplo:Consideremos el sistema siguiente.

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
52
52
La función de transferencia en lazo cerrado es:
) 1 ( ) 3 )( 2 (
) 3 )( 1 (
) (
) (
+ + + +
+ +
=
s k s s s
s s K
s R
s C

la ecuación característica puede escribirse como: 0
) 3 )( 2 (
) 1 (
1 =
+ +
+
+
s s s
s K

la forma general de la ecuación característica para poder aplicar la función rlocus es: 0
) (
) (
1 = +
s Q
s P
K
donde K es el parámetro que se varía de cero a infinito.
r=raices
K=ganancia
[r , k] = rlocus ( p , q)

Cuando se utiliza la función rlocus sin los argumentos [r,k] se genera la gráfica del lugar de las raíces.
Cuando se utiliza con los argumentos [r,k] como se muestra en la figura 5.9 la función rlocus retorna las
raíces y las ganancias asociadas.
» p=[1 1];q=[1 5 6 0];
» rlocus(p,g)
Figura 5. 1 0 Lugar de las Raíces.

Función rlocfind
MatLab dispone del comando rlocfind que permite determinar los polos del sistema para una valor
determinado de k. Su sintaxis es:

[K,POLES] = rlocfind(num,den)

permite determinar los polos para un valor determinado de k. Por medio del cursor en el lugar de las raíces
se selecciona una localización, MatLab retorna el valor de k para esta localización y los polos asociados a
esta ganancia.

Al ejecutar el comando rlocfind con la función de transferencia anterior, MatLab activa la ventana de
figuras en espera de que el usuario seleccione un punto del lugar de las raíces mediante el cursor. En este
caso el punto seleccionado fue -2.4623 en la parte real y - 0.0132 en la parte imaginaria.

» [k,poles]=rlocfind(num,den)
Select a point in the graphics window
selected_point =
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
53
53
-2.4623 - 0.0132i
k =
1.6655
poles =
-2.4625
-0.2688 + 0.7773i
-0.2688 - 0.7773i

Para seleccionar el punto en el cual calcular los polos del lugar de las raíces sin usar el cursor se agrega
un parámetro al comando rlocfind. Este debe ser el punto o los puntos en donde se desea tomar el valor
de k. La nueva sintaxis es:

[K,POLES] = rlocfind(num,den,P)

P debe definirse previamente indicando la parte real e imaginaria del mismo. Por ejemplo: P=3+0i o P=1-
0.555i.

La función rlocfind se utiliza para determinar el valor del parámetro K en un punto seleccionado de la
gráfica del lugar de las raíces.

Considerando el ejemplo anterior se desea encontrar el valor de la ganancia K en un punto deseado.El
programa responde pidiendo seleccionar un punto en la gráfica del lugar de raíces para poder detenninar
ía ganancia en ese punto.

» p=[1 1];q=[1 5 6 0];
» rlocfind(p,q)
Select a point in the graphics window
selected_point =
-2.4560 + 0.3553i
ans =
0.6219

CAPITULO 6.- RESPUESTA EN LA FRECUENCIA
Para el estudio de un sistema en el dominio de la frecuencia existen tres herramientas disponibles en
MatLab como son: los diagramas de Bode, de Nyquist y de Nichols.

6.1.- Diagramas de Bode
El comando bode calcula la magnitud y la fase de la respuesta en frecuencia de sistemas continuos,
lineales e invariantes en el tiempo.
Para obtener el diagrama de Bode de una función de transferencia, se definen dos vectores cuyos
elementos son los coeficientes de los polinomios del numerador y del denominador en potencias
decrecientes de S. Estos vectores son usados en el comando bode con la siguiente sintaxis:
bode(num,den). Se define la función de transferencia:
1 25 . 0
1
) (
) (
) (
2
+ +
= =
s s s U
s Y
s H

>>y=[1];
>>u=[1 0.25 1];
>>bode(y,u)

MatLab despliega la grafica de Bode:
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
54
54

Ejemplo Obtenga el diagrama de bode de la siguiente funcion de transferencia:
25 4
25
) (
2
+ +
=
s s
s G
» num=[25];den=[1 4 25];
» bode(num,den)

Figura 6.1.- Diagrama de bode

Practiquemos lo mismo pero con los argumentos
num=[25];den=[1 4 25];
w=logspace(0,2,100);
[mag,phase,w]=bode(num,den,w);grid
magdb=20*log10(mag);
fase=180*phase/pi;
subplot(211),semilogx(w,magdb),grid
xlabel('frecuencia[rad/s]')
ylabel('magnitud en decibeles')
subplot(212),semilogx(w,fase),grid
xlabel('frecuencia[rad/s]')
ylabel('angulo en grados')


logspace(d1, d2, n) Genera n puntos igualmente espaciados en forma logaritmica entre las decadas
10^d1 a la decada 10^d2

Para especificar un rango deseado de frecuencias en las cuales se desea obtener el diagrama de Bode,
se emplea un vector de frecuencias en el que se especifica la frecuencia inicial, el incremento y la
frecuencia final. Por ejemplo:
>>w=0:0.1:100;
>>bode(y,u,w)
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
55
55
Este comando muestra el diagrama de Bode entre 0 y 100 rad/s.

Para obtener el margen de ganancia, el margen de fase, la frecuencia de cruce de ganancia y la
frecuencia de cruce de fase MatLab dispone del comando margin. Las diferentes formas de utilizar este
comando son:

[Gm,Pm,Wcg,Wcp] = MARGIN(NUM,DEN)
[Gm,Pm,Wcg,Wcp] = MARGIN(MAG,PHASE,W)

toma los vectores de magnitud, fase y frecuencia del diagrama de Bode.

>>num=10;
>>den=[1 0.25 1];
>>[Gm,Pm,Wcg,Wcp] =margin(num,den)
Matlab responde
Gm = Inf
Pm =4.7487
Wcg = NaN
Wcp =3.3114

>>margin(num,den)
6.2.- Graficas de Nyquist
Otra herramienta de análisis en el dominio en la frecuencia que ofrece MatLab es el diagrama de Nichols.
Para obtener el diagrama de Nichols se utiliza el comando nichols, cuya sintaxis es idéntica a la del
comando bode: nichols(num,den,W) si se emplea la función de transferencia.
s s s s
s H
+
=
+
=
2
04 . 0
100
) 1 04 . 0 (
100
) (
>>y=[0 0 100];
>>u=[0.04 1 0];
>>nichols(y,u)
MatLab despliega el diagrama de Nichols:

Otra herramienta de análisis en el dominio en la frecuencia que ofrece MatLab es el diagrama de Nyquist.
Para obtenerlo se utiliza el comando nyquist, cuya sintaxis es idéntica a la del comando bode y nichols:
nyquist(num,den,W) si se emplea la función de transferencia.
5 6
1
) (
2
+ +
=
s s
s H
>>y=[1];
>>u=[1 6 5];
>>nyquist(y,u)
MatLab despliega en la ventana de figuras el diagrama de Nyquist:
Hagamos un ejemplo:
1 8 . 0
1
) (
2
+ +
=
s s
s G 1
num=[1];den=[1 0.8 1];
nyquist(num,den)
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
56
56

Figura 6.2.- Grafica de nyquist sin argumentos
Ahora con argumentos
num=[1];den=[1 0.8 1];
w=[0.1:0.01:100];
[re,im,w]=nyquist(num,den,w);
plot(re,im,re,-im),grid


Figura 6.3.- Grafica de nyquist utilizando argumentos

Controladores PID
Para implementar los diferentes tipos de controladores (P, PD, PI, PID) en MatLab se hace uso de la
función de transferencia propia del sistema a objeto de estudio. Si dicho sistema es de la forma:

donde G(s) es la función de transferencia de la planta o proceso; mientras que G
C
(s) es la función de
transferencia del controlador.

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
57
57
Para el caso del controlador proporcional, G
C
(s)=Kp, que es una constante o valor escalar. El
controlador PI es G
C
(s)=Kp + Ki/S que puede representarse como una relación ente dos polinomios.
El controlador PID es G
C
(s)=Kp + Ki/S + Kd S que se representa como:
s
K s K s K
s G
i p d
C
+ +
=
2
) (
que es de nuevo una relación entre dos polinomios. Si se multiplica el controlador G
C
(s) por la función de
transferencia del proceso o planta G(s) se formará la función de transferencia de lazo abierto. Por ejemplo
un G(S) puede ser:
s s s
s G
20 10
1
) (
2 3
+ +
=
Para obtener la respuesta en lazo abierto ante una entrada escalón unitario tenemos:
2 3 4
2
2 3
2
20 10 ) 20 10 (
) ( * ) (
s s s
K s K s K
s s s s
K s K s K
s G s G
i p d i p d
C
+ +
+ +
=
+ +
+ +
=
>>Kp=50;
>>Ki=1;
>>Kd=10;
>>num=[Kd Kp Ki];
>>den=[1 10 20 0 0];
>>step(num,den)
>>Kp=500;
>>Ki=1;
>>Kd=100;
>>num1=[Kd Kp Ki];
>>den1=[1 0];
>>num2=1;
>>den2=[1 10 20 0];
>>[numc,numd]=cloop(conv(num1,num2
),
conv(den1,den2),-1);
>>step(numc,denc)




Capitulo 7.-Características básicas de SIMULINK
Funcionalidad básica: simulación de sistemas dinámicos.
Características principales:
Se trata de un entorno gráfico dentro de MATLAB (GUI)
El sistema se representa como una interconexión de bloques elementales.
Cada bloque lleva asociado un modelo matemático que representa su relación entrada-salida.
Los bloques de obtienen de tres posibles fuentes
- Biblioteca estándar de SIMULINK
- Bibliotecas comérciales (llamadas <<Blocksets>>)
- Bibliotecas creadas por los usuarios.
¿Qué puede ser modelado con SIMULINK?
Cualquier cosa que pueda ser modelada matemáticamente. Por ejemplo:
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
58
58

Un ejemplo de representación mediante SIMULINK sería el siguiente:

El esquema representa un sistema de calefacción para una vivienda. Se supone conocida la variación de
la temperatura en el exterior de la casa y en función de ello se puede observar en qué instantes se
conecta y se desconecta la calefacción, cuáles son las variaciones de la temperatura en el interior de la
casa y cuál es el coste de la calefacción. Este ejemplo proviene de una demo de SIMULINK. (Teclear
thermo en la ventana de comandos)
Tipos de bloques en SIMULINK
Los bloques de SIMULINK los podemos
estructurar en las siguiente categorías:
Sources: Entradas o fuentes de señales.
Constantes
Senoidales
Cuadradas
Todas estas categorías de bloques se muestran en la
ventana inicial de SIMULINK. El procedimiento de trabajo
para la creación de un modelo será seleccionar los
elementos adecuados de entre los presentes en estas
categorías, colocarlos sobre la ventana de diseño y
establecer las conexiones entre ellos. La figura siguiente
muestra la ventana inicial de SIMULINK
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
59
59
Escalón
Aleatorias
etc.
Sinks: Salidas o dispositivos de
visualización/almacenamiento de
variables del sistema.
Osciloscopio
Fichero
Gráfico
etc.
Discrete/Linear/Continuos: Representan
sistemas sencillos mediante su relación
entrada/salida.
Discrete: sistemas discretos
(muestreados). Dominio z.
Linear: Sistemas continuos lineales.
Dominio s.
Continuos: Sistemas continuos no
lineales. Dominio t.
Signals & Systems: Se utilizan para
conectar elementos o estructurar
modelos.
Subsistema: permite jerarquizar diseños
Multiplexadores/demultiplexadores:
agrupan o desagrupan señales.
Memorias: permiten almacenar valores.
Functions & Tables/Math: Funciones y
elementos matemáticos
Polinomios
Ganancias
etc.
Blocksets/toolboxes: Elementos
especificos para diferentes aplicaciones.
comunicaciones
redes neuronales
control
etc.


Creación de un modelo sencillo:
Como ejemplo, crearemos un modelo que nos permita observar las variaciones en el comportamiento de
un sistema de segundo orden. Utilizaremos un sistema definido por la siguiente función de transferencia:

Y comprobaremos cuál es su respuesta ante una señal de tipo escalón. La creación de este modelo
seguirá los siguientes pasos:
Primer paso: creación del modelo.
Segundo paso: introducción de bloques en el modelo.
Tercer paso: modificación de parámetros en los bloques introducidos.
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
60
60
Cuarto paso: interconexión de elementos.
Quinto paso: lanzamiento de la simulación y comprobación de resultados.

En el siguiente Viewlet podemos ver la creación de este modelo

Ejemplo: Compensador de atraso de fase mediante Simulink
Dado el siguiente sistema:

Considerando que los valores de los parámetros del motor son: J=0.01, b=0.1, K=0.01, R=1, L=0.5.
a) Modelar el sistema mediante simulink y estudiar la señal de salida
b) Modelar el sistema mediante Simulink al incorporar un compensador de atraso de fase y
estudiar la señal de salida
Primero modelamos el sistema:
El sistema se modela sumando las fuerzas que actúan en el motor de inercia e integrando la
aceleración para obtener la velocidad.
También se utilizan las Leyes de Kirchoff para resolver el circuito.
Primero se implementa en Simulink estas ecuaciones:

Insertamos un bloque integrador y dibujamos lineas en sus terminales de entrada y salida. La
entrada la llamaremos "d2/dt2(theta)" y la linea de salida "d/dt(theta)".
Insertamos otro bloque integrador y nombramos su entrada como "d/dt(i)" y la salida "i".
Después implementamos las ecuaciones obtenidas con las leyes de Kirchoff.

Se van introduciendo las ecuaciones mediante bloques de ganancia y sumadores. También
introducimos el bloque Step en la entrada del sistema y el bloque Scope en la salida del
mismo. En los parametros del bloque Step introducimos"Step Time" 0.
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
61
61

Una vez introducimos compilamos el
programa y obtenemos la señal de salida
del sistema modelado.




Segundo implementamos el sistema con un compensador de atraso de fase (lag
compensator)
En este ejemplo el compensador tiene la siguiente función de transferencia:
Creamos un nuevo modelo de Simulink, introduciendo un bloque de subsistema que se
refiere al sistema modelado anteriormente.
Introducimos un bloque sumador, un bloque de función de transferencia introduciendo los
datos del numerador "[50 50]" y del denominador "[1 0.01]". También introducimos un bloque
Step definiendo "Step Time" 0 y un bloque Scope en la salida del sistema.
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
62
62

Una vez definido el sistema compilamos el
programa y obtenemos la señal de salida en
lazo cerrado con el compensador de atraso
de fase


Ejemplo: Modelos en espacio de estado
Ejemplo: Modelos en espacio de estado.
Dada la ecuación de estado de un sistema y la ecuación de salida.

a) Pasar el sistema a ecuaciones de estado mediante MATLAB utilizando el comando ss.
b) Pasar el sistema discreto a ecuaciones de estado considerando el tiempo de muestreo 0.01s.
c) Calcular la ganancia de la matriz estática d.
%ejemplo: Modelo de estado

% primero introducimos la matrices de estado, de entrada de salida y de transmision directa.
a=[0 1 0; 0 0 1; -18 -27 -10]
b=[0;0;1]
c=[1 0 0]
d=0
sys=ss(a,b,c,d) % creamos el modelo en espacio de estado
sys=ss(a,b,c,d,0.01) % si fuera un sistema discreto de añade el tiempo de muestreo.
sys=ss(d) % ganancia de la matriz d
Introducidos los valores de las matrices a,b,c, y d
utilizando el comando ss, creamos un modelo de
estado.
Si el sistema es discreto se introduce el tiempo de
muestreo y se crea el modelo de estado
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
63
63










.Mediante el comando introducido en el código fuente podemos obtener la matriz estática d.

Ejemplo: Ecuaciones diferenciales con derivadas de la función excitación
Ejemplo: Ecuaciones diferenciales con derivadas de la función excitación.
Dadas la ecuación de estado y de salida de un sistema.

Considerando la matriz de transmisión directa de valor 1. Calcular
a) obtener el modelo
b) utilizar un comando para obtener las matrices del sistema
c) Llevar el modelo a la forma canónica diagonal
%ejemplo:Funciones diferenciales con derivadas de la funcion excitacion
% primero introducimos las matrices del sistema
A=[1 2 3; 4 5 6; 7 8 9];
B=[1;0;1];
C=[1 0 0];
D=1;
sys=ss(A,B,C,D)
% con esta funcion obtenemos las matrices
[A,B,C,D,]=ssdata(sys)
% llevar el modelo a la forma canonica diagonal
csys=canon(sys)
con la función ss creamos un objeto que contiene toda la información del sistema.








A través de comando ssdata obtenemos las
matrices del sistema.
con la función canon llevamos el modelo a la forma
canónica diagonal

MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
64
64









.
Ejemplo: De modelo de estado a función de transferencia
Ejemplo: De modelo de estado a función de transferencia.
Dadas las ecuaciones de estado del sistema:

Pasar de ecuación de estado a función de transferencia utilizando MATLAB
Primero introducimos en MATLAB las matrices de salida entrada, de estado, etc. del sistema estudiado.
%ejemplo: De modelo de estado a funcion de transferencia
% Introducimos las matrices de la ecuacion de estado
A=[0 1 0; 0 0 1; -18 -27 -10];
B=[0;0;1];
C=[1 0 0];
D=0;
% convertimos el modelo a funcion de transferencia
[NUM,DEN]=ss2tf(A,B,C,D)
sys=tf(NUM,DEN)
Formulado el código obtenemos el modelo transformado en función de transferencia


Ejemplo: De función de transferencia a modelo de estado
Ejemplo: De función de transferencia a modelo de estado.Dada la función de transferencia del sistema:

Transformar esta función de transferencia a modelo de estado.
Introduciendo estos comandos en MATLAB, podemos pasar de un modelo a otro.
%ejemplo: De funcion de transferencia a modelo de estado
%-----------------------------------------------------------------------------
% itroducimos la funcion de transferencia
NUM = [1 1]
DEN = [1 3 3 2]
sys=tf(NUM,DEN)
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
65
65
% convertimos el modelo a espacio de estado
[A,B,C,D]=tf2ss(NUM,DEN)
Se obtiene la transformación de función de transferencia a modelo de estado.






Ejemplo: Condiciones iniciales
Ejemplo: Condiciones iniciales
Dado el siguiente sistema representado mediante ecuaciones de estado
(
¸
(

¸

(
¸
(

¸
÷ ÷
=
(
(
¸
(

¸

-
-
2
1
2
1
0 7814 . 0
7814 . 0 5572 . 0
x
x
x
x
| |
(
¸
(

¸

=
2
1
4493 . 6 9691 . 1
x
x
y
Estudiar la salida del sistema, con condiciones iniciales x0=1
%-----------------------------------------------------------------------------
%REG.AUTOMATICA Y MATLAB
%ejemplo:Condiciones iniciales
%-----------------------------------------------------------------------------
% primero introducimos las matrices del sistema
A=[-0.5572 -0.7814; 0.7814 0]
C=[1.9691 6.4493]
x0=[1;0]
sys=ss(A,[],C,[])
% introducimos la condicion inicial del sistema
initial(sys,x0)
% Realizamos la accion inversa
[y,t,x]=initial(sys,x0)









MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
66
66


BIBLIOGRAFIA

Nahomi Ehrich Leonard and Williams S. Levine;”Using MATLAB to Analyze and Design
Control System”; The Benjamin/Cummings Publishing Company,Inc.

Katsuhiko Ogata;”Solving Control Engineering problems whit MATLAB”;Prentice Hall
1994.

Duane Hanselman y Bruce Littlefield;”MATLABedicion de estudiante”,Prentice Hall 1996



Sign up to vote on this title
UsefulNot useful