Você está na página 1de 38

Control Automtico Ing.

Elctrica Pgina 1 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna

Cmo explicar que las matemticas, un producto de la


mente humana, independiente de la experiencia, se adapte
tan admirablemente bien a los objetos de la realidad?

Albert Einstein
Control Automtico Ing. Elctrica Pgina 2 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
1 Introduccin a MatLab: El nombre es una abreviatura de las palabras MATrix
LABoratory. MatLab es un sistema interactivo para clculos cientficos y de ingeniera
basado en las matrices. Con el se pueden resolver complejos problemas numricos sin
necesidad de escribir un programa especifico para ello, aunque tambin es posible
programar. Adems, el programa MatLab dispone, dependiendo de la versin, de
diferentes mdulos (Toolboxes) que permiten resolver problemas especficos.
Debido a que MatLab es un programa de Calculo Numrico, la forma de producir
grficos es completamente distinta de la de programas de Calculo Simblico como
Derive, Mathematica o Maple. En MatLab se tienen que calcular mediante comandos
adecuados los puntos que despus se representaran en la grafica.

1.1 - La Interfase de MatLab: La ventana principal es el Comand Window, es la ventana


sobre la que se trabajara y en la que se introducirn todos los comandos; tambin estn
disponibles el Workspace (informacin sobre los elementos que se han creado), el
Comand History (recoge todos los comandos introducidos) y el Current Directory
(ficheros *.m de la carpeta). El prompt caracterstico de MatLab es . Esto quiere decir
que el programa est preparado para recibir instrucciones.
Control Automtico Ing. Elctrica Pgina 3 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
A travs de la Barra de Mens se accede a las operaciones que no estn disponibles en
la Barra de Herramientas. El men principal es File, en el se encuentra la gran mayora
de las operaciones no presentes en la barra de herramientas. En la siguiente figura se
muestra el men File.

Todas las operaciones que realiza MatLab se basan en una estructura de datos matricial.
Dentro del entorno de trabajo de MatLab se pueden definir nuevos comandos o
funciones, programadas por el propio usuario, a travs de los archivos *.m. Este tipo de
archivos se encuentran en las llamadas toolbox de MatLab, que son una coleccin de
funciones ya programadas y disponibles para el usuario. En este sentido, MatLab
funciona como un lenguaje interpretado, es decir, reconoce y ejecuta los comandos que
se le pasan a travs del editor de comandos (Command Windows). Todas estas
funciones o comandos se agrupan en la toolboxes y abarcan diferentes campos, como
son el anlisis y adquisicin de datos, procesamiento de imgenes y de seales, anlisis
y diseo de sistemas de control, comunicaciones, simulaciones en tiempo real y tambin
herramientas de finanzas, estadsticas, economa o lgica difusa.

1.2 El Interprete de Comandos: Los comandos de MatLab se ejecutan desde el editor


de comandos. A cada comando se le pasan los datos de calculo entre parntesis y
separados por comas en el caso de que requiera mas de un dato. El resultado se guarda
en la variable de salida especificada por el usuario o, por defecto, en ans. Este resultado
queda almacenado en el workspace pudindose consultar mediante los comandos who y
whos. En caso de que el comando ejecutado devuelva ms de un resultado, estos se
almacenaran como elementos de un vector, por lo que debern ir entre corchetes.

Formas de ejecutar los comandos en MatLab:

>> Comando de MATLAB

Directamente se ejecuta el comando.

>> Comando de MATLAB (dato1, dato2, etc.)

Al comando se le incorpora un grupo de datos (dato1, dato2, etc.) con los que realizara
un determinado clculo; el resultado podr ser grafico, con lo cual MatLab generara la
Control Automtico Ing. Elctrica Pgina 4 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
figura correspondiente, o bien numrico, en cuyo caso el resultado se guardara en la
variable por defecto ans.

>> variable1 = Comando de MATLAB (dato1, dato2, etc.)

Se ejecuta el comando con los datos incorporados y devuelve el resultado en la variable


especificada a la izquierda del signo igual (variable1).

>> [variable1 variable2etc.] = Comando de MATLAB (dato1, dato2, etc.)

Es de similar ejecucin que el anterior, devuelve dos o mas resultados que se guardaran
en las variables indicadas por el usuario (variable1 variable2etc.).

2 Operaciones Bsicas: En el editor de comandos, las operaciones algebraicas se van


evaluando de izquierda a derecha, con rdenes de prioridad que dependen de la
operacin a realizar. La potencia (^) es la operacin de mayor prioridad, seguida de la
divisin (/) y el producto (*), y por ultimo la resta (-) y la suma (+). Es recomendable
usar parntesis para evitar resultados que no coincidan con los esperados (tambin por
claridad).
Los decimales se definen con el punto (.) y no con la coma (,); esta ultima se emplea
solo como separador de datos dentro de un comando. El punto y coma (;) al final de una
sentencia permite ejecutar el comando sin mostrar el resultado por pantalla.

2.1 - Operaciones Aritmticas:

Suma:

>>2+2 % pulsar tecla Enter


ans =
4 % ans es la variable resultado por defecto

Resta:

>>12-4 % pulsar tecla Enter


ans =
8 % ans es la variable resultado por defecto

Despus de escribir cada comando hay que pulsar Enter para que lo ejecute. Si despus
de esta primera sesin con MatLab se quiere salir del programa, se puede hacer de dos
formas, escribiendo exit a continuacin del prompt, o bien con File  Exit MatLab.
El valor que se quiere calcular tambin se puede asignar a una variable. Por ejemplo:

>>x=3^2
x=
9

Hay que tener en cuenta que MatLab distingue entre maysculas y minsculas, por lo
tanto, se distingue entre la variable X y la variable x.
Control Automtico Ing. Elctrica Pgina 5 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
La notacin para las operaciones matemticas elementales es la habitual en todos los
programas de clculo simblico:

Suma + Divisin / Multiplicacin *


Resta - Exponenciacin ^

Los resultados numricos mostrados en el editor de comandos pueden representarse en


varios formatos; entre los ms comunes estn los siguientes:

short  numero con 4 cifras decimales.


long  numero con 14 o 15 cifras decimales.
short e  numero en notacin cientfica con 4 cifras decimales.
long e  numero en notacin cientfica con 14 o 15 cifras decimales.
hex  numero en hexadecimal.
racional  numero expresado como fraccin.

El formato se puede seleccionar en el men File  Preferences  Commnad Window.

2.2 Operadores Relacionales:

Los operadores relacionales se usan en operaciones de comparacin; como resultado de


la comparacin devuelven un valor lgico 1 (verdadero) o 0 (falso). Los operadores
relacionales pueden ser de comparacin (< menor, <= menor o igual, > mayor, >=
mayor o igual); o de identidad (= = igual, ~ = distinto). Su aplicacin se extiende a datos
numricos, vectores y matrices, en estos dos ltimos casos el operador relacional se
evala elemento a elemento. En el caso de evaluar nmeros complejos, los operadores
de comparacin solo tienen en cuenta la parte real, mientras que en los operadores de
identidad se considera tanto la parte real como imaginaria.

2.3 Definicin de Variables: Durante la ejecucin de comandos u otras operaciones


realizadas en una sesin de MatLab, resulta imprescindible el uso de variables para el
almacenamiento de clculos y resultados. La variable por defecto es ans y se crea
automticamente para almacenar el resultado de la ltima ejecucin. La creacin de
nuevas variables debe seguir una serie de reglas:

Se definen con letras que pueden ir seguidas de nmeros y guin bajo (_).
La longitud mxima es de 63 caracteres.
La letra y las vocales acentuadas no son caracteres validos.
El primer carcter debe ser siempre una letra, no un nmero.
Se distinguen las maysculas de las minsculas.

La eliminacin de variables almacenadas en el workspace se realiza con el comando


clear seguido del nombre de la variable.
Si se ejecuta el comando clear sin especificar ningn nombre de variable, se eliminaran
todas las variables almacenadas en el workspace.
Las variables definidas en una sesin de MatLab se pueden archivar para su uso en
posteriores sesiones. Para ello, seleccionar en el men File  Save Workspace as
generando un archivo con la extensin .mat (por ejemplo misvar.mat).
Para abrir el archivo con las variables almacenadas en una sesin anterior, seleccionar
en el men File  Import Data, activndose la interfase de importar datos. Tambin es
Control Automtico Ing. Elctrica Pgina 6 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
posible recuperarlos directamente desde el editor de comandos mediante el comando
load.

2.4 Tipos de Datos:

En MatLab existen hasta 15 posibles tipos de datos que se pueden almacenar en


