You are on page 1of 66

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 ingeniera, nosotros
como institucin acadmica comprometidos con la calidad en el servicio educativo, estamos conscientes
de la importancia de la utilizacin de la computadora como una herramienta muy poderosa de apoyo en el
proceso de enseanza-aprendizaje.

El uso de las computadoras y para facilitar el aprendizaje de los conceptos propuestos por la Teora de
Control, surgen herramientas que proporcionan una nueva forma de solucionar problemas de control. Las
herramientas CACSD (Computer Aided Control System Design, Diseo de Sistemas de Control -
Auxiliados por Computadora) han sido de gran ayuda para la solucin de estos problemas.

Algunos de los paquetes ms 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 ms avanzado en programas de clculo matricial.
MATLAB es un sistema interactivo cuyo elemento bsico de datos es una matriz que no requiere
dimensionamiento.

MATLAB se utiliza para investigacin y para resolver problemas prcticos de ingeniera y matemticas,
con un gran nfasis en aplicaciones de control y procesamiento de seales. MATLAB tambin proporciona
una serie de soluciones especficas denominadas TOOLBOXES. Estas son muy importantes para la
mayora 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 clculo tcnico de
altas prestaciones para clculo numrico y visualizacin. Integra:
- Anlisis numrico
- Clculo matricial
- Procesamiento de seales
- Grficos

El aprendizaje de las tcnicas de control para el diseo y optimizacin de sistemas ha sido un obstculo
en la formacin de ingenieros. La falta de herramientas especializadas ha sido determinante.

Se asume que cualquier ingeniero encargado del diseo de sistemas de control tiene a su disposicin 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 INTRODUCCIN
MATLAB es un programa interactivo para clculos cientficos y de ingeniera. La familia de programas de
MATLAB incluye un programa base y una gran variedad de mdulos, (denominados TOOLBOXES), como
el de Sistemas de Control, Identificacin, Optimizacin, 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 teora de control clsico 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 diseo de controladores

En una sesin tpica de MATLAB bsicamente se utilizan relaciones, matrices, grficas y programas
scripts.

1.2 Relaciones Fundamentales
Despus 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 estn disponibles los comandos de ayuda y demostracin. Para ejecutarlos se
escribe el comando en la lnea de comandos despus del smbolo >> y se presiona la tecla <Enter>. Por
ejemplo:

>>help ayuda sobre los diferentes comandos de MatLab.
>>demo hace una demostracin 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 expresin a una variable.

>>variable = expresin

La forma de interactuar con MatLab es a travs de la lnea de comandos. Puede ejecutarse un comando si
este escrito despus del smbolo >> y presione <Enter>.

Se muestra una relacin simple donde los comandos se introducen tal como ellos se escriben
matemticamente. >>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 fciles de memorizar. MATLAB reconoce los primeros 19 caracteres del nombre
de una variable y solamente requiere que el primer carcter de una variable sea una letra, adems es
sensible a maysculas y minsculas por ejemplo A y a son variables diferentes y las funciones de
MATLAB deben estar en minsculas.

Si no se desea crear una nueva variable pero se quiere saber el valor de una expresin, se puede teclear
la expresin 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 expresin.
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 nmeros, operadores, funciones y variables que hallan
sido previamente definidas. Por ejemplo: >>c= a*(b-1)
c =13.3333
Si se esta tecleando una expresin y no se completa en la lnea, se utilizan tres o mas puntos al final de la
lnea y se continua tecleando en la siguiente lnea, por ejemplo: >>p=1+2+...
3+4+6;
Los operadores ' matemticos que se
utilizan en MATLAB para escribir
relaciones matemticas son los
siguientes:
+ Suma
- Resta
* Multiplicacin
^ 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 efecta las operaciones aritmticas es el siguiente: potencia ( ^ ),
divisin ( / ), multiplicacin ( * ), suma ( + ) y resta ( - ), esto es de izquierda a derecha pero pueden usarse
parntesis para alterar el orden de la operacin 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 fcilmente pueden ser incorporadas dentro de
expresiones, las ms 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) raz 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 nmeros 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 clculos indefinidos
> > d = inf / inf
d =NaN
Para representar nmeros complejos > > z = 3 + 4j o 3+4i
MATLAB responde z =3.0000 + 4.0000i
El operador complejo (i o j) debe ir despus del coeficiente numrico.

Todos los clculos en MATLAB se representan en doble precisin. El usuario puede controlar el nmero
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 precisin con la que se hacen los clculos, 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 nmeros con dos cifras decimales
format short e notacin cientfica con 4 decimales
format short g notacin cientfica o decimal, dependiendo del valor
format long e notacin cientfica con 15 decimales
format long g notacin cientfica o decimal, dependiendo del valor
format loose introduce lneas en blanco en la salida (defecto)
format compact elimina las lneas en blanco citadas (recomendada)
format rat nmeros racionales como cocientes de enteros

Una vez llamado el formato elegido permanece activo hasta que sea cambiado.
Para el anlisis 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 numricos en formato
corto:
>>1/3
ans = 0.3333
>>format long
>>1/3
ans = 0.33333333333333
>>format % Vuelve al formato estndar que es el de 4 cifras decimales

