Está en la página 1de 8

1

Experiencia 1

Introduccin al MATLAB para


sistemas de control
1.1.

1.2.

Objetivos.Familiarizar al estudiante con el uso del programa desarrollado MATLABSimulink.


Incentivar el uso de un computador como herramienta de desarrollo, anlisis y
diseo.

Fundamento terico.-

MATLAB es un sofisticado lenguaje de programacin desarrollado en C, basado


en matrices para clculos cientficos y de ingeniera. El nombre es una abreviatura
para MATrix LABoratory.
MATLAB trabaja esencialmente con matrices numricas rectangulares (que
pueden tener elementos complejos), lo cual implica el uso de vectores fila o
columna. Por esta razn este paquete tiene una proyeccin hacia el control
moderno (descrito a variables de estado) y es til para ilustrar las relaciones
existentes entre las tcnicas clsicas y modernas de anlisis. Para ello, contiene
un conjunto de rutinas de propsito general que permiten modelar, analizar y
simular cualquier tipo de sistema dinmico. En la actualidad, MATLAB se aplica en
muchos campos de la ingeniera pues muchas libreras (toolboxes) de propsito
especfico han sido desarrolladas, as por ejemplo: Control System, Comunication
Toolbox, Filter Design Toolbox, etc.
MATLAB es un sistema abierto ya que el usuario puede editar sus propias
funciones especficas, las mismas que son guardadas a manera de macros o
programas denominados archivos.m porque son almacenados en las bibliotecas
de MATLAB mediante archivos ASCII con la extensin .m

1.2.1.

Comandos generales.-

Algunos se indican a continuacin:


help
demo
who
what

ayuda
demostraciones
muestra variables en memoria
lista archivos especficos de MATLAB

2
clear
computer
^C
exit, quit

limpia variables y funciones


tipo de computadora
caracteres y operadores especiales
sale de MATLAB

Conforme se avance se especificaran algunas de las funciones mas importantes.

1.2.2.

Manipulacin de matrices.-

Existen diferentes formas de introducir una matriz, entre ellas, la siguiente:

A 1 2 3;4 5 6;7 8 9

Se crea una matriz 3x3 y la asigna a la variable A. Los elementos en una fila de
una matriz pueden separarse tanto por comas como por espacios en blanco.
Las operaciones que se pueden realizar con matrices son:
+
*

\
/

adicin
sustraccin
multiplicacin
^
potenciacin
transpuesta
divisin izquierda. A\B es equivalente a inv(A)*B
divisin derecha. A/B es equivalente a A*inv(B)

Estas operaciones para matrices se aplican tambin a escalares (matrices 1x1). Si


los tamaos de las matrices son incompatibles para la operacin matricial se
obtiene un mensaje de error.
Se puede adems efectuar operaciones con arreglos (elemento por elemento).
Para ello, las operaciones *,^,\, y /, deben ser precedidas por un punto. Por
ejemplo, tanto

1
1

2
2

3 *1 2 3 1
3^ 2 1 4 9

Para la construccin y manipulacin de matrices existen diferentes funciones que


estn disponibles en MATLAB. Entre ellas:
eye
ones
eig
expm
det
min
rand
tril
roots
triu

matriz identidad
zeros
matriz de unos
inv
valores propios
poly
matriz exponencial
rank
determinante
size
minimo elemento
max
matriz generada aleatoriamente trace
triangular inferior de una matriz
races del polinomio caracterstico
parte triangular superior de una matriz

matriz de ceros
inversa
polinomio caracteristico
rango
tamano
mximo elemento
traza

Para generar vectores y submatrices se usa la notacin de dos puntos. Su uso


adecuado hace que las instrucciones sean ms simples y legibles. Por ejemplo,
observe el resultado de las siguientes expresiones:

1:3
1:0.5:3

genera un vector fila 1 2 3


genera un vector de 1 a 3 con pasos de 0.5, es decir

1.5 2

2.5 3

A(:,2)
es la segunda columna de A
A(1:2,3) son las dos primeras filas de A
A(2,3)
elemento de la fila 2 y columna 3 de la matriz A
Los arreglos que pueden hacerse son diversos. El estudiante experimentara en el
laboratorio el resultado de ellos.

1.2.3.Manejo de grficos.MATLAB puede generar grficos planos y grficos de malla de superficies


tridimensionales.
Para el manejo de grficos planos, la instruccin plot crea grficos en el plano XY;
si x e y son vectores de la misma longitud, la instruccin plot(x,y) accede a la
pantalla grafica y realiza un grafico plano de los elementos de x versus los
elementos de y. Por ejemplo, se puede dibujar la grafica de la funcin y sen 2 ( x) ,
sobre el intervalo [-4,4] con las siguientes instrucciones:
t 4 : 0.01 : 4 ;