variables y que dependern de la operacin y/o comando ejecutado. Los datos se
guardan como vector o matriz (array) siendo los tipos ms comunes: numrico
(numeric), lgico (logic), carcter (character), celda (cell) y estructura (structure).
Los vectores y matrices se definen entre corchetes, con sus elementos separados por
espacios; en el caso de las matrices, cada fila se delimita con el punto y coma.
Ejemplo:

>> vector=[3 2 1 0]

vector =
3 2 1 0

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

matriz =
1 2 3
4 5 6
7 8 9

En el caso de nmeros complejos se emplea indistintamente la i o j para representar el


termino Raz Cuadrada de -1. Un resultado de valor infinito devuelve el termino inf. Un
resultado no numrico devuelve el termino NaN (Not a Number).

2.5 Funciones Matemticas:

En MatLab estn definidas algunas de las funciones ms comunes utilizadas en


matemticas. Su sintaxis coincide tambin con la que se utiliza en la mayora de los
programas de matemticas, como, por ejemplo, el programa DERIVE, aunque hay
algunas diferencias. Algunas de estas funciones son:

sin Seno tanh Tangente hiperblico


sinh Seno hiperblico atan Arco tangente
asin Arco seno exp Exponencial
cos Coseno log Logaritmo neperiano
cosh Coseno hiperblico log10 Logaritmo decimal
acos Arco coseno sqrt Raz cuadrada
tan Tangente abs Valor absoluto

Para obtener listas completas de todas las funciones que puede utilizar MatLab, as
como para saber el uso de cada una de ellas o de cualquier comando, siempre se puede
acudir al help. Esto se puede hacer de varias formas, poniendo >>helpwin, siendo el
propio programa quien nos ofrece la ayuda (como en cualquier otro programa), o
poniendo >>helpdesk, con lo que ofrece ayuda interactiva, conectndose a Internet si
este recurso esta disponible en el ordenador.
Control Automtico Ing. Elctrica Pgina 7 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
Si se conoce el nombre del comando, y se quiere saber para que sirve, se puede poner:

>>help comando

Y ofrecer ayuda sobre el comando en cuestin, si este existe. Por ejemplo:

>>help rotate3d

ROTATE3D Interactively rotate the view of a 3-D plot.


ROTATE3D ON turns on mouse-based 3-D rotation.
ROTATE3D OFF turns if off.
ROTATE3D by itself toggles the state.

See also ZOOM.

Ofrece informacin sobre el comando rotate3d, comando que sirve para rotar figuras
tridimensionales utilizando el ratn. Otra forma de buscar ayuda es utilizar el comando
lookfor, por ejemplo, poniendo >>lookfor cos, aparecer una lista con todos los
comandos que tienen que ver con la funcin coseno.

Algunas consideraciones: Con las flechas del cursor se pueden recuperar las rdenes
anteriores, sin tener que volver a teclearlas. Esto resulta til en el caso de una
equivocacin o cuando se quiere repetir un comando con alguna pequea modificacin.
A veces, puede resultar necesario, hasta imprescindible, que el resultado de un clculo
no aparezca en pantalla. Por ejemplo, si se genera una matriz de orden muy alto con el
objeto de hacer despus una grafica. El hecho de que aparezca la matriz en pantalla
puede resultar un poco engorroso. Para conseguir esto se pone un punto y coma al final
de la instruccin. Por ejemplo,

>>x=sin(3);

No aparece ningn resultado, pero ha realizado el clculo, porque si se escribe el valor


de x, aparecer el valor 0.1411. (El argumento de las funciones trigonomtricas siempre
se mide en radianes).

Los comandos se pueden ir escribiendo y ejecutando uno a uno, es decir, rengln a


rengln, y tambin se pueden escribir uno a continuacin de otro en una misma lnea, en
cuyo caso deben ir separados por comas. Si el comando o la cantidad de comandos es
demasiado larga para que aparezca en un nico rengln, se puede romper la cadena y
seguir en el siguiente rengln, escribiendo tres puntos suspensivos. Por ejemplo:

>>x=sin(10),y=cos(10),...
z=tan(10)
x=
-0.5440
y=
-0.8391
z=
0.6484
Control Automtico Ing. Elctrica Pgina 8 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
Hay algunas variables especiales que se utilizan por defecto:

ans: Es la variable que se utiliza en los resultados. En la operacin siguiente se puede


recuperar este resultado volviendo a escribir ans. Esta variable se modificara en cuanto
haya un nuevo resultado.

pi: El numero pi. (No hay una variable para el numero e, pero se podra definir
>>e=exp(1)).

eps: Es el numero mas pequeo que utiliza el ordenador tal que, cuando se le suma 1,
crea un numero en coma flotante mayor que 1.

realmin, realmax: Son, respectivamente, el menor y el mayor de los nmeros reales


utilizables.

Poniendo el smbolo % se consigue que no se ejecute lo que venga a continuacin, en el


mismo rengln, sino que se interprete como un comentario, se suele utilizar para
escribir comentarios aclaratorios en lneas de comandos de manera que no afecten a su
ejecucin. Por ejemplo, si se pone,

>>sqrt(2) % Raz cuadrada de 2

Calculara la raz de 2 y se saltara el comentario.

2.6 Vectores y Matrices:

Los vectores y las matrices son los elementos bsicos con los que trabaja MatLab. Un
vector es un conjunto de datos agrupados entre corchetes, formado por una fila y varias
columnas (vector fila de 1xn) o varias filas y una columna (vector columna mx1). Una
matriz es un conjunto de vectores formado por mas de una fila y columna (mxn); los
elementos que forman una matriz se agrupan entre corchetes, siendo el punto y coma el
carcter que marca la separacin de filas.

2.6.1 Construccin de vectores y matrices:


2.6.1.1 Vectores: Un vector se puede definir introduciendo sus coordenadas, separadas
por espacios o por comas, entre corchetes:

>> x=[1 2 3]
x=
1 2 3

Si se quiere definir un vector columna, se separan las filas por puntos y comas, o bien se
calcula el transpuesto de un vector fila con >>x'.
Otra forma de crear vectores es la siguiente: Se especifica el Valor Inicial, el
Incremento y el Valor Final:

>> x=1:0.5:3
x=
1.0000 1.5000 2.0000 2.5000 3.0000
Control Automtico Ing. Elctrica Pgina 9 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
Genera un vector que va desde 1 hasta 3 con un paso de 0.5 unidades. Exactamente el
mismo resultado se conseguira con el comando linspace: Se especifica el Valor Inicial,
el Valor Final y la Cantidad de elementos del vector.

>>x=linspace(1,3,5)

que produce 5 nmeros igualmente espaciados entre 1 y 3.

Una variante interesante es el comando logspace(d1,d2,n), que genera un vector con n


valores espaciados logaritmicamente entre 10^d1 y 10^d2

Vector de Unos: Se usa el comando ones.

>> vector_de_unos=ones(1,6)
vector_de_unos =

1 1 1 1 1 1

Vector de Ceros: Se usa el comando zeros.

>> vector_de_ceros=zeros(1,6)
vector_de_ceros =

0 0 0 0 0 0

2.6.1.2 Matrices: Una matriz se puede definir introduciendo sus filas (consideradas
como vectores), separadas por puntos y comas, entre corchetes:

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

Matrices Predefinidas: En MatLab hay varios comandos que sirven para definir con
gran facilidad matrices de tipos particulares. Algunas de estas funciones son las
siguientes:

eye(n), matriz unidad de tamao (n x n)


zeros(m,n), matriz de ceros de tamao (m x n)
zeros(n), lo mismo, pero de orden (n x n)
ones(n), matriz de unos (n x n)
ones(m,n), lo mismo, pero de orden (m x n)
rand(n), matriz de nmeros aleatorios entre 0 y 1, distribuidos uniformemente (n x n)
rand(m,n), lo mismo, de tamao m x n
magic(n), crea una matriz en forma de cuadrado mgico de tamao n x n

2.6.2 Operaciones bsicas con vectores: Las operaciones entre vectores se realizan
elemento a elemento y deben ser, por lo tanto, de la misma dimensin, es decir, deben
tener el mismo nmero de elementos. Se estudiaran las operaciones con ejemplos:
Control Automtico Ing. Elctrica Pgina 10 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna

>> Vector1=[4 3 2 1];


>> Vector2=[4 5 6 7];
>> K=2;

Suma:

>> K + Vector1 % suma de un escalar con un vector


ans =
6 5 4 3

>> Vector1 + Vector2 % suma de vectores


ans =
8 8 8 8

Resta:

>> K - Vector1 % resta de un escalar con un vector


ans =
-2 -1 0 1

>> Vector1 Vector2 % resta de vectores


ans =
0 -2 -4 -6

Producto:

>> K * Vector1 % Producto de un Escalar por un Vector


ans =
8 6 4 2

>> Vector1.*Vector2 %Producto de Vectores


ans =
16 15 12 7

