Está en la página 1de 27

MATLAB

1. INTRODUCCIN.
Inicialmente fue desarrollado para facilitar el estudio en
cursos de teora de matrices, lgebra lineal y anlisis numrico
(MATrix LABoratory), pero actualmente va ms all, ya que
es un sistema interactivo y un lenguaje de programacin con
capacidad de ejecucin tcnica y cientfica en general.
Su elemento bsico es una matriz, que no requiere
dimensionamiento previo y se escribe tal como se hace
matemticamente, lo cual aporta facilidad y rapidez de uso.
Es, adems, una
representacin grfica.

herramienta

potente

para

la

Se utiliza en muchos campos, nos centraremos en su


utilidad como herramienta de control.

Seminario de Matlab - Pg. 1

2. FUNDAMENTOS DE MATLAB.
2.1. Cmo empezar a funcionar.
Nada ms ejecutar el programa, aparece un indicador de
espera para la introduccin de los comandos propios de
Matlab:
>>_
2.2. Expresiones.
Se introducen como se escriben matemticamente:
>> a = 4/3

respuesta:

a=

1.3333
se ha creado una variable "a" en el entorno de trabajo,
cuyo valor se puede consultar escribiendo su nombre:
>> a

respuesta:

a=
1.3333

Matlab reconoce hasta 19 caracteres como nombre de


variable y es sensible a las maysculas (a A).
Al introducir una expresin sin crear una variable, se
genera la variable ans que equivale a answer :
>> 4/3

respuesta:

ans =
1.3333
Seminario de Matlab - Pg. 2

Para que no aparezca la respuesta en pantalla, se aade


un punto y coma (;) al final de la expresin:
>> b = 4+7;
>>
El comando who ensea las variables de memoria:
>>who
a
b

ans

Si la expresin no cabe en una lnea se utilizan tres


puntos seguidos (...) y se contina en la siguiente lnea:
>> p = 1 + 2 + 3 + 4 + ...
5+6+7
Las expresiones pueden formarse con secuencias de
nmeros, operadores, funciones y variables definidas
previamente:
>> c = a * ( b - 1)

respuesta:

c=
13.3333

Operadores: Los usuales ms: * (multiplicacin)


\ (divisin por la izquierda)
^ (potencia)
Variables predefinidas: i, j, pi, Inf, NaN.
Seminario de Matlab - Pg. 3

Matlab contiene funciones que se pueden incorporar a


expresiones:
>> y = sqrt(1+4*i)

respuesta:

y=
1.6005 + 1.2486 i

Se obtiene informacin general con help y ayuda sobre


una funcin, operador, etc. especificando el nombre:
>> help sqrt
2.3. Creacin de ficheros de trabajo.
Un fichero de trabajo (script) contiene secuencias de
comandos ejecutables en el entorno de trabajo Matlab.
Se crean con un editor de texto externo, y se nombran
con extensin ".m".
Cuando se escribe el nombre del fichero en el indicador
de Matlab, se ejecutan los comandos que contiene.
Por ejemplo, sea el siguiente fichero de nuestro directorio:
% Ejemplo1.m
% Ejecuta magnitud y fase de la funcin de transferencia
% G(jw) = 1/(jw + 2) evaluada en w = 1.
w = 1;
G = 1 / (j*w + 2);
mag = abs(G)
fase = atan ( imag(G) / real(G) )
Seminario de Matlab - Pg. 4

Cuando escribamos el nombre de este fichero en el


indicador de Matlab, la respuesta ser:
>> Ejemplo1
mag =
0.4472
fase =
-0.4636
Todas las variables creadas en un fichero script
permanecen en el espacio de trabajo una vez ejecutado ste.
>> G

respuesta

G=
0.4000 - 0.2000 i

Las lneas que empiezan con % son comentarios.


2.4. Matrices, vectores y polinomios.
Una matriz se introduce listando sus elementos entre
corchetes [ ]:
- Los elementos de una fila (columnas) se separan por
comas o blancos.
- Las filas se separan por punto y coma CR.
>> A = [1 2; 3 4]

respuesta:

A=
1 2
3 4
Seminario de Matlab - Pg. 5

Los elementos de una matriz pueden ser cualquier


expresin Matlab.
Se reconocen slo matrices rectangulares, con igual
nmero de columnas en cada fila.
Para conocer la dimensin de una matriz se utiliza la
funcin size :
>> size(A)

ans =
2 2