y sin(t ).^ 2 ;

plot (t , y )

Las instrucciones pueden escribirse en forma horizontal separadas por el


operador ; como se ha hecho en este caso o se las puede ejecutar una a una.
En el ejemplo anterior, cabe notar que t es una particin del dominio con paso
0.01 mientras que y es un vector (la funcin sin es vectorial) debido a que toma los
valores del seno para todos los valores de dicha particin. De ah que se utiliza el
operador con arreglos (.^).
Diferentes funciones pueden dibujarse sobre una misma figura; para ello basta
definir cada funcin con nombre diferente y ejecutar la instruccin; Ej.:
Plot(t,y1,t,y2)
Otra forma es mantenerlo abierta la pantalla de grficos, para ello se ejecuta la
instruccin hola como se muestra en el siguiente set de instrucciones:
Plot(t,y1);

hold;

plot(t,y2)

Para salir de la pantalla de grficos se ejecuta hold nuevamente.


Puede ponerse titulo, comentarios en los ejes o en cualquier otra parte con los
siguientes comandos que tienen una cadena como argumento:
Title
Xlabel
Ylabel
Gtext
Text

(titulo del grafico)


(comentario en el eje x)
(comentario en el eje y)
texto posicionado interactivamente
texto posicionado mediante coordenadas

4
Axis
Grid
Subplot

permite escalar los ejes manualmente


cuadriculado en el grafico
permite dividir la pantalla para visualizar varios grficos a la vez

Para el caso de los grficos en tres dimensiones, Matlab emplea las funciones
mesh meshgrid. La instruccin mesh(z) crea un grafico tridimensional en
perspectiva de la matriz z. La superficie de la malla esta definida por las
coordenadas z de los puntos sobre un cuadriculado rectangular en el plano XY.
Para dibujar la grafica de una funcin z=f(x,y) sobre un rectngulo, se define en
primer lugar los vectores xx e yy. Un ejemplo de este tipo de grficos puede verse
al ejecutar las siguientes instrucciones:

X , Y meshgrid (8 : 0.5 : 8);


R sqrt ( X .2 Y .2 ) eps;
Z sin( R ). / R;
mesh( X , Y , Z )

1.2.4.

Control de flujo.-

Bsicamente, las instrucciones para el control de flujo de MATLAB operan como


en la mayor parte de los lenguajes usuales.
while. La forma general de un bucle while es:
while

expresin
Instrucciones

end
El lazo while repite un grupo de instrucciones un numero indeterminado de veces
mientras la expresin sea verdadera.
if. La forma general de un bucle if es:
if
elseif

expresin
Instrucciones
expresin
Instrucciones

else
Instrucciones
end
Las instrucciones se ejecutaran solo si la expresin es verdadera. Si solo se tiene
dos ramificaciones se puede omitir, desde luego, la porcin correspondiente a
elseif.
En ambos lazos, la expresin es generalmente el resultado de utilizar los
operadores relacionales:
<

menor que

<=

menor o igual que

5
>
==
&
/
~

mayor que
igual a
and
or
negacin lgica

>=
mayor o igual que
~=
diferente de
&&
and breve:
//
or breve
xor(A,B)
or exclusivo

for. La forma general de un bucle for es:


for

variable = inicio:incrementos:fin
Instrucciones

end
El lazo for repite un grupo de instrucciones un numero predeterminado de veces
definido por la particin de la variable. Por ejemplo, sea la particin i = 1 : 0.1 : 5.
Significa que las instrucciones se ejecutaran mientras la variable i vari entre 1 y 5
en pasos de 0.1.
switch case. La forma general de esta estructura es:
switch n
case 1
Instrucciones
case 2
Instrucciones

Otherwise
Instrucciones
end
La estructura switch case ejecuta las instrucciones correspondientes al caso
indicado por el valor asignado a switch (n), si el valor no corresponde a los
especificados para cada caso, se ejecuta el grupo d instrucciones indicado en
otherwise.
break. Esta instruccin permite salir de un lazo while o for.

1.2.5.

Script.-

Matlab permite colocar rdenes en un simple archivo de texto y, a continuacin,