El producto de dos vectores o dos matrices elemento a elemento ser muy importante
cuando se quiera representar graficas de funciones.

Divisin:

>> Vector1/K % Divisin de un Vector entre un Escalar

ans =
2.0000 1.5000 1.0000 0.5000

>> Vector1./Vector2 % Divisin de Vectores

ans =
1.0000 0.6000 0.3333 0.1429
Control Automtico Ing. Elctrica Pgina 11 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
Potencia:

>> Vector1.^K % Vector elevado a una Potencia Escalar


ans =
16 9 4 1

>> Vector1.^Vector2 % Vector elevado a una Potencia Vectorial


ans =
256 243 64 1

Nota: En las operaciones producto, divisin y potencia, el punto (.) indica a MatLab que
ha de operar elemento a elemento, si no producir un error.

2.6.3 Operaciones bsicas con matrices: Las operaciones con matrices deben seguir
las reglas del algebra matricial en cuanto a dimensin de aquellas con las que se va a
operar. Se estudiaran las operaciones con ejemplos:

>>A=[1 1 2; 3 4 6; 2 1 0];B=[-1 2 0; 2 0 0; -2 3 4];

Suma:

>>A+B
Ans =
0 3 2
5 4 6
0 4 4

Resta:

>>A-B
ans =
2 -1 2
1 4 6
4 -2 -4

Producto:

>>A*B
ans =
-3 8 8
-7 24 24
0 4 0

Potencia:

>>A^3
ans =
45 44 58
162 157 204
43 39 46
Control Automtico Ing. Elctrica Pgina 12 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
2.7 Polinomios:

Los Polinomios en MatLab son, bsicamente, vectores cuyos elementos son los
trminos de los que consta el Polinomio.

2.7.1 Definicin de Polinomios: En MatLab los Polinomios se definen como vectores


fila introduciendo, siempre entre corchetes, los coeficientes de sus elementos en orden
de potencia descendente; lgicamente se debe aadir un cero en la posicin de aquellos
elementos que no existan dentro del Polinomio. Se estudiaran las operaciones con
ejemplos:

>> Poli1=[1 6 5 -3]; % Definicin de Polinomio x^3+6x^2+5x-3


>> Poli2=[2 0 1 -1 1]; % Definicin de Polinomio 2x^4+x^2-x+1

Obtencin de las Races de un Polinomio: (Usando el comando roots)

>> Raices1=roots(Poli1)
Raices1 =
-4.8385
-1.5592
0.3977

Nota: Las Races que devuelve MatLab vienen dadas en un vector columna.

Definicin de un Polinomio a travs de sus Races: (Usando el comando poly)

>> Raices3=[-1;0.5+i;0.5-i]; % Vector columna con las Races del Polinomio


>> Poli3=poly(Raices3) % Calculo del Polinomio a partir de sus Races
Poli3 =
1.0000 0 0.2500 1.2500

El Polinomio Resultante es x^3+0.25x+1.25

2.7.2 Operaciones entre Polinomios: Las operaciones entre Polinomios requiere que
estos tengan la misma dimensin, completndose con ceros los trminos del polinomio
de potencias que no existen para mantener la misma dimensin. Se estudiaran las
operaciones con ejemplos:

>> Poli1=[0 1 6 5 -3]; % Definicin de Polinomio x^3+6x^2+5x-3


>> Poli2=[2 0 1 -1 1]; % Definicin de Polinomio 2x^4+x^2-x+1

Suma:
>> PoliSuma=Poli1+Poli2 % El resultado es 2x^4+x^3+7x^2+4x-2

PoliSuma =
2 1 7 4 -2
Control Automtico Ing. Elctrica Pgina 13 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
Convolucin:
>> PoliMult=conv(Poli1,Poli2) % Usa el comando conv
PoliMult =
0 2 12 11 -1 0 -2 8 -3

Divisin:
>> [Cociente,Resto]=deconv(PoliMult,Poli2) % Usa el comando deconv
Cociente =
0 1 6 5 -3
Resto =
0 0 0 0 0 0 0 0 0

Derivacin:
>> PoliDeriv=polyder(Poli1) % Usa el comando polyder
PoliDeriv =
3 12 5

Resolucin de Polinomios:
>> polyval(Poli1,1) % Evala Poli1 para x=1
ans =
9
>> polyval(Poli1,[1 2 3]) % Evala Poli1 para x=1, 2 y 3
ans =
9 39 93

3 Caractersticas Adicionales:

3.1 Creacin de Grficos: Para graficar funciones de la forma y = f(x) con MatLab se
usa el comando plot, que representa parejas de valores sobre unos ejes coordenados.
Estos valores se definen mediante vectores que deben tener la misma dimensin; en
caso contrario se producir un error.
Por ejemplo, se quiere dibujar la grafica de la funcin y = sen(x):
Primero se crea una tabla de valores para x

>>x=0:pi/100:2*pi;

Con este comando se formo una tabla (el vector x) con 200 valores entre 0 y 2 pi. Otra
forma de conseguir el mismo resultado seria utilizar el comando

>>x=linspace(0,2*pi,200);

Ahora se calculan los valores de y


Control Automtico Ing. Elctrica Pgina 14 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
>> y = sin(x);

y por ultimo se la dibuja

>>plot(x,y)

Realmente lo que se hace es dibujar 200 puntos de la funcin en el intervalo [0; 2pi], y
posteriormente el programa los ha unido mediante segmentos. Si el nmero de puntos es
lo suficientemente grande, como en este caso, no se aprecian los vrtices.
Se vera un ejemplo algo mas complicado. Se quiere dibujar ahora la grafica de la
siguiente funcin:

Se definen los valores para los que se quiere hacer la grafica

>>x=-3:.01:3;

Es decir, que se dibujara la grafica en el intervalo [-3; 3] con un paso de longitud 0.01.
Se define la funcin

>>y=x.*exp(-x.^2);

Y por ultimo, se escribe el comando para que ejecute el dibujo.

>>plot(x,y)

El aspecto de la grafica se puede modificar utilizando algunos comandos:

- Cuadricula. Si se quiere que aparezca una cuadricula sobre el dibujo, se usara el


comando >>grid on. Para desactivar la cuadricula habr que escribir >>grid off.
- Color y trazo. El comando plot ofrece mltiples posibilidades de color y forma de
trazo de la grafica. Por ejemplo, el comando >>plot(x,y,'r*'), dibujara la grafica en
color rojo y con asteriscos. Para consultar todas las posibilidades, hacer >>help plot.
- Ejes. Los ejes que aparecen por defecto en una grafica tambin se pueden modificar.
Con el comando >>axis([-2 2 -1 1]), se conseguir que la grafica aparezca en la regin
-2 < x < 2, -1 < y < 1.
Con >>axis square, se conseguir que la figura aparezca en un cuadrado, sin cambiar el
rango de los ejes. Con el comando >>axis equal, se conseguir que los rangos de los
ejes sean iguales.
- Zoom. Utilizando el comando >>zoom on. Se puede agrandar la figura o alguna zona
seleccionada de la figura. Hay que abrir la figura y usar los botones izquierdo y derecho
del ratn. Para desactivarlo, habr que escribir >>zoom off.

- Varias graficas en la misma figura. Se pueden dibujar tantas graficas como se


quieran en una misma figura. Si ya se tiene dibujada una, y se genera una nueva grafica,
en principio la figura anterior es sustituida por la nueva. Sin embargo, utilizando el
comando >>hold on, se mantendr la anterior, con todas sus propiedades, y se podr
dibujar encima una nueva. Para desactivar el comando anterior: >>hold off.
Otra forma de hacerlo es dibujar desde el principio dos graficas juntas, por ejemplo, se
dibujaran las graficas de las funciones y = sen(x) e y = sen(x + pi/3) en la misma figura:
Control Automtico Ing. Elctrica Pgina 15 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
Se generan las tablas,

>>x=linspace(0,2*pi,300);
>>y=sin(x);
>>z=sin(x+pi/3);

Y ahora se las dibuja

>>plot(x,y,'r-',x,z,'g--'),grid on

(La primera en color rojo, con trazo continuo, y la segunda en verde, con trazo
discontinuo).

- Etiquetado de graficas. Existen diversas posibilidades para el etiquetado de las


graficas. Se vera con un ejemplo:

>>x=linspace(-3,3,500); y=exp(-x.^2); z=2*exp(-x.^2);


>>plot(x,y,'-',x,z,'--') % dibujamos dos funciones
>>title('Campanas de Gauss')
>>xlabel('Eje de Abscisas') % Etiqueta el eje horizontal
>>ylabel('Eje de Ordenadas') % Etiqueta el eje vertical
>>legend('exp(-x^2)', '2*exp(-x^2)') % Pone una leyenda