Todas las variables utilizadas en una sesin se almacenan automticamente en el espacio de trabajo de
MATLAB para su uso posterior. Para borrar las variables de espacio de trabajo se puede utilizar la funcin
clear all. La funcin who se utiliza para mostrar las variables almacenadas en el rea de trabajo y la
funcin whos muestra informacin adicional sobre la dimensin tipo y tamao de las lo variables.

Es posible recuperar comandos anteriores de MATLAB y moverse por dichos comandos con el ratn y con
las teclas-flechas | y + Al pulsar la primera de dichas flechas aparecer el comando que se haba
introducido inmediatamente antes. De modo anlogo es posible moverse sobre la lnea de comandos, ir al
principio de la lnea con la tecla Inicio, al final de la lnea con Fin, y borrar toda la lnea con Esc.
Recurdese que slo hay una lnea 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 funcin clc (clear console) elimina todas las salidas anteriores, mientras que home las mantiene, pero
lleva el prompt ( ) a la primera lnea de la ventana.

1.3.- MATRICES
La manera de introducir matrices pequeas 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 rengln.
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 tambin pueden ser introducidas por medio de una lista de elementos de cada rengln de la
matriz utilizando punto y coma al terminar cada rengln o simplemente darle retorno al terminar cada
rengln 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 bsicas con matrices:Suma, resta, multiplicacin, 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 apstrofo y la inversa con la funcin inv.
En las operaciones elemento a elemento el smbolo matemtico 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 multiplicacin 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 .- Generacin de vectores
MATLAB puede generar vectores automticamente 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 fcilmente vectores utilizando esta notacin llamada notacin 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 notacin
es til cuando se desea calcular graficar alguna funcin contra algn parmetro 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 ms que escribir el nombre del vector y, entre
parntesis, 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 tamao
que A, excepto cuando A es un escalar.

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