decirle a matlab que lo abra y evale las rdenes exactamente como si hubiesen
sido escritas desde la lnea de orden de Matlab. Estos archivos se llaman script o
archivos-m, y deben finalizar con la extensin m.
Para crear un archivo .m en Matlab, se debe dirigir a FILE, NEW, y finalmente MFILE
Lectura y escritura interactiva de variables:
disp(informacin a mostrar);
permite imprimir en pantalla un mensaje de texto o el valor de una matriz

6
var=input(mensaje de ingreso de datos);
imprime un mensaje en la lnea de comandos de MATLAB y recupera como valor
de retorno un valor numrico o el resultado de una expresin tecleada por el
usuario.

1.2.6.

Funciones y subfunciones.-

Las funciones permiten definir funciones enteramente anlogas a las de


MATLAB, con su nombre, sus argumentos y sus valores de retorno. Los
ficheros *.m que definen funciones permiten extender las posibilidades de
MATLAB; de hecho existen bibliotecas de ficheros *.m que se venden (toolkits) o
se distribuyen gratuitamente (a travs de Internet). Las funciones definidas en
ficheros *.m se caracterizan porque la primera lnea (que no sea un comentario)
comienza por la palabra function, seguida por los valores de retorno (entre
corchetes [ ] y separados por comas, si hay mas de uno), el signo igual (=) y el
nombre de la funcin, seguido de los argumentos (entre parntesis y separados
por comas).
function [lista de valores de retorno] = name (lista de argumentos)
nota: name es el nombre de la funcin dentro del archivo name.m
la lista de valores de retorno y/o argumentos pueden no ir.
Ejemplo: Realizar una funcin que halle el valor mximo y el valor mnimo de un
vector de cualquier longitud.

1.3.

Trabajo preparatorio.-

Leer la informacin proporcionada en la hoja gua. Se preguntara al inicio de la


prctica.

1.4.

Parte Experimental.-

1.4.1. Lea el fundamento terico de esta practica de laboratorio


11 12

1.4.2. Considere la siguiente matriz: A 21 22


31 32

13

23
33

Indique el resultado de las siguientes operaciones y que significa cada una


de ellas (utilice Matlab):
a. A(:,1)

b. A(2,:)

f. A(:,:)

g. A(2:4)=[ ]

k. zeros(size(A))

c. A(:,2:3)

d. A(:,1:2:3)

h. ones(3,3)

l. Rand(size(A))

e. B=[A,[ones(1,2);eye(2)]]

i. eye(3)

j. diag(A)

m. Magic(length(A))

1.4.3. Grafique las siguientes funciones sobre un mismo grafico.

y (t )

1 sen 2 (t )
,
t

z (t )

t 1
t2 4

con

5 t 5

Los vectores deberan tener al menos 200 puntos para su graficacin.

1.4.4. Utilizando el comando subplot, grafique las funciones del numeral anterior.
1.4.5. Grafique la orbita de Mercurio (x vs. Y) alrededor de la tierra. La orbita de
Mercurio esta dada por las siguientes ecuaciones:
x(t ) 93. cos(t ) 36. cos( 4.15t ) ,

y (t ) 93.sen(t ) 36.sen( 4.15t )

Genere tanto x(t) e y(t) como funciones de Matlab y la variable independiente t desde
0 hasta 44 / 3 en intervalos de / 360 . Incluya etiquetas en los ejes, titulo del
grafico, etc.

1.4.6. Defina z como el numero de elementos de un vector fila A; luego, genere


dicho vector aleatoriamente e indique el resultado de las siguientes
estructuras:
a)

x = A(1,1);
for i=1:(z-1)
b=A(1,i+1);
if x<=b
resp=x;
else
resp=b;
x=resp;
end
end
resp

b)

suma = 0;
for i=1:z
c=suma+A(1,i);
suma = c;
resp = suma/z;
end
resp

1.4.7. Genere un archivo .m en el que grafique la orbita de mercurio, bsese en el


literal anterior; la variacin del vector independiente t, debe ser definida
durante la ejecucin del script.

1.5.

Informe.-

8
Realice un programa que cuente con dos opciones, la primera que permita introducir
un vector de n elementos (debe preguntarse al usuario), y realice la media aritmtica
y la desviacin media de los elementos. Adems debe crearse otro vector con los
mismos elementos pero ordenados. La segunda opcin debe realizar una bsqueda
en el vector anterior (el usuario debe ingresar el valor a buscar), pero primero debe
verificarse si ya se introdujeron los elementos. En caso que exista uno o ms
elementos iguales, debe tenerse como resultado el ndice del mismo. Si no existe el
valor a buscar debe verse un mensaje que advierta de este suceso.

1.6.

Bibliografa.-

The Math Works Inc., Manuales de MATLAB.