Adems de los comandos descritos antes para etiquetar graficas, existe la posibilidad de
poner un texto en algn otro lugar de la figura. Con el comando >>gtext('texto'), se
abrir la figura y se podr indicar con el ratn el lugar donde ha de ir el texto, que se
seleccionara con un clic.

- Obtencin de puntos desde el grafico. Una vez que se ha realizado una grafica, se
puede necesitar conocer las coordenadas de algunos puntos de la misma. Por ejemplo, el
lugar aproximado en el que estn los mximos y mnimos, o si se quiere aadir alguna
recta o una poligonal al dibujo. Para conseguir esto, se puede utilizar el comando
ginput. Escribiendo

>>[x,y]=ginput(N)

Donde N es el nmero de puntos cuyas coordenadas se quiere obtener. Despus de


ejecutado el comando habr que pulsar con el botn izquierdo del ratn sobre el dibujo
tantas veces como puntos se hayan especificado. Las coordenadas de esos puntos
quedaran almacenadas en las variables [x; y].

GRAFICAS 3D: Funciones de la forma z = f(x; y)

Para dibujar grficos de funciones de dos variables z = f(x; y), al igual que para
funciones de una variable, en primer lugar hay que generar tablas de valores para las
variables x e y, en realidad, ahora lo que se tiene que hacer es generar un mallado sobre
un rectngulo del plano XY. Para eso se utiliza el comando meshgrid.
Por ejemplo, si se quiere dibujar la grafica de la funcin
Control Automtico Ing. Elctrica Pgina 16 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
en la regin del plano -2 < x < 2; -2 < y < 2, habr que efectuar los pasos siguientes: Se
genera el mallado

>>[x,y]=meshgrid(-2:.5:2);

Se sustituye en la funcin para calcular los valores de z

>>z=exp(-x.^2-y.^2);

Y ahora se puede dibujar el grafico con alguno de los siguientes comandos

>>plot3(x,y,z)
>>mesh(x,y,z)
>>surf(x,y,z)
>>surf(x,y,z),shading flat %efecto de sombreado distinto

Manipulacin de grficos 3D

MALLADO. El comando meshgrid se puede utilizar tambin para generar mallados de


regiones rectangulares. Por ejemplo, si se quiere hacer un mallado para la regin [0; 1] x
[0; 3], se tendr que escribir

>>[x,y]=meshgrid(0:.1:1,0:.1:3);

La secuencia 0:.1:1 describe la variacin de la variable x, y 0:.1:3 la de la variable y. Si


solo se utiliza un intervalo, este se aplica a las dos variables. Tambin se puede utilizar
dentro de meshgrid el comando linspace.

SOMBRAS Y COLORES. Para conseguir efectos de sombreados y colores diferentes


se pueden consultar todas las posibilidades de los comandos colormap y shading. Algo
que resulta tambin interesante, es aadir una escala de colores al dibujo que permite
conocer las alturas (coordenada z) de los diferentes puntos de la grafica, esto se
consigue con el comando colorbar (despus de dibujada la grafica).

Ejemplo: Utilizar la siguiente secuencia de comandos:

>>[x,y]=meshgrid(linspace(-1,1,50));
>>z=cos((x.*y)./(x.^2+y.^2+1));
>>surf(x,y,z),colorbar

Como se puede observar, los puntos ms altos corresponden a los colores mas calientes
y los puntos ms bajos de la grafica estn coloreados con colores fros.

EJES. Las longitudes de los ejes coordenados tambin se pueden modificar con el
comando axes.

>>axes([xmin xmax ymin ymax zmin zmax])

Los comandos grid on y axis square tambin funcionan en este tipo de grficos.
Control Automtico Ing. Elctrica Pgina 17 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
ROTACION DE GRAFICAS. Otro comando interesante en las graficas 3D es
rotate3d, que permite, utilizando el ratn sobre la figura, rotarla de manera interactiva
en tres dimensiones.

CURVAS DE NIVEL. Dada una funcin z = f(x; y), las curvas sobre el plano XY,
determinadas por f(x; y) = k, donde k es una constante se llaman curvas de nivel. Hay
varias formas de obtenerlas usando MatLab.
Se representara la grafica de la funcin

dibujando algunas curvas de nivel. Se crea el mallado:

>>[x,y]=meshgrid(-2:.1:2);

Se sustituye en la funcin, para calcular los valores de z,

>>z=x.^2+y.^2;

Ahora, se puede dibujar la grafica utilizando alguno de los comandos descritos


anteriormente.
Las curvas de nivel se pueden hacer utilizando alguno de los comandos siguientes

>>contour(x,y,z,10) % dibuja 10 curvas de nivel


>>contour3(x,y,z,10) % lo mismo, pero en el espacio
>>pcolor(x,y,z),colorbar

Esta ltima orden dibuja un mapa de colores por niveles, la orden colorbar hace
aparecer una escala de valores segn el color, es decir, indica el valor de la variable z,
como se describi antes.
Si se usa el comando contour, despus se pueden etiquetar las curvas con los valores
correspondientes de la z. Para hacer esto: Primero se dibujan las curvas de nivel con

>>contour(x,y,z,10)

Despus se guarda la informacin en una variable, por ejemplo,

>>cs=contour(x,y,z,30);

A continuacin, se tienen dos opciones:

>>clabel(cs) % etiqueta algunas aleatoriamente

O bien

>>clabel(cs,'manual') % permite elegirlas con el ratn

Por otra parte, el comando >>meshc(x,y,z), dibuja la grafica, y por debajo, las curvas de
nivel (algunas veces ser necesario modificar los ejes para que la grafica de la funcin
no tape a las curvas de nivel).
Control Automtico Ing. Elctrica Pgina 18 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
3.2 Ficheros de Comandos: Son archivos de texto con la extensin .m que ejecutan
lnea a lnea las ordenes y comandos que aparecen en el. Se pueden construir y
modificar con cualquier editor de texto. Para crearlo seleccionar FileNewM-File; se
abrir el editor de archivos .m donde se pueden escribir los comandos MatLab, tal y
como se ejecutaran desde el editor de comandos. Ejemplo:
Ganancia_en_Sistemas_de_2_Orden

close all
w=logspace(-1,2,1000); % Vector de frecuencias
% Anlisis de la influencia de la ganancia en la respuesta en
frecuencia de un sistema de 2 orden
psi = 0.1; wn=2;
for k=[0.5 1 2];
num=[k*wn^2]; den=[1 2*psi*wn wn^2];