respuesta:

Los elementos individuales de una matriz se referencian


mediante ndices entre parntesis:
>> A(2,2) = 5

respuesta:

A=

1 2
3 5

Al aadir un elemento en una posicin cuyos ndices son


superiores al tamao de la matriz, se insertan ceros
automticamente para mantenerla rectangular:
>> A(3,3) = 6

respuesta:

A=

1 2 0
3 5 0
0 0 6

Seminario de Matlab - Pg. 6

Un vector es una matriz de dimensin 1xn nx1 :


>> v = [sin(pi/3) -7^3 a+1]
v=
[0.8660 -343.0000 2.3333]
Se pueden crear vectores especiales utilizando ":"
>> n = 1:10;

genera un vector fila con elementos


de 1 a 10, con incremento 1.
>> nuevo = 1:0.25:2
nuevo =
1.0000 1.2500 1.5000 1.7500 2.0000
La funcin logspace(x,y,n) genera vectores con n
elementos espaciados logartmicamente entre 10 x y 10 y .
La funcin linspace(x,y,n) genera vectores con n
elementos linealmente espaciados.
Se pueden manipular matrices de forma muy flexible:
- Aadir una fila a la matriz A :
>> A = [A; [7 8 9]]

respuesta:

A=

1
3
0
7

2
5
0
8

0
0
6
9

Seminario de Matlab - Pg. 7

- Extraer una submatriz de A:


>> B = A(2:3,1:3)

respuesta:

B=

3 5 0
0 0 6

- Se utiliza ":" como ndice para designar "todos los elementos"


>> A(1,:) devuelve la 1 fila entera.
>> A(:)
todos los elem. de A en una nica columna.
Se pueden utilizar tambin vectores de 0s y 1s como
ndices para seleccionar no elementos de una matriz:
>> B = B(:,[0 1 1])

respuesta:

B=

5 0
0 6
Los vectores de 0s y 1s pueden ser creados con
operadores relacionales:
>> L = A(:,3) > 5;
>> A = A(L,:);
reemplaza las filas de A cuyos
elementos de la 3 columna sean > 5.
Funciones que generan matrices especiales:
diag: genera una matriz diagonal.
eye:
genera la matriz identidad (1s en la diagonal)
zeros, ones, rand, ...

Seminario de Matlab - Pg. 8

Los polinomios se describen en Matlab mediante


vectores con los coeficientes del polinomio en orden de
potencias decrecientes:
Por ejemplo, p = s2 + 5s + 6
>> p = [1 5 6]
Se evalan con la funcin polyval :
>> polyval(p,1)

ans =
12

respuesta:

(evala p en s=1)

Las races se obtienen con la funcin roots :


>> r = roots(p)

respuesta:

r=

-3
-2

La funcin poly permite construir polinomios a partir de


sus races:
>> t = poly([-4 -5])

respuesta:

t=
1 9 20

Seminario de Matlab - Pg. 9

2.5. Operaciones con matrices.


La aritmtica es la misma que la utilizada con escalares:
>> B = [5,0; 0,6]; D = [1,0; 0 2];
>> B + D
respuesta:
ans =
>> B * D

ans =

respuesta:

6 0
0 8
5 0
0 12

La divisin puede ser izquierda (\) derecha (/):


P.x = Q
y.P = Q

x = P-1.Q
y = Q.P-1

x=P\Q
y=Q/P

Los ndices tienen que coincidir, y en caso de un escalar


(1x1), se realiza la operacin del escalar con cada uno de los
elementos de la matriz.
Para obtener la traspuesta de una matriz vector se
utiliza el apstrofe ():
>> A = [1,2;3,4];
>> A

respuesta:

ans =
1 3
2 4

Seminario de Matlab - Pg. 10

Funciones Matlab para operar sobre matrices:


det(X), inv(X), rank(X), eig(X), expm(x), ...
Para operar sobre una matriz un vector, elemento a
elemento, se utiliza un punto delante del operador:
>> Datos = [1 2 3];
>> Datos.^2

respuesta:

ans =
1 4 9

>> Datos .* [4 5 6]

respuesta:

ans =
4 10 18

Algunas funciones operan elemento a elemento