Si x es un vector, la proposicin 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
>>dag(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
parntesis (por ejemplo x(3) x(i)). Los elementos de las matrices se acceden poniendo los dos ndices
entre parntesis, 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 slo subndice. 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:

+ adicin o suma
sustraccin o resta
* multiplicacin
' transpuesta
^ potenciacin
\ divisin-izquierda
/ divisin-derecha
.* producto elemento a elemento
./ y .\ divisin 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 tamao (4x4)
zeros(3,5) forma una matriz de ceros de tamao (3x5)
zeros(4) dem de tamao (4x4)
ones(3) forma una matriz de unos de tamao (3x3)
ones(2,4) idem de tamao (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 logartmicamente 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 nmeros aleatorios entre 0 y 1, con distribucin uniforme, de
tamao (3x3)
rand(2,5) idem de tamao (2x5)
randn(4) forma una matriz de nmeros aleatorios de tamao (4x4), con
distribucin normal, de valor medio 0 y varianza 1.
magic(4) crea una matriz (4x4) con los nmeros 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 tamao (5x5). La matriz de Hilbert es una matriz cuyos
elementos (i,j) responden a la expresin (1/(i+j-1)). Esta es una matriz especialmente difcil
de manejar por los grandes errores numricos 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 caracterstico 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 continuacin 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 nmero 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 nmero de elementos de un vector x
zeros(size(A)) forma una matriz de ceros del mismo tamao 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 ms 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 simtrica de A respecto
de un eje horizontal
fliplr(A) halla la matriz simtrica de A respecto de un eje vertical reshape(A,m,n) Cambia el tamao
de la matriz A devolviendo una matriz de tamao mn cuyas columnas se obtienen a partir
de un vector formado por las columnas de A puestas una a continuacin de otra. Si la matriz
A tiene menos de mn 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, defnase 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 podra decir que el operador (:) representa un rango: en este caso, los nmeros enteros
entre el 1 y el 10. Por defecto el incremento es 1, pero este operador puede tambin 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 continuacin:

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 an ms til y potente y tambin ms complicado con matrices. A
continuacin se va a definir una matriz A de tamao 6x6 y despus se realizarn 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
Recurdese que MATLAB accede a los elementos
de una matriz por medio de los ndices de fila y de
columna encerrados entre parntesis 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 nmero
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 extrado 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 continuacin
se va a definir una matriz identidad B de tamao 6x6 y se van a reemplazar filas de B por filas de A.
Obsrvese 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 an ms
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

Obsrvese que por haber utilizado parntesis 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
permutacin.
A(:,3:-1:1)
ans = 6 1 8
7 5 3
2 9 4
aunque hubiera sido ms fcil utilizar la funcin
fliplr(A), que es especfica para ello. Finalmente,
hay que decir que A(:) representa un vector
columna con las columnas de A una detrs de otra.


CAPITULO 2: GRAFICACIN
2.1.- INTRODUCCIN
Las grficas juegan un papel muy importante en el diseo y anlisis de los sistemas de control. Un
componente importante de un paquete interactivo para el anlisis y diseo de sistemas de control es su
capacidad grfica, debe incluir formatos para grficas del Lugar de Races, Bode, Nyquist y de
respuesta en el tiempo, etc.

Para las grficas en dos dimensiones las funciones que se utilizan son plot, semilog(x), semilog(y),
loglog y algunas funciones para rotular las grficas, adems se introducen los programas script.

2.2.- GRFICAS EN DOS DIMENSIONES
Hay dos grupos bsicos de funciones grficas. El primer grupo de funciones se muestra en la tabla 2.1,
donde se especifican los formatos de grficas como la x-y, logartmica y semilogartmica. El segundo
grupo de funciones se muestran en la tabla 2.2, estas funciones nos permiten etiquetar los ejes, aadir
textos, mostrar varias grficas y dividir una ventana grfica.
Tabla 2.1 Formatos de grficas x - y.
plot(x,y) Grfica el vector x vs vector y
semilogx(x,y) Grfica el vector x vs vector y.
el eje x es log10; el eje y es lineal
semilogy(x,y) Grfica el vector x vs vector y.
El eje x es lineal; el eje y es log10
loglog(x,y) Grfica el vector x vs vector y
los ejes x , y son log10

Tabla 2.2 Funciones grficas.
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 funcin plot crea una grfica lineal con ejes x -y. Para generar grficas logartmicas se sustituye la
funcin plot por loglog, semilogx, semilogy, todas estas ftmciones se utilizan de manera similar.

Grfica lineal simple Plot (y)
Para un vector dado y, la funcin plot(y) generar una grfica 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 grfica 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('GRFICA');
xlabel('NUMERO DE DATOS');
ylabel('AMPLITUD');


Figura 2.2 Grfica simple rotulada utilizando la funcin plot (y).
Grficas(x,y)
Para crear una grfica simple x - y se utiliza la funcin 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 notacin coln x=[xi:dx:xf].
En seguida se muestra un ejemplo de una grfica x - y de la funcin y xseno(x) con respecto a x.
x=[0:0.1:1]';
y=x.*sin(x);
plot(x,y)
title('Grfica 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 Grfica simple de y = x seno(x) vs x.

Los ejes y la escala son generados automticamente. Los ejes son rotulados con los comandos xlabel ,
ylabel; el titulo de la grfica se determina con el comando ttle y la red de coordenadas con el comando
grid.

Pueden ser generadas tambin varias grficas en una misma ventana utilizando la funcin plot con
argumentos mltiples por ejemplo plot ( x , yl , x , y2 , x , y3 ), puede indicarse tambin los tipos de lneas
para cada grfica, como se muestra en el siguiente ejemplo. Los tipos de lneas 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 Grfica mltiple x -y.



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

Los tipos de lneas se seleccionan automticamente a menos que el usuario quiera modificarlos..El uso de
la funcin text, el cambio del tipo de lnea y color se muestran tambin en el procedimiento para obtener la
grfica mltiple de la figura 2.6. Los tipos de lnea disponibles y colores se muestran en la tabla 2.2

Tabla 2.2 Tipos de lnea y colores
- Lnea slida
-- Lnea discontinua
.. Lnea punteada
; Lnea punto y coma
* Asterisco
+ Mas
. Punto
o Circulo
y Amarillo
r Rojo
g Verde
b Azul
w Blanco
b Negro
m Magenta

Grficas a colores y tipos de lnea se pueden obtener aadiendo un argumento a la funcin plot, por
ejemplo si queremos generar una grfica de color azul con tipo de lnea asterisco hacemos:

plot(x,y,b*)

Las otras funciones grficas loglog, semilogx, semilogy se utilizan en forma similar a la funcin plot .

FUNCIN SUBPLOT
La funcin subplot se utiliza para dividir la pantalla en varias grficas su forma general es:

subplot(m,n,p)

Donde m n p son tres nmeros, m n divide la pantalla en m x n ventanas, los valores mximos permitidos
de m n es 2 por lo que se puede dividir la pantalla hasta en 4 ventanas, el numero p determina la
posicin de la ventana donde se desea mostrar la grfica 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
grficas, en la primera se graficara ( y ) y en la segunda (u ) .

Para grficas mltiples la funcin 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 funcin 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 operacin 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 extensin para que MATLAB los ejecute debe ser M.

Un programa script es un archivo cuya extensin 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 extensin. 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 funcin y(t)=seno(alfa*t) donde alfa es un
parmetro que se desea variar, se va guardar como ejl.m.

% Programa Seript para graficar la funcin 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 funcin help se pueden mostrar los comentarios del titulo y de esta
manera saber las caractersticas del programa script .
help ej1
Programa script para graficar la funcin 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 automticamente generando la grfica, el valor de alfa deber introducirse a MATLAB
antes de llamar al programa script, se obtienen dos grficas 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 Grfica de y=seno(alfa*t) para alfa=10

Ahora teclee lo siguiente para aumentar la frecuencia de la seal
alfa=50
ej1


Figura 2.10 Grfica de y=seno(alfa*t) para alfa=50.



MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
17
17
CAPITULO 3 MODELACIN MATEMTICA DE SISTEMAS
3.1.- INTRODUCCIN
El anlisis y diseo de sistemas de control esta basado en modelos matemticos de sistemas fsicos,
estos se obtienen de las leyes fsicas que determinan el comportamiento de dichos sistemas. Como los
sistemas considerados son de naturaleza dinmica, las ecuaciones descriptivas son generalmente
ecuaciones diferenciales. Adems si estas ecuaciones pueden linealizarse, entonces puede utilizarse la
transformada de Laplace y obtenerse la funcin de transferencia de un sistema.

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

Se emplea MATLAB para ayudar en el anlisis de modelos matemticos particularmente en el clculo de
polos y ceros de una funcin de transferencia, reduccin de diagramas a bloques, calculo de una funcin
de transferencia en lazo cerrado y para graficar la respuesta de un sistema ante una entrada escaln.

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

3.2.- Funcin de transferencia
La funcin 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 funcin de transferencia de un sistema es una relacin 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 races del polinomio del numerador son llamados zeros del sistema; las races del polinomio del
numerador se denominan polos. La respuesta transitoria de un sistema esta directamente relacionada con
la ubicacin 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 funcin 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 funcin de transferencia:
4 3
2 6
) (
2 3
2
+ +
+ +
=
s s
s s
s G

Igualando el polinomio denominador a cero se obtiene la ecuacin caracterstica: 0 4 3
2 3
= + + s s

Como una funcin de transferencia es una relacin de polinomios, empezaremos utilizando MATLAB para
manejar y evaluar polinomios.

Races de un polinomio
En MATLAB los polinomios se representan por vectores rengln 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 funcin roots se utiliza para calcular las races
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 funcin poly se usa para generar un polinomio a partir de sus races, estas deben estar en forma de
vector columna.

La funcin poly crea un vector rengln con los
coeficientes del polinomio.
>>p=poly(r)
p =1.0000 3.0000 0.0000 4.0000

Multiplicacin de polinomios
La multiplicacin de polinomios se realiza con la funcin 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 funcin 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

Grficas de polos y ceros
Con la funcin pzmap podemos obtener una grfica de la localizacin de los polos y ceros en el plano
complejo. Su forma general es:

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

Si la funcin pzmap se usa sin los argumentos del lado izquierdo, la grfica se genera automticamente.

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 bsicas de representar la funcin 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 expresin racional usando la variable s de Laplace
Primero se define la variable s como un objeto TF:

>> s=tf('s');

y luego introducimos la funcin de transferencia como una expresin racional con la variable s.
Nota: Solo hay que definir la variable s como TF una sola vez. Todas las expresiones que vengan a
continuacin sern objetos TF

Ejemplo :Introducir las Fdts H(s) y G(s) mediante la definicin 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 factorizacin 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 fciles 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


% Despus 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 definicin 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 bsica 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 realimentacin negativa, para aplicar una realimentacin 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 Funcin 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 realimentacin 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 ingeniera de control por lo general se usa la representacin denominada diagrama de
bloques.

Definir las propiedades de un sistema, SET Y GET

Tambin existe la posibilidad de completar la informacin de un sistema LTI (nombre de la entrada y la
salida, retardos, informacin adicional...), mediante las propiedades de este.
Bsicamente, 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 Descripcin 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 bsica

Introducir propiedades:

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

Acceder a propiedades:

>>Get(modelo,'propiedad')

Para mas informacin 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 caractersticas 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 funcin
de transferencia en lazo cerrado de sistemas sencillos de mltiples lazos. Estas funciones son feedback
y cloop .

Figura 3.5 Funcin feedback.

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

Figura 3.6 Funcin 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 funcin feedback
La funcin feedback calcula la funcin de transferencia en lazo cerrado con retroalimentacin H(s) , si se
omite el signo se considera por defecto negativo.
Calcular la funcin de transferencia del
siguiente sistema de control utilizando la
funcin 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 funcin cloop
La funcin cloop calcula la funcin de transferencia en lazo cerrado con retroalimentacin unitaria, si se
omite el signo se considera por default negativo.
Calcular la funcin de transferencia del
siguiente sistema de control utilizando la
funcin 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

Simplificacin de diagramas a bloques:
Un diagrama de bloques complicado que contenga muchos lazos de realimentacin lo podemos simplificar
mediante un reordenamiento paso a paso mediante las reglas del lgebra de los diagramas de bloques. La
simplificacin de los diagramas de bloques reduce de manera considerable la labor necesaria para el
anlisis posterior.

Simplificacin de bloques con MATLAB
El Control System Toolbox dispone de varias herramientas para la interconexin de sistemas.
Bsicamente podemos distinguir:
A. Mediante operaciones aritmticas
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
26
26
Matlab permite realizar la mayora de operaciones aritmticas con los sistemas LTI. Con la ayuda de
estas operaciones podemos llegar a simplificar sistemas, como por ejemplo:
Conexin 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 funcin de transferencia Y(s) / R(s).



Figura 3.1 Sistema de control en lazo abierto

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

Conexin en paralelo:
En algunos casos se requiere conectar en paralelo funciones de transferencias para esto se utiliza la
funcin 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 aritmticas el Control System ToolBox tiene una
serie de funciones para la interconexin 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 extensin m, el cual tendr los vectores a1, b1, a2, b2, a3, b3, a4, b4
correspondientes a las funciones de transferencia y calcularemos la Funcin de Transferencia del sistema.

% Ejemplo de simplificacin usando funciones propias
% Creacin 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 matemticamente en forma de funcin de transferencia
G(s) y Gc(s) respectivamente. Nuestro objetivo ahora es interconectar y simplificar esos componentes
para obtener el esquema de control..
La funcin 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 funcin 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 funcin 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 funcin 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 Caractersticas de los Sistemas de Control
A menudo se necesita introducir la retroalimentacin con el objeto de mejorar los sistemas de control. Es
interesante el hecho de que esto tambin suceda en los sistemas de la naturaleza como los biolgicos y
fisiolgicos, en los cuales la retroalimentacin es inherente. Por ejemplo, el sistema de control humano
para el ritmo cardiaco es un sistema de control con retroalimentacin.

La retroalimentacin se introduce en los sistemas de control para

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

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

Con el objeto de agregar la retroalimentacin, es necesario considerar varios componentes de la
retroalimentacin, de los cuales el de medicin (sensor) es el componente clave. El sensor es
frecuentemente el componente mas caro en un sistema de control. Adems, 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 retroalimentacin 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 retroalimentacin negativa unitaria. La reduccin 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
parmetros.

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

Por ltimo , un costo de retroalimentacin es la inclusin de la posibilidad de inestabilidad. Mientras que el
circuito abierto es estable, el de circuito cerrado puede no serlo siempre.

Agregar retroalimentacin a sistemas dinmicos produce varios problemas adicionales para el diseador.
Sin embargo, en la mayora 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 disea un sistema
de control.

En esta seccin se ilustran las ventajas de la retroalimentacin por medio de dos ejemplos. El objetivo es
mostrar el uso del MATLAB para el anlisis de los sistemas de control.

Una vez ya se conoce el modelo Matemtico del sistema, ya estamos en disposicin de analizar el
comportamiento dinmico del sistema. Para ello se utilizan seales de entrada o excitacin sencillas. El
anlisis se puede realizar en el dominio del tiempo o de la frecuencia.
Primero veremos una clasificacin del anlisis temporal segn la seal de excitacin, aqu daremos a
conocer las principales funciones para analizar el comportamiento de un sistema.
Las seales de prueba que se usan regularmente para realizar el anlisis temporal de sistemas. Con estas
seales de prueba es posible realizar con facilidad anlisis matemticos y experimentales, dado que las
seales son funciones del tiempo muy simples.

Anlisis al impulso: Seal de excitacin: Impulso de dirac




1 ) ( = s X

El anlisis 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 funcin dibujara la respuesta al impulso para un sistema LTI. El modelo puede ser continuo o
discreto, SISO o MIMO. La duracin de la simulacin ser determinada automticamente 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 simulacin explcitamente.

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

Podemos especificar t como el tiempo final o tambin 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 grfico en MATLAB, podemos especificar colores y estilos de lnea, 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 simulacin. No
se dibuja ninguna grfica.

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


a) Represente la respuesta al impulso del
sistema.
b) El Grfico representa respuesta al impulso
hasta t=12s.
c) Realice una comparacin entre la respuesta
encontrada con el comando impulse, y la
respuesta antitransformando Y(s).
Primero introducimos en un fichero m, la funcin de transferencia del sistema. Ya que con MATLAB no
podemos trabajar simblicamente, daremos valores a las constantes a y b. Luego crearemos un modelo
ZPK ya que es el que mejor define la funcin 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 anlisis al impulso mediante el
comando impulse. impulse(sys)