figure(1), hold on
bode(num,den,w), grid minor
title('Influencia de la ganancia en la respuesta en frecuencia de
un sistema de 2 orden');
legend('K=0.5','K=1','K=2');
hold off

figure(2), hold on
step(num,den);grid minor
title('Influencia de la ganancia en la respuesta en el tiempo de
un sistema de 2 orden');
legend('K=0.5','K=1','K=2');
hold off

disp('Pulsa una tecla para continuar'), pause


end;

Para ejecutarlo, basta con escribir el nombre del archivo desde el editor de comandos.
Las variables definidas en el archivo Ganancia_en_Sistemas_de_2_Orden.m pasan a
formar parte de la coleccin de variables existentes en la sesin de MatLab, quedando
almacenadas en el workspace junto al resto de variables.

4 Matemtica simblica:

MatLab permite la realizacin de clculos de manera simblica si previamente se


definen como smbolos las variables y funciones con las que se va a operar. Todos los
comandos se encuentran en la toolbox de matemtica simblica, incorporando un nuevo
tipo de dato en MatLab: el objeto simblico (sym object). Las variables se han de
definir como smbolos mediante el comando syms. Las funciones se definen
directamente con el comando sym. Las expresiones o funciones creadas a partir de
variables simblicas adquieren automticamente el tipo de objeto simblico.
Con variables y funciones simblicas se puede realizar todo tipo de calculo: diferencial,
integral y matricial; tambin es posible la resolucin de ecuaciones simblicas y
diferenciales, y la obtencin de distintas transformadas como la de Fourier, Laplace o Z.
Ejemplo:

>>syms s z % s y z son variables simblicas


>>G1s=1/(s+1); % G1s es una funcin simblica de la variable s
>>G2s=2*s/(s^2+s+1); % G2s es una funcin simblica de la variable s
Control Automtico Ing. Elctrica Pgina 19 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
>>G12s=G1s+G2s % suma simblica

G12s =

1/(s+1)+2*s/(s^2+s+1)

>>pretty(G12s)

1 s
----- + 2 ----------
s+1 2
s +s+1

El comando pretty es til cuando MatLab devuelve un resultado de difcil interpretacin


en una sola lnea.

>>G12s=simplify(G12s)

G12s =

(3*s^2+3*s+1)/(s+1)/(s^2+s+1)

El comando simplify sirve para expresar como cociente de polinomios de la variable


simblica s.

>>pretty(G12s)

2
3s +3s+1
--------------------
2
(s + 1) (s + s + 1)

Se pueden obtener dos variables simblicas que contengan las ecuaciones del
numerador y denominador de la funcin mediante el comando numden.

>>[n d]=numden(G12s) %n y d son variables simblicas

n=
3*s^2+3*s+1

d=
(s+1)*(s^2+s+1)

Tambin es posible resolver funciones simblicas con el comando solve.

>>ceros=solve(n) %calcula las races del numerador n


ceros =
-1/2+1/6*i*3^(1/2)
-1/2-1/6*i*3^(1/2)
Control Automtico Ing. Elctrica Pgina 20 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna

>>polos=solve(d) %calcula las races del denominador d


polos =
-1
-1/2+1/2*i*3^(1/2)
-1/2-1/2*i*3^(1/2)

La representacin grafica de funciones simblicas en MatLab se puede realizar


mediante el comando ezplot. Puede especificarse el rango de variacin que toma la
variable. Ejemplo:

>>syms t; % definicin de t como smbolo


>>y2s=5*t^2 % definicin de la funcin simblica y2s
>>ezplot(y2s, [0,6]) % representacin grafica de y2s en el rango 0-6

4 - Modelado de Seales: Para realizar simulaciones en MatLab que permitan analizar el


comportamiento de los sistemas, es necesario definir las seales que intervienen
(Entrada de Referencia y Perturbaciones principalmente), as como las funciones de
transferencia de los sistemas (actuadores, reguladores, sensores y modelo del proceso).

4.1 Seales Elementales: En primer lugar se crea un vector de tiempo acotado en un


intervalo determinado; despus se define la forma de la seal (Tambin mediante un
vector que contiene los valores de la amplitud).
4.1.1 Escaln Unitario:

>> t=0:0.1:1; % Valor Inicial: Intervalo: Valor Final


O
>>t=linspace(0,1,11); % Valor Inicial, Valor Final, Numero de Elementos
>>escalon=ones(1,11); % Se indica N de Filas, N de Columnas
O
>>escalon=linspace(1,1,11);% Valor Inicial, Valor Final, Numero de Elementos
>>plot(t,escalon)

4.1.1 Rampa:

>>rampa=t;
>>plot(t,rampa)

4.1.3 Parbola:

>>parabola=t.^2;
>>plot(t,parabola)

Las seales tambin se pueden definir mediante funciones simblicas, para ello basta
con definir la variable tiempo como un smbolo en vez de cmo un vector; de esta
forma, todas las seales construidas con el tiempo simblico pasaran a ser funciones
simblicas:

>>escalon_s=sym('1');
>>syms t_s;
Control Automtico Ing. Elctrica Pgina 21 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
>>rampa_s=t_s;
>>parabola_s=0.5*(t_s)^2;
>>ezplot(escalon_s)
>>grid on
>>hold on
>>ezplot(rampa_s)
>>ezplot(parabola_s,[0,6])

4.2 - Transformada de Laplace usando MatLab: El comando laplace permite calcular la


transformada de Laplace de expresiones definidas de forma simblica, devolviendo otra
expresin simblica en la variable s. Por ejemplo:

>>syms a t
>>L = laplace(exp(-a*t))

Estos comandos devuelven en la variable L la expresin simblica de la transformada


de Laplace de la funcin:

que resulta ser la expresin ya conocida 1/(s+a).


NOTA: observe que el comando laplace calcula la transformada unilateral.

Otro ejemplo:
>>syms f t
>> f=t;
>> laplace(f)
ans =1/s^2

donde f y t son las variables simblicas, f la funcin, t la variable tiempo.

Otro ejemplo:
>> syms t s
>> F=laplace(f,t,s)
Para hacer ms legible la expresin puede usarse el comando pretty. El siguiente es un
ejemplo de funcin f(t):

>> syms t s
>> f=-1.25+3.5*t*exp(-2*t)+1.25*exp(-2*t);
>> F=laplace(f,t,s)
F=
(s-5)/s/(s+2)^2
Control Automtico Ing. Elctrica Pgina 22 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
>> pretty(F)
s5 ;
s (s + 2)^2
la cual corresponde a la F(s):

Alternativamente, se puede escribir la funcin f(t) directamente como parte del


comando laplace:
>>F2=laplace(-1.25+3.5*t*exp(-2*t)+1.25*exp(-2*t))
Utilizando el comando eval es posible particularizar una expresin matemtica
simblica. Por ejemplo:

>>syms t
>>L = laplace(exp(t)) %Se define el punto en el que se quiere particularizar
>>s = 5 + j %Se calcula el valor en dicho punto
>>eval(L)

Estos comandos devuelven el valor de la transformada de Laplace de la funcin

particularizada en el punto s = 5 + j. Observe que el comando eval utiliza el valor que la


variable s tenga en el momento de su llamada.

4.3 - Transformada Inversa de Laplace: El comando que se usa es ahora ilaplace.


Tambin se necesita definir los smbolos t y s.
Para calcular la inversa de la funcin F(s) anterior:

>> syms t s
>> F=(s-5)/(s*(s+2)^2);
>> ilaplace(F)
ans =
-5/4+1/4*exp(-2*t)*(5+14*t)
Se puede usar el comando simplify para simplificar la respuesta:
>> simplify(ans)
ans =
-5/4+7/2*t*exp(-2*t)+5/4*exp(-2*t)
Control Automtico Ing. Elctrica Pgina 23 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
>> pretty(ans)
-5/4 + 7/2 t exp(-2 t) + 5/4 exp(-2 t)

La cual corresponde a la f(t):

Alternativamente se puede escribir:


>> ilaplace((s-5)/(s*(s+2)^2))

Otro ejemplo:

>> F=10*(s+2)/(s*(s^2+4*s+5));
>> ilaplace(F)
ans =
4+2*(-2*cos(t)+sin(t))*exp(-2*t)

4.4 - Transformada Inversa de Laplace usando Expansin en Fracciones Parciales: Se


busca encontrar la Expansin en Fracciones Parciales de:

El siguiente programa de MatLab da los coeficientes en la expansin. Escribir los


coeficientes del numerador y del denominador en vectores separados y MatLab le da los
coeficientes que corresponden a los polos en la expansin:

>> n=[0 0 4 4 4];


>> d=[1 3 2 0 0];
>> [r,p,k]=residue(n,d)
r=
-3
4
-1
2
Control Automtico Ing. Elctrica Pgina 24 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
p=
-2
-1
0
0
Entonces, la expansin en fracciones parciales es:

5 Modelado de Sistemas Lineales:

Los sistemas continuos o LTI (Linear Time Invariant) se expresan a travs de su


Funcin de Transferencia. Este tipo de funcin se define en el plano complejo y
depende de la variable s. La Funcin de Transferencia puede expresarse como cociente
de polinomios (formato tf) o en funcin de las races del numerador y denominador, que
reciben el nombre de ceros y polos respectivamente (formato zpk). De este modo, las
expresiones de las funciones de transferencia de un sistema son:

La creacin de sistemas a travs de su Funcin de Transferencia es el paso previo para


cualquier simulacin o anlisis posterior que se quiera realizar en MatLab.
5.1 Definicin de funciones de transferencia: Existen dos procedimientos para definir
las funciones de transferencia de los sistemas, a travs de los comandos definidos para
tal fin, tf y zpk, o mediante la construccin directa de su expresin. Los sistemas LTI as
definidos tienen internamente una serie de propiedades que podrn ser consultadas y/o
modificadas: numerador, denominador, ceros, polos, etc.
5.1.1 Construccin mediante comandos:
Comando tf: Sirve cuando la F. de T. esta expresada como cociente de polinomios; se le
pasan dos vectores con los coeficientes en s del numerador y del denominador (deben ir
ordenados desde el elemento de mayor potencia al de menor, aadiendo un cero en el
caso de no existir). Ejemplo:
Control Automtico Ing. Elctrica Pgina 25 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
>>num = [1 0]; % Numerador: s
>>den = [1 2 10]; % Denominador: s^2 + 2 s + 10
>>H = tf(num,den)

Comando zpk: Sirve cuando la F. de T. esta expresada en funcin de los polos y ceros
del sistema; se le pasan tres vectores que contengan las posiciones de los ceros (z), las
de los polos (p) y el factor de ganancia (k), en ese orden. Ejemplo: Suponga la siguiente
F. de T.:

>>z = 0; % ceros
>>p = [2 1+i 1-i]; % polos
>>k = -2; % ganancia
>>H = zpk(z,p,k)

En un sistema que no contenga ceros, el vector correspondiente (z) debe estar vaco,
indicndose con [ ]. Ejemplo:

>> p = [-1 -6 -8]; % vector de polos


>>G=zpk([ ],p,20) % construccion de G(s) sin ceros y K=20

5.1.2 Construccin directa: Si se define previamente la variable s como un objeto tf, se


pueden construir las F. de T. sin hacer uso de los comandos vistos anteriormente.
Ejemplo:

>>s = tf ('s'); % Crear variable de Laplace


>>H = s / (s^2 + 2*s + 10)

Otro ejemplo:

>>s = zpk('s');
>>H = -2*s / (s - 2) / (s^2 - 2*s + 2)

5.1.3 Sistemas de Segundo Orden: La F. de T. de un sistema de segundo orden se puede


construir directamente con el comando ord2 a partir de los parmetros Psi (Coeficiente
de Amortiguamiento) y Wn (Frecuencia Natural). El comando devuelve los polinomios
del numerador y del denominador de la funcin. Ejemplo:

>>[n d]=ord2(1,0.7)
>>G=tf(n,d)

5.1.4 Sistemas con Retardo Puro:

Las funciones de transferencia de sistemas que incluyen algun retardo del tipo se
construyen con los mismos comandos, aadiendo el tiempo del retardo en la propiedad
'Input Delay'. Ejemplo:

>>G=tf(1,[0.5 1], 'inputdelay', 0.5)


Control Automtico Ing. Elctrica Pgina 26 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
Que se corresponde con la F. de T.:

En determinadas ejecuciones de MatLab, el retardo en la F. de T. de un sistema generara


errores debido al carcter no lineal del termino . Un ejemplo de ello sucedera al
intentar calcular la F. de T. equivalente en Lazo Cerrado de un sistema con retardo. Para
evitarlo, se puede realizar una aproximacin mediante el desarrollo de Pad y
convertirlo en una funcin racional de la forma:

El comando de MatLab que realiza esta aproximacin pade, al que se le pasan los
argumentos la F. de T. con retardo y el numero de trminos de los que constara la serie
con la que se desea realizar la aproximacin.

>>G_aprox1=pade(G,1) %aproximacin con orden uno de truncamiento


>>G_aprox2=pade(G,2) %aproximacin con orden dos de truncamiento

5.2 - Conversin de Modelos: Matlab permite que los distintos modelos puedan ser
convertidos entre s, de modo que, por ejemplo, se pueda obtener la forma factorizada
de la funcin de transferencia cero-polo-ganancia, partiendo de la forma de cociente de
polinomios.

Funcin: residue: La funcin residue convierte la funcin de transferencia polinmica:

en la funcin transferencia de fracciones parciales:

Instruccin:

>>[r,p,k] = residue (B,A)

Esta instruccin determina los vectores r, p, y k de los valores de residuo (r1, r2,..., rn),
los polos (p1, p2,..., pn) y los trminos directos de la expansin de fracciones parciales.
Las entradas son los coeficientes de los polinomios B (b0, b1,..., bn-1), numerador de la
expresin polinmica y A (a0, a1,..., am-1), denominador de la expresin polinmica.
Ejemplo: Calcular la funcin de transferencia de fracciones parciales de la siguiente
funcin de transferencia polinmica:
Control Automtico Ing. Elctrica Pgina 27 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna

>>% Calcular expansin de fracciones parciales.


>>B=[1,2,3];
>>A=[1,3,3,1];
>>[r,p,k]= residue (B,A);
>>r

r=
1.0000
-0.0000
2.0000
>>p

p=
-1.0000
-1.0000
-1.0000

Por lo tanto la solucin de este Ejemplo es:

Funcin tf2z: La funcin tf2zp convierte la funcin de transferencia polinmica:

en la funcin transferencia cero-polo-ganancia:

Instruccin:

>>[z,p,k] = tf2zp (num,den)

Esta instruccin determina los ceros (z1, z2, , zm), los polos (p1, p2,..., pn) y la
ganancia correspondiente (k) de la funcin de transferencia del tipo cero-polo-ganancia.
Las entradas son los coeficientes en orden descendente de potencias de s del numerador
y denominador de la funcin de transferencia polinmica a convertir.
Ejemplo: Calcular la funcin de transferencia cero-polo-ganancia de la siguiente
funcin de transferencia polinmica:
Control Automtico Ing. Elctrica Pgina 28 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
>>% Conversin de funcin de transferencia en cero-polo-ganancia
>>num=[1,2,3];
>>den=[1,3,3,1];
>>[z,p,k]=tf2zp(num,den)
z=
-1.0000 + 1.4142i
-1.0000 - 1.4142i
p=
-1.0000
-1.0000 + 0.0000i
-1.0000 - 0.0000i
k=
1
Por lo tanto la solucin de este Ejemplo es:

Funcin zp2tf: La funcin zp2tf convierte la funcin de transferencia cero-polo-


ganancia:

en la funcin transferencia polinmica:

Instruccin:

>>[num,den] = zp2tf (z,p,k)

Esta instruccin determina los vectores num y den de los coeficientes en orden
descendente de potencias de s del numerador y denominador de la funcin de
transferencia polinmica a obtener.
Las entradas son los vectores z, de los ceros (z1, z2, , zm), p, de los polos (p1, p2,...,
pn) y la ganancia correspondiente (k) de la funcin de transferencia del tipo cero-polo-
ganancia.
Ejemplo: Calcular la funcin de transferencia polinmica de la siguiente funcin de
transferencia cero-polo-ganancia:

>>% Conversin de funcin de transferencia en forma polinmica


>>z=[-1.0000 + 1.4142i;-1.0000 - 1.4142i];
>>p=[-1;-1;-1];
>>k=1;
>>[num,den]=zp2tf(z,p,k)
Control Automtico Ing. Elctrica Pgina 29 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
num =
0 1.0000 2.0000 3.0000
den =
1331

Por lo tanto la solucin de este Ejemplo es:

5.3 - Reduccin de diagrama de bloques con MatLab: MatLab dispone de un amplio


abanico de programas especializados de apoyo. Adicionalmente, existen comandos en
MATLAB que facilitan la labor, tediosa en ocasiones, de reducir una representacin en
diagramas de bloques.

Estos incluyen funciones para realizar:

- Conexiones en serie y en paralelo (series y parallel)


- Conexiones de realimentacin (feedback y lft)
- Concatenaciones de entrada y salida ([ , ] , [ ; ] , y append)
- Construccin general de diagrama de bloques (connect).

Estas funciones pueden manejar cualquier combinacin de las representaciones del


modelo. Con fines ilustrativos, crear los siguientes dos modelos SISO de funcin de
transferencia:

>>H1 = tf(2,[1 3 0])


>>H2 = zpk([ ],-5,5)

Conexin en serie

Usar el operador * o la funcin series para conectar modelos LTI en serie, por ejemplo:

>>H = H2 * H1

o equivalentemente:

>>H = series(H1,H2)
Control Automtico Ing. Elctrica Pgina 30 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
Conexin en paralelo

Use el operador + o la funcin parallel para conectar los modelos LTI en paralelo, por
ejemplo:

>>H = H1 + H2

o equivalentemente

>>H = parallel(H1,H2)

Conexiones de Realimentacin: La configuracin de realimentacin estndar se muestra


a continuacin:

Para construir un modelo de la transferencia a lazo cerrado de la u a la y, tipee:

>>H = feedback(H1,H2)

Tenga en cuenta que feedback supone la realimentacin negativa de forma


predeterminada. Para aplicar la realimentacin positiva, utilice la siguiente sintaxis:

>>H = feedback(H1,H2,+1);

Se puede utilizar Matlab para la reduccin de diagrama de bloques. Se dispone de tres


mtodos:
1.) Solucin a travs de los comandos series, parallel y feedback.
2.) Solucin mediante operaciones algebraicas.
3.) Solucin mediante los comandos append y connect.