automticamente, por ejemplo: exp, abs, sqrt, real, log.
Se pueden utilizar tambin operadores relacionales y
lgicos con matrices.
2.6. Creacin de funciones.
Las funciones son secuencias de sentencias que ejecutan
una tarea independiente.
function [argumentos salida] = nombre(argumentos entrada);
Una funcin se diferencia de un fichero script :
- bsicamente en su primera lnea.
- puede ser usada como parte de una expresin
- las variables generadas por una funcin son locales.
Seminario de Matlab - Pg. 11

Control de flujo: for, while, if, break, error.


3. GRFICOS.
Matlab suministra una importante coleccin de funciones
grficas debido a la facilidad de comprensin que aporta la
percepcin visual de datos.
3.1. Creacin de grficos bidimensionales.
La funcin plot genera grficos bidimensionales:
PLOT

Dibuja vectores matrices.

PLOT(X,Y) plots vector X versus vector Y. If X or


Y is a matrix, then the vector is plotted versus the rows or
columns of the matrix, whichever lines up.
PLOT(X1,Y1,X2,Y2) is another way of producing
multiple lines on the plot.
PLOT(X1,Y1,':',X2,Y2,'+') uses a dotted line for the
first curve and the point symbol + for the second curve. Other
line and point types are:
solid dashed -dotted
:
dashdot -.

point
.
plus
star
circle

red
r
+ green
* blue
o white

g
b
w

Seminario de Matlab - Pg. 12

x-mark

invisible i

PLOT(Y) plots the columns of Y versus their index.


PLOT(Y) is equivalent to PLOT(real(Y),imag(Y)) if Y is
complex.
In all other uses of PLOT, the imaginary part is ignored.
Una vez dibujado el grfico ginput permite obtener las
coordenadas del punto del grfico donde se hace clic con el
ratn:
>> [x, y] = ginput;
Otros comandos para grficos bi-dimensionales son:
loglog, semilogx, semilogy : escalan los ejes logartmicamente.
polar : coordenadas polares.
bar, stairs : grficos de barras y escalonados.
3.2. Adaptacin de grficos.
Incluye nombrar los ejes (xlabel, ylabel ), poner ttulo
(title ), escribir texto (gtext ), cambios de escala, etc. para
aportar legibilidad.
El comando subplot permite dividir la ventana de
grficos en varias partes.

Seminario de Matlab - Pg. 13

Otros comandos para adaptar grficos son hold y axis:


HOLD Hold the current graph on the screen.
Subsequent PLOT commands will add to the plot, using the
already established axis limits, and retaining the previously
plotted curves.
HOLD ON turns on holding, HOLD OFF turns it off, and
HOLD,by itself, toggles the HOLD state.
AXIS
Manual axis scaling on plots. Typing AXIS by itself
freezes the current axis scaling for subsequent plots. Typing
AXIS again resumes auto-scaling. AXIS returns a 4 element
row vector containing the [x_min, x_max, y_min, y_max]
used on the last plot.
AXIS(V) where V is a 4 element vector sets the axis
scaling to the prescribed limits.
3.3. Grficos tridimensionales.
Existen dos formas: contour y mesh .
Ejemplo: Dibujar z = x4 + (y/2)4.
x = [-1:.1:1];
y = [-2:.1:2];
[X,Y] = meshdom(x,y);
z = X.^4 + (Y/2).^4;
subplot(121), contour(z);subplot(122), mesh(z)
Seminario de Matlab - Pg. 14

40
30
20
10
20

Cada curva del dibujo del contorno representa los valores


de x e y que corresponden a un valor fijo de z.
El plano xy coincide con el plano de la hoja, y el eje z
estara representado hacia fuera.
Como los valores de z van creciendo, las curvas
encierran reas cada vez mayores.
El dibujo con mesh ayuda a ver la forma tridimensional
asignando alturas a los contornos.

Seminario de Matlab - Pg. 15

4. HERRAMIENTAS DE CONTROL.
4.1. Introduccin.
Matlab tiene una gran coleccin de funciones muy tiles
y directamente utilizables para la ingeniera de control y teora
de sistemas: aritmtica compleja, autovalores, inversin de
matrices, funciones de transferencia, etc.
Las herramientas de control (Control System Toolbox)
son una coleccin de algoritmos, expresados en ficheros ".m"
en su mayora, que implementan tcnicas de diseo, anlisis y
modelado de sistemas de control.
Los sistemas de control se pueden modelar como
funciones de transferencia en forma de espacio de estado,
permitiendo tcnicas tanto clsicas como modernas.
Se manejan sistemas en tiempo contnuo y discreto.
Son importantes las herramientas para conversin entre
modelos.
Existen funciones para calcular respuesta en tiempo,
respuestas de frecuencia y medidas del lugar de las races, as
como sus representaciones grficas.
Hay funciones que permiten la colocacin de polos,
control ptimo y estimacin.
Seminario de Matlab - Pg. 16