Si ejecutamos el cdigo hasta ahora
obtendremos la siguiente grfica:






Esta grfica 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
estarn a intervalos de 0.1
t=0:0.1:12;
Creamos otro grfico 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 ms tarde. Para hacer esto
asignamos el valor de la respuesta al impulso a la variable y, y representamos la respuesta en otro grfico
con el comando plot. Pondremos la grfica en verde y puntos para poder comparar.
Ahora sabiendo que: representaremos
y(t) en la misma grfica 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


Seal de excitacin: Escaln unitario




Respuesta del sistema




MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
33
33
Escaln retardado



Respuesta escaln unitario con MATLAB:
El anlisis de un sistema frente a un escaln unitario es el ms usado en la ingeniera de control. El
comando utilizado para realizar este anlisis con MATLAB es step.
La sintaxis del comando es prcticamente igual que la del comando impulse:

>> step(sys)

Esta funcin dibujara la respuesta de un sistema LTI, ante una entrada escaln unitario. El modelo puede
ser continuo o discreto, SISO o MIMO. La respuesta para un sistema con mltiples entradas ser una
coleccin de respuestas escaln por cada entrada. En este caso la duracin de la simulacin es
determinada automticamente por MATLAB.

>>step(sys,t)

De esta forma determinamos el tiempo de simulacin explcitamente. Podemos especificar t como el
tiempo final o tambin 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 escaln de varios sistemas LTI en una misma figura.

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

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