Para mejor entendimiento de cada una de las funciones utilizadas en la prctica se


recomienda utilizar la ayuda de MatLab.
Control Automtico Ing. Elctrica Pgina 31 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
Ejemplo: Teniendo el diagrama de bloques de la figura se quiere reducir.

1. Solucin a travs de los comandos Series, Parallel y Feedback

>>% Solucin a travs de los comandos Series, Parallel y Feedback


>>numg1=[-1]; deng1=[1]; G1=tf(numg1,deng1); % Crea F. de T. G1(s)
>>numg2=[0 2]; deng2=[1 2]; G2=tf(numg2,deng2); % Crea F. de T. G2(s)
>>numg3=-0.125*[1 0.435]; deng3=conv([1 1.23],[1 0.226 0.0169]);
>>G3=tf(numg3,deng3); % Crea F. de T. G3(s)
>>numh1=[-1 0]; denh1=[0 1]; H1=tf(numh1,denh1);% Crea F. De T. H1(s).
>>G4=series(G2,G3); % Calcula producto
>>G5=feedback(G4,H1); % Calcula retroalimentacin
>>Ge=series(G1,G5); % Calcula producto
>>T=feedback(Ge,1) % Calcula retroalimentacin

Transfer function:

0.25 s + 0.1088
-----------------------------------------------------------
s^4 + 3.456 s^3 + 3.457 s^2 + 0.9693 s + 0.1503