4.2. Modelos de sistemas.


Matlab trabaja solamente con una clase de objetos: una
matriz numrica rectangular con posibilidad de elementos
complejos.
Modelos de sistemas lineales invariantes en el tiempo
(LTI).
Formas de representar diferentes tipos de modelos de
sistemas:
- Espacio de estado.
- Funcin de transferencia.
- Ganancia, ceros y polos.
- Desarrollo en fracciones parciales.
- Tiempo contnuo.
- Tiempo discreto.
4.2.1. Espacio de estado.
Un sistema de ecuaciones diferenciales lineales
invariantes en el tiempo se puede representar siempre como un
conjunto de ecuaciones diferenciales de primer orden.

Seminario de Matlab - Pg. 17

En forma de matrices espacio de estados, las


ecuaciones se pueden escribir como:

x= A x + Bu
y = C x + Du
donde u : vector de n.u entradas de control.
x : vector de estado de n.s elementos.
y : vector de n.y salidas.
A, B, C, D: matrices tratadas como variables individuales.
Por ejemplo, sea un sistema de 2 orden que consiste en un par
de polos con frecuencia natural wn = 1.5 y factor de
amortiguacin = 0.2
>> wn = 1.5;
>> z = 0.2;
>> a = [ 0
1
-wn^2 -2*z*wn ];
>> b = [ 0
wn^2 ];
>> c =[ 1 0];
>> d = 0;
La representacin de espacio de estados es el modelo LTI
ms natural en Matlab. Para modelos MIMO es el nico
modelo conveniente con el que trabajar.

Seminario de Matlab - Pg. 18

4.2.2. Funcin de transferencia.

Una representacin equivalente del sistema de espacio de


estados es la descripcin de la funcin de transferencia
mediante transformadas de Laplace:
Y(s) = H(s) . U(s)
donde H(s) = C . (s.I - A) -1.B + D
En el caso general, H(s)
tridimensional para ser representada:

requiere

una

matriz

Dimensin de H(s) : n.y filas x n.n columnas x n.s+l capas


Como las variables en Matlab son de dos dimensiones,
representamos el sistema en sentido SIMO, es decir, una nica
entrada de u :
nn1 + N(2)snn2 +...+N(nn)
N(s)
N(1)s
H(s) =
=
q(s) q(1)snq1 + q(2)snq2 +...+q(nq)
donde

q : vector fila que contiene los coeficientes del


denominador en potencias descendentes de s .
N : matriz de coeficientes del numerador, con tantas
filas como salidas haya en el vector y .

Seminario de Matlab - Pg. 19

Por ejemplo, sea el sistema SIMO:

H(s) =

3s + 2

3
s + 2s + 5

3s3 + 5s2 + 2s +1

Para introducirlo en Matlab escribimos:


>> num = [0 0 3 2
1 0 2 5];
>> den = [3 5 2 1];

Seminario de Matlab - Pg. 20

4.2.3. Ceros - Polos - Ganancia.

Una funcin de transferencia se puede expresar en forma


factorizada de ceros, polos y ganancia:
H(s) = Z(s) = k (s + Z(1))(s + Z(2))(s + Z(n))
p(s)
(s + p(1))(s + p(2))(s + p(n))
En Matlab:
- las races de un polinomio se almacenan en vectores
columna.
- los coeficientes de un polinomio se almacenan en vectores
fila.
Por tanto, en forma factorizada:
p : vector columna que contiene los polos del denominador de
la funcin de transferencia.
Z : matriz cuyas columnas contienen los ceros del numerador.
Habr tantas como salidas del vector y .
k : vector columna que contiene las ganancias de la funcin de
transferencia de cada numerador (Para sistemas SISO, es
escalar).

Seminario de Matlab - Pg. 21

Por ejemplo, sea el sistema SIMO:


3(s +12)

4(s +1)(s + 2)

H(s) = Z(s) =
p(s) (s + 3)(s + 4)(s + 5)
En Matlab se introduce:
>> k = [3; 4];
>> z = [-12 -1; Inf -2];
>> p = [ -3; -4; -5];
4.2.4. Fracciones parciales.