De esta forma obtenemos la respuesta escaln y, y el vector de tiempo t, utilizado en la simulacin. No se
dibuja

Ejemplo:Graficar la respuesta al escaln unitario de la siguiente funcin 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 Grfica de respuesta a un escaln


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 grfica donde veamos la respuesta de los dos sistemas ante un escaln
unitario con un tiempo de simulacin de 30s. Tambin representar en la misma grfica, la funcin escaln
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



Anlisis mediante rampa unitaria
Seal de excitacin: Rampa



Respuesta del sistema



Respuesta ante una rampa con MATLAB:
En la Control System Toolbox no existe ningn 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 funcin 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 Funcin 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 tambin en la misma grfica la funcin 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, aadimos 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 prctica, la seal de entrada para un sistema de control no se conoce con anticipacin, es por
esto que se suelen utilizar las seales de prueba vistas en la seccin anterior. Sin embargo hay casos
donde la seal de entrada se conoce con anticipacin y se puede expresar de forma analtica.

Respuesta ante una seal 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 grfica 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 funcin 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 grfica y tambin
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 funcin 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 seal cualquiera con MATLAB
Sea un sistema con la siguiente funcin 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 seal cuadrada con un periodo de 5s., durante 30s.
c) Representar la respuesta del sistema ante una entrada rampa unitaria. Representar tambin 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 funcin de transferencia o en variables
de estado, puede dar informacin numrica o grfica de la salida o de los estados. Si la funcin step se
utiliza sin los argumentos del lado derecho se obtiene una grfica automticamente:

4.1.1 Rechazo de seales perturbadoras
Un efecto importante de la retroalimentacin de un sistema de control es la eliminacin parcial de las
seales perturbadoras. Como ejemplo especifico de un sistema con una perturbacin no deseada ,
consideraremos primero un sistema de control de velocidad en lazo abierto de un motor de C . D.
controlado por armadura con una perturbacin en la carga, Td(s) como se muestra en la fig. 4.1 , y
despus 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 perturbacin en el
sistema, hacemos Va(s)=0 y consideramos solamente la perturbacin 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 perturbacin 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 parmetros 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 Parmetros del sistema de control de velocidad
. Sustituyendo estos valores en la ecuacin 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 perturbacin Td(s)
tenga un efecto pequeo 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 perturbacin:

) (
) (
) (
) (
) (
) (
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 torsin de la carga Td(s)=1 / s
(escaln 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 perturbacin 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 aproximacin 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 perturbacin 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 funcin 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 perturbacin 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 grfica de la figura 4.6 el cual se puede obtener del vector de
salida yc que se genera en el programa. La aproximacin del valor de e en estado estable es: e()=
ec(0.02)= -0.0018 rad/s

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

Figura No. 4.6 Respuesta a una perturbacin en lazo cerrado

4.1.2 Control y ajuste de la respuesta transitoria de un sistema utilizando la retroalimentacin

En la figura 5.7 se muestra el diagrama a bloques de un sistema de control retroalimentado la funcin 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 continuacin 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 escaln 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 anlisis podramos 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 seleccin 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 perturbacin para K = 50 y 1 00

En la tabla 5.2 se muestran el mximo 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 decisin
para escoger K depende de las necesidades del diseador.

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

4.2.- FUNCIONAMIENTO DE LOS SISTEMAS DE CONTROL
Para analizar y disear 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 seccin se analizan las especificaciones de funcionamiento en el dominio de tiempo dadas en
trminos de respuesta transitoria. Se introducen las funciones de Matlab, impulse y Isim , las cuales se
utilizan para simular sistemas lineales.

4.2.1 Simulacin de un sistema de segundo orden para una entrada escaln

En el siguiente ejemplo se obtiene la respuesta de un sistema de segundo orden a una entrada escaln,
variando el coeficiente de amortiguamiento Se utiliza la funcin 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 escaln 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 grficas de respuesta de sistema de segundo orden para una entrada
escaln 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 escaln

Esto mismo tambin 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 funcin impulse de MATLAB.

4.2.2.- Simulacin de un Sistema de Segundo Orden para una entrada Impulso

La respuesta al impulso es la derivada de la respuesta a un escaln. Para obtener la respuesta a un
impulso se utiliza la funcin impulse como se muestra a continuacin:

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

Para el ejemplo anterior considerando que la seal de prueba es la funcin impulso, simplemente
modificamos la lnea 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 funcin Isim de
MATLAB :

En el siguiente ejemplo se utiliza la funcin Isim para simular un sistema de control para una entrada
arbitraria ( seal 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 pequeo y viceversa. En la figura 4.20 se muestra el programa script
y la respuesta a una seal 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(seal triengular)
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
48
48

Figura 4.19 Programa script y respuesta a una seal triangular

CAPITULO 5 ESTABILIDAD DE LOS SISTEMAS DE CONTROL EN EL DOMINIO DEL TIEMPO
5.1 INTRODUCCIN

Una caracterstica 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 perturbacin limitada, su respuesta es de magnitud limitada.

La localizacin 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
perturbacin, por lo tanto un sistema estable. El mtodo 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, estn
directamente relacionados con la localizacin en el plano s de las races de lazo cerrado de la ecuacin
caracterstica. As mismo, con frecuencia , es necesario ajustar uno o mas parmetros del sistema para
obtener las localizaciones adecuadas de las races. Por tanto, vale la pena determinar como se desplazan
en el plano s las races de la ecuacin caracterstica de un sistema dado, a medida que varan los
parmetros; es decir, es til determinar el lugar geomtrico de las races en el plano s a medida que se
varia un parmetro. El mtodo del lugar geomtrico de las races fue planteado por Evans en 1948 y se
ha desarrollado y utilizado mucho en el anlisis y diseo de los sistemas de control.

En este capitulo se utiliza MATLAB para verificar el criterio de Routh-Hurwitz y para obtener grficas del
lugar de las races. Las funciones de MATLAB que se usaran son rlocus , rlocfind.

5.2.- Criterio de estabilidad de routh -hurwitz
Dada una ecuacin caracterstica con coeficientes constantes, podemos utilizar el criterio de Routh para
determinar el numero de races en el semiplano derecho. Por ejemplo:
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
49
49

Consideremos la ecuacin caracterstica: 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 races de la ecuacin caracterstica 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 races de la ecuacin caracterstica empleando la funcin 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 ecuacin caracterstica esta en funcin de un parmetro K, el mtodo de RouthHurwitz puede
utilizase para determinar el rango de valores que el parmetro puede tener para que el sistema sea
estable. Consideremos el sistema de control de la figura 5.4. La ecuacin caracterstica es:
0 4 ) (
2 3
= + + + = K s s s s F

Utilizando el mtodo 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 grficamente 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 races de la ecuacin caracterstica, despus usamos la funcin roots para calcular las races
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 grficos del rango de valores del parmetro K para los cuales
el sistema es estable. Estos resultados grficos verifican los resultados obtenidos por el mtodo de
Routh-Hurwitz.

Figura 5.6 Localizacin de las races para 0 < K < 20

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

for variable = expresin
relacin
..............
.............
relacin
end

Figura 5.7 La Funcin For
5.3.- Lugar geomtrico de las races
Para obtener el lugar de las races de un sistema. Se debe determinar su ecuacin caracterstica, la cual
es de la forma: ) ( 1 ) ( s KG s D + =
Para obtener el lugar de las races, 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 races.
MatLab generar automticamente un conjunto de valores de la ganancia K.

rlocus(NUM,DEN,K)

calcula y dibuja el lugar de las races cuando se trabaja con la funcin 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 races pero almacena en la matriz R, de longitud igual al nmero de elementos de
K, la localizacin de las races. R tendr tantas columnas como races existan, estas pueden adems ser
complejas.

Para la siguiente forma modificada de la ecuacin caracterstica de un sistema se desea hallar el lugar de
las races 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 funcin de transferencia en lazo cerrado es:
) 1 ( ) 3 )( 2 (
) 3 )( 1 (
) (
) (
+ + + +
+ +
=
s k s s s
s s K
s R
s C

la ecuacin caracterstica puede escribirse como: 0
) 3 )( 2 (
) 1 (
1 =
+ +
+
+
s s s
s K

la forma general de la ecuacin caracterstica para poder aplicar la funcin rlocus es: 0
) (
) (
1 = +
s Q
s P
K
donde K es el parmetro que se vara de cero a infinito.
r=raices
K=ganancia
[r , k] = rlocus ( p , q)

Cuando se utiliza la funcin rlocus sin los argumentos [r,k] se genera la grfica del lugar de las races.
Cuando se utiliza con los argumentos [r,k] como se muestra en la figura 5.9 la funcin rlocus retorna las
races y las ganancias asociadas.
p=[1 1];q=[1 5 6 0];
rlocus(p,g)
Figura 5. 1 0 Lugar de las Races.

Funcin 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 races
se selecciona una localizacin, MatLab retorna el valor de k para esta localizacin y los polos asociados a
esta ganancia.

Al ejecutar el comando rlocfind con la funcin de transferencia anterior, MatLab activa la ventana de
figuras en espera de que el usuario seleccione un punto del lugar de las races 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 races sin usar el cursor se agrega
un parmetro 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 funcin rlocfind se utiliza para determinar el valor del parmetro K en un punto seleccionado de la
grfica del lugar de las races.

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 grfica del lugar de races 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 funcin 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 funcin 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 anlisis 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 idntica a la del
comando bode: nichols(num,den,W) si se emplea la funcin 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 anlisis en el dominio en la frecuencia que ofrece MatLab es el diagrama de Nyquist.
Para obtenerlo se utiliza el comando nyquist, cuya sintaxis es idntica a la del comando bode y nichols:
nyquist(num,den,W) si se emplea la funcin 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
funcin de transferencia propia del sistema a objeto de estudio. Si dicho sistema es de la forma:

donde G(s) es la funcin de transferencia de la planta o proceso; mientras que G
C
(s) es la funcin 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 relacin 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 relacin entre dos polinomios. Si se multiplica el controlador G
C
(s) por la funcin de
transferencia del proceso o planta G(s) se formar la funcin 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 escaln 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.-Caractersticas bsicas de SIMULINK
Funcionalidad bsica: simulacin de sistemas dinmicos.
Caractersticas principales:
Se trata de un entorno grfico dentro de MATLAB (GUI)
El sistema se representa como una interconexin de bloques elementales.
Cada bloque lleva asociado un modelo matemtico que representa su relacin entrada-salida.
Los bloques de obtienen de tres posibles fuentes
- Biblioteca estndar de SIMULINK
- Bibliotecas comrciales (llamadas <<Blocksets>>)
- Bibliotecas creadas por los usuarios.
Qu puede ser modelado con SIMULINK?
Cualquier cosa que pueda ser modelada matemticamente. Por ejemplo:
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
58
58

Un ejemplo de representacin mediante SIMULINK sera el siguiente:

El esquema representa un sistema de calefaccin para una vivienda. Se supone conocida la variacin de
la temperatura en el exterior de la casa y en funcin de ello se puede observar en qu instantes se
conecta y se desconecta la calefaccin, cules son las variaciones de la temperatura en el interior de la
casa y cul es el coste de la calefaccin. 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 categoras:
Sources: Entradas o fuentes de seales.
Constantes
Senoidales
Cuadradas
Todas estas categoras de bloques se muestran en la
ventana inicial de SIMULINK. El procedimiento de trabajo
para la creacin de un modelo ser seleccionar los
elementos adecuados de entre los presentes en estas
categoras, colocarlos sobre la ventana de diseo 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
Escaln
Aleatorias
etc.
Sinks: Salidas o dispositivos de
visualizacin/almacenamiento de
variables del sistema.
Osciloscopio
Fichero
Grfico
etc.
Discrete/Linear/Continuos: Representan
sistemas sencillos mediante su relacin
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 diseos
Multiplexadores/demultiplexadores:
agrupan o desagrupan seales.
Memorias: permiten almacenar valores.
Functions & Tables/Math: Funciones y
elementos matemticos
Polinomios
Ganancias
etc.
Blocksets/toolboxes: Elementos
especificos para diferentes aplicaciones.
comunicaciones
redes neuronales
control
etc.


Creacin 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 funcin de transferencia:

Y comprobaremos cul es su respuesta ante una seal de tipo escaln. La creacin de este modelo
seguir los siguientes pasos:
Primer paso: creacin del modelo.
Segundo paso: introduccin de bloques en el modelo.
Tercer paso: modificacin de parmetros en los bloques introducidos.
MATLAB M. C. BENITO BAEZ SANCHEZ
M. C. BENITO BAEZ SANCHEZ
60
60
Cuarto paso: interconexin de elementos.
Quinto paso: lanzamiento de la simulacin y comprobacin de resultados.

En el siguiente Viewlet podemos ver la creacin de este modelo

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

Considerando que los valores de los parmetros 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 seal de salida
b) Modelar el sistema mediante Simulink al incorporar un compensador de atraso de fase y
estudiar la seal de salida
Primero modelamos el sistema:
El sistema se modela sumando las fuerzas que actan en el motor de inercia e integrando la
aceleracin para obtener la velocidad.
Tambin 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".
Despus implementamos las ecuaciones obtenidas con las leyes de Kirchoff.

Se van introduciendo las ecuaciones mediante bloques de ganancia y sumadores. Tambin
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 seal 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 funcin 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 funcin de transferencia introduciendo los
datos del numerador "[50 50]" y del denominador "[1 0.01]". Tambin 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 seal 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 ecuacin de estado de un sistema y la ecuacin 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 esttica 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 aade 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 cdigo fuente podemos obtener la matriz esttica d.

Ejemplo: Ecuaciones diferenciales con derivadas de la funcin excitacin
Ejemplo: Ecuaciones diferenciales con derivadas de la funcin excitacin.
Dadas la ecuacin de estado y de salida de un sistema.

Considerando la matriz de transmisin 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 cannica 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 funcin ss creamos un objeto que contiene toda la informacin del sistema.








A travs de comando ssdata obtenemos las
matrices del sistema.
con la funcin canon llevamos el modelo a la forma
cannica diagonal

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









.
Ejemplo: De modelo de estado a funcin de transferencia
Ejemplo: De modelo de estado a funcin de transferencia.
Dadas las ecuaciones de estado del sistema:

Pasar de ecuacin de estado a funcin 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 cdigo obtenemos el modelo transformado en funcin de transferencia


Ejemplo: De funcin de transferencia a modelo de estado
Ejemplo: De funcin de transferencia a modelo de estado.Dada la funcin de transferencia del sistema:

Transformar esta funcin 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 transformacin de funcin 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

You might also like