2.) Solucin a travs de operaciones algebraicas

>>% Solucin a travs de operaciones algebraicas


>>clear % Limpia variables.
>>numg1=[-1]; deng1=[1]; G1=tf(numg1,deng1); % Crea F. de T. G1(s)
>>numg2=[0 2]; deng2=[1 2]; G2=tf(numg2,deng2); % Crea F. de T. G2(s)
>>numg3=-0.125*[1 0.435]; deng3=conv([1 1.23],[1 0.226 0.0169]);
>>G3=tf(numg3,deng3); % Crea F. de T. G3(s)
>>numh1=[-1 0]; denh1=[0 1]; H1=tf(numh1,denh1);% Crea F. De T. H1(s).
>>G4=G3*G2; % Calcula producto.
>>G5=G4/(1+G4*H1); % Calcula realimentacin.
>>G5=minreal(G5); % Cancela trminos comunes.
>>Ge=G5*G1; % Multiplica las F.T. de los lazos internos.
>>%T(s) a travs de operaciones algebraicas
>>T=Ge/(1+Ge); % F.T. de lazo cerrado.
>>T=minreal(T) % Cancela trminos comunes.
Se comprueba que se llega al mismo resultado que usando el Mtodo 1.
Control Automtico Ing. Elctrica Pgina 32 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
3.) Solucin con los comandos Append y Connect: Para diagramas de bloques ms
complicados, la funcin connect ofrece una forma sistemtica y sencilla para conectar
los bloques entre s. Para usar connect , siga estos pasos:

- Definir todos los bloques del diagrama, incluidos los sumadores.


- Nombrar todos los canales de entradas y de salidas del bloque.
- Seleccione el diagrama de bloques de E/S de la lista de bloque de E/S.

>>% Solucin a travs de connect. Definir todos los bloques y sumadores


>>clear % Limpia variables.
>>numg1=[-1]; deng1=[1]; G1=tf(numg1,deng1); % Crea F. de T. G1(s)
>>numg2=[0 2]; deng2=[1 2]; G2=tf(numg2,deng2); % Crea F. de T. G2(s)
>>numg3=-0.125*[1 0.435]; deng3=conv([1 1.23],[1 0.226 0.0169]);
>>G3=tf(numg3,deng3); % Crea F. de T. G3(s)
>>numh1=[-1 0]; denh1=[0 1]; H1=tf(numh1,denh1);% Crea F. De T. H1(s).
>>G1.InputName = 'iG1'; G1.OutputName = 'oG1';
>>G2.InputName = 'iG2'; G2.OutputName = 'oG2';
>>G3.InputName = 'oG2'; G3.OutputName = 'y';
>>H1.InputName = 'y'; H1.OutputName = 'oH1';
>>% Definir los Sumadores
>>Sum1 = sumblk('iG1','r','y','+-');
>>Sum2 = sumblk('iG2','oG1','oH1','+-');
>>% Calcular Funcion de Transferencia r  y
>>T = connect(G1,G2,G3,H1,Sum1,Sum2,'r','y')

Transfer function from input "r" to output "y":

0.25 s + 0.1087
-----------------------------------------------------------
s^4 + 3.456 s^3 + 3.457 s^2 + 0.9693 s + 0.1503

Se comprueba que se llega al mismo resultado que usando los Mtodos 1 y 2.


Otro ejemplo: Se analiza un ejemplo ms complicado: Sea el siguiente Diagrama de
Bloques:

Para el diagrama de bloques anterior, los pasos serian (Se supone que ya estn definidos
F, C, G y S):
Control Automtico Ing. Elctrica Pgina 33 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
>>% Definir las Entradas y las Salidas de los Bloques
>>F.InputName = 'r'; F.OutputName = 'uf ';
>>C.InputName = 'e'; C.OutputName = 'uc';
>>G.InputName = 'u'; G.OutputName = 'ym';
>>S.InputName = 'ym'; S.OutputName = 'y';
>>% Definir los Sumadores
>>Sum1 = sumblk('e','r','y','+-');
>>Sum2 = sumblk('u','uc','uf');
>>% Calcular Funcion de Transferencia r -> ym
>>T = connect(F,C,G,S,Sum1,Sum2,'r','ym');
>>step(T), grid

Ejercicio: Encontrar la Funcin de Transferencia Y(s)/R(s) del siguiente Diagrama de


Bloques.

6 Anlisis Dinmico: Control System Toolbox proporciona un amplio conjunto de


funciones para el anlisis de los modelos LTI. Una vez que se han definido todos y cada
uno de los bloques que forman el sistema, a travs de su F. de T. (como objetos tf o
zpk), es posible calcular algunas de sus caractersticas (polos, ceros, ganancia esttica,
etc.), as como obtener la evolucin de la salida ante distintos tipos de entrada (respuesta
al impulso, al escaln unitario, etc.), estudiar el comportamiento en Lazo Cerrado
(Lugar de las Races) y determinar su comportamiento frecuencial (Diagramas de Bode,
de Nyquist y de Nichols). A lo largo del apartado se usaran sistemas cuya F. de T. son:

6.1 Extraccin de caractersticas:


6.1.1 Obtencin de los Polos: Se usa el comando pole.

>>G1=tf(2,[1 2]) % definicin de G1(s)


>>G2=tf(9,[1 1.5 9]) % definicin de G2(s)
>>polosG2=pole(G2) % obtencin de los polos de G2(s)

6.1.2 Obtencin de los Ceros: Se usa el comando zero.

>>cerosG2=zero(G2) % obtencin de los ceros de G2(s)

6.1.3 - Obtencin de la Ganancia Esttica: Se usa el comando dcgain.

>>K=dcgain(G2) % Ganancia de G2 cuando s = 0


Control Automtico Ing. Elctrica Pgina 34 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
6.1.4 Obtencion de Psi y Wn: Se usa el comando damp. (Wn en Radianes/Segundo).

>>[frec amtg]=damp(G2)

Con damp tambin se puede conocer la ubicacin de los polos poniendo una tercera
variable:

>>[frec amtg polos]=damp(G2)

6.1.5 Estabilidad Absoluta: Se puede preguntar si este sistema es estable (1) o no (0):

>>isstable(G2)

6.2 Respuestas de Sistemas Continuos: Para analizar el comportamiento transitorio y


permanente de la respuesta de los sistemas, MatLab permite realizar directamente
simulaciones ante dos tipos de entrada: El Impulso (impulse) y el Escaln Unitario
(step). Las graficas generadas muestran la respuesta del sistema y son interactivas con el
ratn, pudindose leer el valor de la seal en cualquier punto de la misma. Tambin es
posible determinar automticamente los valores de las caractersticas estticas y
dinmicas mas usuales (Tiempo de Pico, Sobre Oscilacin, Valor Final, etc.)

6.2.1 Respuesta al Impulso:

>>impulse(G2)
>>title('Respuesta Impulsional')
>>ylabel('Amplitud')
>>xlabel('Tiempo')

6.2.2 Respuesta al Escaln Unitario:

>>step(G2)

6.2.3 Respuestas de varios sistemas: Se pueden obtener simulaciones de varios


sistemas sobre una misma grafica, incorporando al comando las F. de T. separadas por
comas. Tambin se puede especificar un tiempo para la simulacin, indicndolo con un
valor numrico dentro del comando a la derecha de las F. de T.

>>impulse(G1,G2,4) % Impulso sobre G1(s) y G2(s), 4 Segundos de simulacin

6.2.4 Mediciones sobre la respuesta: Es posible medir con el ratn el valor de la


respuesta en cualquier punto de la misma, desplegndose una ventana de texto que
identifica la respuesta y los valores de tiempo y amplitud en el punto seleccionado en la
grafica. No obstante, se pueden obtener los valores exactos de algunas caractersticas de
la respuesta de manera automtica. Para ello, basta con seleccionar con el botn derecho
del ratn sobre la grafica generada alguna de las caractersticas (Characteristics)
mostradas a continuacin:
Peak Response: Respuesta Pico
Amplitud del Pico Mximo
Sobre Oscilacin, Mp (en %)
Tiempo de Pico, tp
Control Automtico Ing. Elctrica Pgina 35 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
Settling Time: Tiempo de Establecimiento
Tiempo de Establecimiento, ts
Rise Time: Tiempo de Subida o de Crecimiento
Tiempo de Subida, tr
Steady State: Estado Estable o Respuesta Permanente

Nota: Los tiempos de establecimiento ts y de subida tr son configurables seleccionando,