Una funcin de transferencia se puede expresar tambin


en desarrollo de fracciones parciales forma residual, que
para un sistema SISO es:
H(s) = r(1) + r(2) ++ r(n) + k(s)
s p(n)
s p(1) s p(2)
donde p : vector columna que contiene los polos
r : vector columna con los residuos correspondientes a
los polos de p .
k : vector fila con las partes incorrectas de la funcin
de transferencia original.
La funcin residue convierte la funcin de transferencia
en (y desde) desarrollo en fracciones parciales.

Seminario de Matlab - Pg. 22

4.2.5. Conversiones entre modelos.

Hay un conjunto de funciones que permiten convertir


modelos LTI entre sus distintas representaciones:
[num,den] =
[z,p,k] =
[a,b,c,d] =
[z,p,k] =
[a,b,c,d] =
[num,den] =
[r,p,k] =
[num,den] =

ss2tf(a,b,c,d)
ss2zp(a,b,c,d)
tf2ss(num,den)
tf2zp(num,den)
zp2ss(z,p,k)
zp2tf(z,p,k)
residue(num,den) %tf2r
residue(r,p,k)
%r2tf

Seminario de Matlab - Pg. 23

4.3. Funciones para el anlisis de sistemas.

- Las funciones impulse y step calculan la respuesta


impulso y escaln de sistemas lineales en tiempo contnuo.
Dado el sistema:

x= A x + Bu
y = C x + Du

Y = impulse(A, B, C, D, u, t): devuelve la respuesta del


sistema a un impulso unitario aplicado a la entrada u-sima.
t : vector tiempo, espaciado regularmente, que especifica el eje
de tiempo sobre el que se halla la respuesta al impulso.
Y : matriz que devuelve la funcin, con tantas columnas como
salidas haya en y , y tantas filas como la longitud de t .
Con dos argumentos a la izquierda, devuelve tambin la
historia de estados en el tiempo.
Y = step(A, B, C, D, u, t): devuelve la respuesta del
sistema a un escaln unitario sobre la entrada u-sima.
Se pueden utilizar tambin con modelos polinmicos en
funcin de transferencia:
Y = impulse(num,den, t)
Y = step(num,den, t)
Seminario de Matlab - Pg. 24

Ejemplos:
Dibujar la respuesta escaln de 0 a 10 segundos de un
sistema de 2 orden con frecuencia natural wn=1 y factor de
amortiguacin =0.2
>>[a, b, c, d] = ord2(1,.2);
>>t=0:.1:10;
>>y=step(a,b,c,d,1,t);
>>plot(t,y), title(Respuesta escaln)

Seminario de Matlab - Pg. 25

- La funcin bode calcula la respuesta en frecuencia de


Bode de sistemas LTI en tiempo contnuo.
Los grficos "Bode" se utilizan para analizar las
propiedades del sistema como margen de ganancia, de fase,
ancho de banda, rechazo de perturbaciones y estabilidad.
[mag, fase] = bode(A,B, C, D, u, w) calcula la respuesta
en frecuencia del sistema a partir de la entrada u-sima.
w : vector que especifica las frecuencias (en radianes) en las
que se va a evaluar la respuesta de Bode.
mag, fase : matrices donde se devuelve la respuesta en
frecuencia, con y columnas, y longitud(t) filas:
G(s) = C (sI - A)-1B + D

mag(w) = abs(G(jw))
fase(w) = angle(G(jw))

[mag, fase] = bode(num, den, w) : con modelos descritos


en funcin de transferencia: G(s) = num(s) / den(s)
- La funcin series produce un sistema en forma de
espacio de estados con las salidas de un sistema conectadas a
las entradas del otro: u2 = y1
[A, B, C, D] = series(A1,B1,C1,D1,A2,B2,C2,D2)

Seminario de Matlab - Pg. 26

- La funcin parallel produce un sistema en espacio de


estados que consiste en la conexin en paralelo de dos
sistemas, es decir la suma de las salidas: y = y1 + y2
[A, B, C, D] = parallel(A1,B1,C1,D1,A2,B2,C2,D2)
- La funcin cloop genera una descripcin de un sistema
de lazo cerrado (con retroalimentacin unitaria) a partir de un
sistema de lazo abierto.
- La funcin feedback se utiliza para cerrar el bucle para
cualquier clase de retroalimentacin no unitaria.

Seminario de Matlab - Pg. 27

También podría gustarte