con el botn derecho, la opcin PropertiesOptions.

6.2.5 Respuesta ante cualquier tipo de entrada: Se obtiene mediante el comando lsim.
Los parmetros que se le pasan son la F. de T. del sistema, seguido de los vectores de
amplitud y tiempo que forman la seal de entrada. Ejemplo:

>>t=0:0.1:10; % Vector de Tiempo


>>x1=t.^2; % Seal Parablica
>>lsim(G1,x1,t) % Obtencin de la respuesta

Otro ejemplo:

>>x2=t; % Seal Rampa


>>lsim(G2,x2,t) % Obtencin de la respuesta

6.3 Representacin de Polos y Ceros: Las posiciones que ocupan los polos y ceros de
un sistema en el plano complejo determinan modos transitorios que puede resultar
interesante conocer para el anlisis y / o diseo de los sistemas. Por otro lado, brindan
informacin valiosa para determinar la estabilidad del sistema. El comando pzmap sirve
para obtener la grafica de polos y ceros en el plano complejo. Ejemplo: Suponga la
siguiente F. de T.:

>>c=roots([1 1 0.5]); % Obtencin de races de s^2+s+0.5


>>p=roots([1 4 13]); % Obtencin de races de s^2+4s+13
>>G3=zpk([1 c(1) c(2)],[0 -1 -5 p(1) p(2) ], 1) % Obtencin de G3
>>pzmap(G3) % Grafica de polos y ceros de G3(s)
>>axis([-6 2 -4 4]) % Escalado de ejes
>>sgrid % Activacin de rejilla en el plano s

El comando sgrid superpone en una rejilla con lneas igual valor para Psi (Coeficiente
de Amortiguamiento) y para Wn (Frecuencia Natural); permitiendo as determinar estos
parmetros para cada polo del sistema.

6.4 El Lugar de las Races: As como es importante conocer las posiciones de los
polos y ceros en lazo abierto, tambin los es saber cual va a ser la evolucin de los polos
cunado el sistema va a trabajar en lazo cerrado y predecir el efecto que puede producir
la variacin de algn parmetro del sistema (generalmente el factor de ganancia K). De
esta forma, se puede saber como va a ser el funcionamiento global del sistema y estudiar
cualquier posibilidad de inestabilidad sobre el mismo. Este anlisis se lleva a cabo
Control Automtico Ing. Elctrica Pgina 36 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
mediante el Lugar de la Races y en MatLab se puede obtener fcilmente mediante el
comando rlocus.
Este comando se ejecuta pasndole como parmetro el objeto tf que contiene la F. de T.
del lazo abierto; su resultado es una grafica con las trayectorias que seguirn los polos
del sistema en lazo cerrado. Sobre esta grafica, y con el ratn, se puede medir cualquier
punto del lugar, obteniendo informacin de la posicin del polo en ese punto, el factor
de ganancia que se puede aadir al sistema para alcanzar esa posicin, y de los
parmetros dinmicos como la Frecuencia natural Wn, el Coeficiente de
Amortiguamiento Psi y la Sobre Oscilacin Mp (en %). Ejemplo: Suponer la siguiente
F. de T.:

>>G4=tf(18,[1 3.5 12 18]) % Construccin de G4(s)


>>rlocus(G4) % Obtencin del Lugar de las Races

Para determinar el Lugar de las Races solo en un determinado rango de valores de K,


basta con incluir en el comando un vector con los valores inicial y final de la ganancia.

>>rlocus(G4, [0,5]) % L. de R. para valores de K entre 0 y 5

7 Anlisis Frecuencial: Cuando se trabaja con seales de entrada de tipo senoidal, se


recurre al anlisis frecuencial para estudiar el comportamiento de los sistemas en
rgimen permanente. Este anlisis permite ver como se propaga la seal a travs del
sistema, siendo especialmente til en el diseo de filtros. La salida de un sistema
excitado con una onda senoidal proporcionara a la salida una seal tambin senoidal en
la que su amplitud y fase en general varan respecto de la seal de entrada.
A travs del cambio s = jw, se convierte una F. de T. G(s) de dominio continuo, en una
funcin G(jw) en el dominio de la frecuencia. Aplicando esta transformacin a lo largo
de un intervalo de frecuencias, se obtendr la evolucin del modulo y la fase de la salida
del sistema. Este tipo de informacin se suele representar grficamente mediante
distintos diagramas frecuenciales que se estudiaran seguidamente.
7.1 Representacin grafica de la respuesta en frecuencia: La forma de analizar el
comportamiento en frecuencia de un sistema consiste en descomponer la seal de salida
del mismo en sus dos componentes: modulo y fase. Si el rango de variacin de la
frecuencia empleada se expresa en escala natural, se obtendrn dos graficas que se
conocen como Diagramas de Mdulos y Fases. El comando freqresp permite visualizar
estos tipos de diagramas; hay que definir la F. de T. del sistema y el vector
correspondiente al rango de frecuencias de inters. Ejemplo:

>>G1=tf(1,[1 1.4 1]) % Definicin de G1(s)


>>w=linspace(0.1,20,100); % Vector de frecuencia de 0.1 a 20 rad/seg
>>y1=freqresp(G1,w); % Respuesta en frecuencia
>>mod_y1=abs(y1); % Modulo de la respuesta
>>fas_y1=angle(y1); % Fase de la respuesta (en radianes)
>>mod_y1=mod_y1(:,:); % Conversin de Vector 3D a 1D
>>fas_y1=fas_y1(:,:); % Conversin de Vector 3D a 1D
>>plot(w,mod_y1) % Representacin del Modulo
>>xlabel('rad/seg')
Control Automtico Ing. Elctrica Pgina 37 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
>>ylabel('Modulo')
>>figure
>>plot(w,fas_y1) % Representacin de Fase (en radianes)
>>xlabel('rad/seg')
>>ylabel('Fase(rad)')

7.2 Diagramas de Bode: Cuando en los diagramas de mdulos y fases la frecuencia se


expresa en escala logartmica se obtiene el Diagrama de Bode, cuya representacin
grafica es la ms empleada en todo anlisis frecuencial. Estos permiten determinar
algunos parmetros importantes de los sistemas, como son las Frecuencias de Corte y el
Ancho de Banda, as como analizar la Estabilidad Relativa de los mismos. El comando
bode permite obtener los diagramas de mdulos y fases a partir de la F. de T. G(s),
definida como un objeto tf o zpk. Los diagramas se representan en escala logartmica,
expresando el modulo en decibelios (db) y la fase en grados en un intervalo de
frecuencias ajustadas automticamente. Ejemplo:

>>G2=tf(9,[1 1.5 9]) % definicin de G2(s)


>>bode(G2) % Obtencin del Diagrama de Bode
>>grid on % Activa rejilla sobre la grafica

Si se desea representar el Diagrama de Bode en un rango determinado de frecuencias,


estas se pasaran al comando entre llaves, indicando los valores mnimo y mximo de
frecuencia. Ejemplo:

>> bode(G2,{1,10}) % Rango de Frecuencias entre 1 y 10 rad/seg


>>grid on % Activa rejilla sobre la grafica

Del Diagrama de Bode se puede obtener informacin til para analizar la Estabilidad
Relativa de los sistemas realimentados. Mediante el comando margin es posible
determinar los parmetros de Margen de Ganancia (en db), Margen de Fase (en grados)
y las respectivas Frecuencias de Cruce de Ganancia y de Fase del sistema realimentado.

>>margin(G2) % Bode + indicacin de Margen de Ganancia y de Fase

7.3 Diagrama Polar o de Nyquist: Es un vector representado en el plano complejo, que


resulta de variar la frecuencia en G(jw). El comando nyquist permite obtener dicho
diagrama, se le debe pasar como argumento el objeto tf o zpk del sistema. En la abscisa
se muestra la parte real y en la ordenada la parte imaginaria de la respuesta G(jw). Sobre
la grafica se indica marcado con color rojo el punto crtico de estabilidad. Ejemplo:

>>nyquist(G2)
>>grid on

La activacin de la rejilla sobre el diagrama de Nyquist muestra los crculos de modulo


constante (en db) en lazo cerrado.

7.4 Diagramas Modulo-Fase o de Nichols: El comando nichols permite obtener dicho


diagrama, en la abscisa se muestra la Fase (en grados) y en la ordenada el Modulo (en
db). Mediante la activacin de la rejilla, aparecen las curvas de Modulo y Fase constante
Control Automtico Ing. Elctrica Pgina 38 de 38
F.R. Tucumn Universidad Tecnolgica Nacional Ing. Juan Jess Luna
en lazo cerrado (baco de Nichols). Sobre la grafica se indica el punto critico de
estabilidad (0db, 180) marcado en color rojo. Ejemplo:

>>nichols(G2)
>>grid on

Você também pode gostar