Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. INTRODUCCIN: MATLAB es un lenguaje de muy alto nivel para cmputo tcnico. El cual
integra en un mismo ambiente muy fcil de usar clculos, visualizacin y programacin.
Clculos matemticos, Desarrollo de algoritmos, Modelado y Simulacin, Anlisis y Graficacin de datos, Desarrollo de interfaces grficas, etc. MATLAB proviene del acrnimo MATrix LABoratory (Laboratorio de Matrices) y que originalmente fue diseado para realizar operaciones con matrices. Actualmente es un poderoso sistema de clculo matemtico y programacin
que integra un sistema de graficacin. Se puede decir que el lenguaje de
programacin de MATLAB es ms poderoso que FORTRAN, C, VisualBasic, etc. La fama que MATLAB ha obtenido, es porque paralelamente a su desarrollo
tambin se han programado en su lenguaje colecciones de herramientas para
realizar actividades dentro de los campos de la ingeniera, las ciencias, las
Laboratorio de Control
1.1 MATLAB.
A MATLAB lo podemos utilizar como si fuese una calculadora para hacer clculos simples como: suma, resta, multiplicacin, divisin, potenciacin, etc.
>>3+7 ans= 10 >>8-2 ans= 6 >>10*2 ans= 20 >>144/12 ans= 12 >>4^2 ans= 16
Figura 1.2 Operaciones bsicas en MATLAB. En la Tabla 1.1 se muestra los operadores bsicos y su prioridad. Hay que
recordar que como todo lenguaje de programacin los operadores bsicos tiene
un nivel de prioridad. as sucesivamente. Esto es que operacin se realiza primero y
calculadora y sabemos que una calculadora tambin nos permite obtener funciones evaluadas como
En la Tabla 1.2
seno,
coseno, un
tangente,
obtenemos
Laboratorio de Control
Notacin en MATLAB sin(x) cos(x) tan(x) log(x) log10(x) exp(x) sqrt(x) abs(x)
ex
Descripcin
precisin de las operaciones de punto flotante ( infinito Not a Number (no un numero)
2 - 52
En particular eps se utiliza por lo general para evitar la divisin por cero (0) y NaN es un resultado que MATLAB regresa cuando el resultado de la operacin indicada no es numrico. Ya que acabamos de mencionar que existen variables definidas en MATLAB, nosotros tambin podemos crear nuestras variables y otorgarles un valor; como todo lenguaje de programacin existe una forma de definir las variables, lo novedoso que tiene MATLAB en esto del manejo de variables es que no se necesita definir el tipo de valor que es, con MATLAB nos olvidamos de los tipos de variables como integer, float, long, double, etc. Solamente lo que necesita MATLAB es el valor de la variable y listo. Se nos permite en MATLAB otorgarle 63 caracteres de tamao al nombre de las variables, si el nombre de la variable excede los 63 caracteres slo se conservaran los primeros 63.
Laboratorio de Control
el
resultado es mostrado en la pantalla. Lo cual no es el caso al momento de escribir la variable y con el valor de 5, y esto es porque al finalizar la sentencia agregamos el punto y coma ( ;). No crea que se pierde el valor por que no lo escribe en la pantalla, lo que hace es guardarlo para despus usarlo. Ahora si usted escribe solo y aparecer el valor asignado a la variable.
>>x = 3 x= 3 >>y = 5; >>z = 3+2*i z= 3+2i >>a = 'Panama' a= Panama
Los con
nombres
de
las
variables
no
son
iguales
si
se
escriben
distinta a la variable A. Para ver que variables que hemos definido solo basta con escribir el comando who.
>>who; axyz >>
En MATLAB tambin podemos variar el nmero de dgitos con los que se escribe una cantidad numrica. Esto se puede hacer utilizando alguno de los formatos que se describen en la Tabla 1.4 en donde se utiliza pi () como ejemplo.
Laboratorio de Control 4
Formato de MATLAB format format short format short e format long format long e format + format hex format bank format rat
Descripcin
igual que format short 5 dgitos 5 dgitos ms exponente 16 dgitos
1.1.1 Guardado de una sesin y sus variables. Hasta este momento slo se ha mencionado que una variable se define
cuando se es usada por primera vez. Estas variables solo estn disponibles mientras no se cierre MATLAB o por el contrario que sean borradas. En ocasiones deseamos seguir utilizando las variables ya definidas en otra sesin
que tengamos con MATLAB y por lo tanto es conveniente de tener donde guardarlas. Con la instruccin diary es posible esto, ya que graba una copia de la sesin de MATLAB en un archivo de texto. En este archivo de texto se
guarda el historial, o sea todo lo que hemos escrito en el rea de trabajo de
MATLAB y los resultados obtenidos. La sintaxis para usarlo es diary('nombre_del_archivo.txt') y se cierra con diary('off'). Todo lo contenido dentro de estas 2 instrucciones se grabara en el archivo de texto.
Tambin podemos utilizar los comandos save y load, para guardar y cargas
respectivamente nuestra sesin. Al ejecutar la instruccin save se ejecutar la accin equivalente a la del men File>>Save Workspace As... 1.1.2 Instrucciones de entrada y salida. Como ya vimos con los ejemplos anteriores la salida o resultado que se obtiene en el espacio de trabajo lo podemos seguir utilizando y tambin se le puede acompaar de algun texto en ocasiones solo escribir un texto. Para esto utilizamos el comando fprintf, su sintaxis es: fprintf('El texto k se desee.').
Para escribir un texto con una variable, es necesario dar el formato de la variable con el cual queremos que sea escrito el valor de la variable.Los formatos son:
Laboratorio de Control
f punto flotante. g punto fijo o punto flotante. i entero. c carcter. s cadena. e notacin exponencial. d doble precisin.
de datos no genera al final un salto de lnea, este solo se genera con \n.
imaginaria.
>>real(z) ans= 3 >>imag(z) ans= 2
1.2.2 Funciones.
En MATLAB existen 2 tipos de funciones, unas son las predefinidas por y reciben el nombre de funciones elementales de las cuales se muestran algunas en la Tabla1.2 y las otras son las que el usuario define. Es posible definir expresiones dentro de MATLAB, como la ecuacin para calcular el
MATLAB
Laboratorio de Control
Figura 1.7 Calculo del rea de un crculo. Tambin y para no dejar pasar por alto MATLAB nos permite trabajar con
variables simblicas, las cuales son aquellas variables a las que no se les ha asignado un valor numrico. Y para esto MATLAB hace uso de su bloque de matemticas simblicas (Symbolic Math Toolbox). Una variable simblica se define con el comando sym('nombre_de_la_variable').
>>a=sym('a'); >>x=sym('x');
Si requerimos de trabajar con funciones como por ejemplo f= 3x3+ax+b , esta se puede crear definiendo primero las variables a, b y x como simblicas para poder definir luego la funcin f.
>>a=sym('a'); >>b=sym('b'); >>x=sym('x'); >>f=sym('3*x^3+a*x+b') f= 3*x^3+a*x+b
Figura 1.9 Definiendo funciones con variables simblicas. De que nos serviran las funciones, si solo pudiramos utilizarlas de forma simblica.
integrar y derivar las funciones y esto se hace con los comandos diff(x) para derivar e int(x) para integrar. Con el comado pretty(x) hacemos que se escriba la ecuacin como si fuera escrita por un editor de ecuaciones.
Bueno pues tambin MATLAB nos permite
Otro ejemplo sera con la forma compleja z=x+i*y , donde x, y son variables reales, entonces primero declaramos x, y como variables simblicas y luego definimos el numero complejo z=x+i*y .Ya con x, y, z definidas podemos
realizar funciones con nmeros complejos, como por ejemplo obtener su
conjugado y multiplicarlo por si mismo y desarrollar el producto indicado, todo esto lo observamos en la Figura 1.10.
Laboratorio de Control
Otras funciones simples y de gran importancia al elaborar algn proyecto, son las funciones para el redondeo. El comando round redondea al entero ms cercano, ceil redondea al prximo entero mayor y floor redondea hacia el prximo entero menor.
De la matriz A se dice que tiene n renglones o filas y m columnas, as que entonces es una matriz n )m . A n )m se le llama dimensin de la matriz.
Laboratorio de Control
Como se puede ver en la Figura 1.11, los elementos de un mismo rengln son
separados por un espacio, aunque tambin estos pueden ir separados por una coma (,) y los renglones se separan con un punto y coma (;). Se dice tambin que cada elemento de la matriz tiene una posicin ij, que corresponde a su posicin
en tiene la i-sima fila y en al j-sima columna. Ejemplificando esto, el
elemento
la posicin (2,3), mientras que el elemento 10 la posicin (3,5). El comando para proporcionar el elemento del rengln o fila i y
65 tiene
la columna j es en este caso M(i,j) (M porque es el nombre de nuestra matriz). Otros comando muy tiles para el manejo de matrices se exponen en la Tabla 1.5.
Tabla 1.5 Comandos de matrices.
Comando A(a:b,c:d)
A(a:p:b,c:q:d)
hasta la d.
Descripcin
Submatriz formada por las filas de la a hasta b y por las columnas de la c Submatriz formada por las filas de la a hasta b de p en p filas y por las
A(i,:)
A(:,j)
Vector formado por los elementos de la i-sima fila Vector formado por los elementos de la j-sima columna
1.3.2 Operaciones bsicas con matrices. Recordemos que las operaciones bsicas con matrices son la suma, resta, multiplicacin y divisin. Consideremos las siguientes matrices:
Para
que
slo se
si son de la misma dimensin. Como solo A y B son de las mismas dimensiones solo
Laboratorio de Control
como los de B y C, C y B.
>>A*C ans= 48 17 -14 32 36 -24 -20 33 -18 >>C*A ans= -16 22 -68 82 >>B*C ans = -10 -39 46 -13 -12 5 >>C*B ans = -51 36 -99 26
24 4 -2
Como vemos MATLAB respeta las propiedades de las operaciones con matrices. En la Tabla 1.6 se describen algunas otras operaciones que se pueden realizar con matrices.
Laboratorio de Control
10
Comando diag(A) inv(A) A' transpose(A) det(A) rank(A) trace(A) norm(A) A^c A.^c A/B A\B A*c A.*c [L,U]=lu(A) eig(A) [V,E]=eig(A)
De la segunda forma de
Descripcin
Vector formado por los elementos de la diagonal de la A.
Inversa de A.
Transpuesta de Transpuesta de Determinante de
A. A. A.
Rango de A.
Suma de los elementos de la diagonal de A.
operacin:
Ax = Ix
obtener los vectores propios, se obtiene 2
matrices la matriz
V en donde sus columnas son los vectores propios y los elementos de la diagonal de E son los valores propios.
jorda(A)
Se
utiliza
la
forma
de
Jordan
para
diagonalizar
una
matriz.
Con
esta
A=M!-1 JM
donde la matriz J es una matriz diagonal con los valores propios y M es
una matriz formada por los vectores propios.
1.3.3 Vectores. Un vector es una matriz de un solo rengln o de una sola columna, y
cada uno recibe su nombre como vector rengln (x) o vector columna (y). Los
Laboratorio de Control
11
requerimos de solo presentar algunos elementos o algn elemento del o los vectores podemos hacerlo mediante el uso de los comandos que se utilizan
Resultado
an+c ] anc]
[a1+b1 a2+b2 an+bn] [a1b1 a2b2 anbn] [a1 /b1 a2/b2 an/bn] [b1/a1 b2/a2 bn /an] [a1
C
Los productos cruz y punto de dos vectores estn definidos por un escalar y un vector. MATLAB los calcula con los comandos dot(a,b) y cross(a,b) respectivamente. 1.3.4 Funciones y Sistemas de ecuaciones simultneas.
Es posible calcular funciones de matrices y vectores. Las funciones definidas en MATLAB y aquellas que define el usuario se pueden
usar tanto con matrices como con vectores. Si A fuese una matriz y v un vector nos da:
Laboratorio de Control
12
igualmente espaciados entre a y b. Otra forma de generar un vector similar es por medio de la siguiente instruccin: x= a : incremento : b donde a es el valor inicial y los siguientes valores son a+incremento, a+2*incremento, ... hasta llegar a b que es el valor final. Para generar un espaciamiento en logartmico usamos x=logspace(a,b,n). Las ecuaciones simultaneas se pueden resolver con:
>>[x,y]=solve('a*x+b*y=c','d*x+e*y=f','x,y') x= -(-e*c+f*b)/(a*e-b*d) y= (a*f-c*d)/(a*e-b*d) >>syms a b c d e f x y; >>A=[a b;d e]; >>v=[c;f]; >>x=linsolve(A,v) x= [-(-e*c+f*b)/(a*e-b*d)] [(a*f-c*d)/(a*e-b*d)]
matricial y por lo tanto son susceptibles de ser manejados por MATLAB. 2a-2b =5 -2a+6b-2c =0 -2b+6c-2d=0 -2c+8d=0 Se escribe en la forma matricial Ax=b, donde para resolver este sistema obtenemos primero la inversa de A y la multiplicamos por b.
Laboratorio de Control
13
Se utiliza para resolver este sistema utilizamos la instruccin tambin podemos utilizar la instruccin x=A\b.
x=inv(A)*b, o
1.4 Grficas.
Las caractersticas y opciones para graficado con MATLAB son muy
variadas y van desde obtener grficas en 2 o 3 dimensiones hasta la posibilidad de cambiar las propiedades de ellas. 1.4.1 Grficas en 2 dimensiones (2D). El comando bsico para graficar es plot(x,y), en donde x es un vector de puntos y y es un vector de datos de la misma dimensin que x. Existen varias opciones para dar ms informacin de una grfica, algunas de estas se muestran en la Tabla 1.8 y la Tabla 1.9.
Laboratorio de Control
14
Comando
xlabel('x');
ylabel('y');
Nombre del eje x. Nombre del eje y. Titulo de la grfica.
Leyenda de informacin.
Resultado
title('titulo') legend('sen(x)', ...); semilogx(x,y) grid on/off text(x,y,'texto') axis([xi xf yi yf]) hold on/off polar(,r) bar(x,y)
stairs(x,y)
logspace(x1,x2,n).
Coloca texto a una grfica. Donde x, y son las coordenadas donde empieza a escribirse el texto Asigna los valores mximos y mnimos de las coordenadas x,y de la grfica Si se desea obtener bajo una misma grfica. Grfica polar. Donde
y r son las coordenadas polares. y es un vector de valores en las coordenadas x. y es un vector de valores en las coordenadas
a la de barra, pero solo proporciona 10
x.
Similar
Grfica de puntos.
Grfica de brjula. Muestra la magnitud y el ngulo de nms. complejos
Laboratorio de Control
15
Cdigo
y m c r g b w k
Color
amarillo magenta azul obscuro rojo verde azul claro blanco negro
Marcador
. o x + * s d v
Descripcin
punto circulo X ms asterisco cuadro diamante Triangulo (hacia abajo)
Laboratorio de Control
16
Cdigo
: -. --
Estilo de lnea
Lnea slida Puntos Lnea y punto Lnea discontinua
^ > < p h
1.4.2 Grficas en 3 dimensiones (3D). Las grficas en 3D aparte de ser ms vistosas en algunos casos otorgan
ms informacin al usuario y MATLAB cuenta con varios comandos para graficar
El
comando
plot3(x,y,z),
utiliza
las
Laboratorio de Control
17
Comando
[X,Y]=meshgrid(xi,yi:inc:xf,yf) mesh(x,y,z) hidden off
surf(x,y,z)
Resultado
Define una rejilla que genera las matrices X,Y. Grfica de malla. Se necesita primero declarar un meshgrid. Hace transparente a la grfica de tipo mesh.
Grfica de superficie. Similar a la de malla, solo que la
de z.
shading flat shading interp surfl(x,y,z) contour3(x,y,z) pcolor(x,y) waterfall(x,y,z) quiver(x,y,dx,dy) clabel(cs)
grfica en 2D.
Grfica similar a la contorno pero en pseudocolor.
Grfica de marea.
Otorga lineas direccionales a la grfica de contorno. aade valores a la altura de una grfica de contorno.
1.4.3 Subgrficas. Las subgrficas (subplots), son aquellas figuras divididas varias gaficas ms pequeas, generadas independientemente una de otra. El comando de MATLAB para realizar subgrficas es subplot(m,n,p).
en
la
Laboratorio de Control
18
Lo que realmente hace este comando es dividir la figura en m) n subgrficas arregladas en forma de matriz de m renglones y n columnas; La variable p
hace que se active cada subgrfica. Entonces si tenemos 4 subgrficas en un arreglo 2x2 p obtendr los valores 1,2,3 y 4, segn la posicin que ocupe cada
subgrfica.
nivel, muy poderoso con un ambiente computacional interactivo. La gran ventaja que
tiene programar con MATLAB ya la habamos visto y es que no se requiere declarar las variable ni sus tipos al principio del programa ya que estas se definen automticamente como se van usando.
A los que podemos llamar cdigos fuente en MATLAB se les conoce como
*.m, y existen 2
Laboratorio de Control
19
tipos de M-files y son los de tipo funcin y los de tipo script. Para ver el contenido de una M-file utilizamos el comando type nombre_del_M-file. Las Funciones pueden aceptar datos o argumentos de entrada y regresan datos de salida. las variables internas de una funcin son variables locales. Los Scripts no aceptan datos de entrada o producen argumentos de salida, usan datos de variables que se han usado previamente en la sesin con MATLAB.
Los M-files ms importantes y ms usados son las funciones, dentro de su
Comentarios (se inician con el smbolo %). Instruccin para leer los datos de entrada. Instrucciones a ejecutar. Instrucciones para escribir los datos de salida. Instruccin end, para terminar la funcin.
Para crear y/o editar un M-file, se puede utilizar cualquier editor de textos; Lo nico que se debe de hacer es guardar el archivo como archivo de texto con la terminacin *.m. Por otro lado podemos utilizar el editor de M-files que se encuentra en el men File>>New>>M-File. 1.5.1 Instrucciones bsicas de programacin. A continuacin describiremos las instrucciones bsicas que se requieren dentro de un programa de MATLAB, las cuales nos permitiran crear programas simples pero ilustrativos para el potencial que MATLAB nos ofrece.
Una caracterstica vital de un lenguaje de programacin es la habilidad de poder cambiar la secuencia de ejecucin de instrucciones, dependiendo de que se
satisfagan condiciones que pueden estar ligadas a valores de variables generados durante la ejecucin del programa. En MATLAB las declaciones ifend, if-else-end, elseif, switch-case, for, while.
Tabla 1.11 Estructuras de control.
Forma General
if condicin declaraciones end
Ejemplo
%Archivo uso_IF-END %Pide un dato de entrada y escribe como %salida si aprueba o no. calif = input ('Dame la calificacion: ') if calif >= 7.5 fprintf('Felicidades!! Aprovaste.') end if calif < 7.5 fprintf('Estas Reprobado.') end
La
Descripcin
condicin del if puede
contener
lgicos; S la se cumple se
operadores
condicin
Laboratorio de Control
20
la condicin de
if
end; Pero si no se cumple la condicin de if, se ejecutan las declaraciones de a hasta n que contiene else. Esta es la tercera forma de utilizar el if. Con esta forma se pueden checar un mayor nmero de
condiciones.
if condicin 1 declaraciones A elseif condicin 2 declaraciones B elseif condicin 3 declaraciones C ... elseif condicin n declaraciones N end
%Archivo uso_IF-ELSEIF-END %Pide un dato de entrada y escribe como %salida si aprueba o no. calif = input ('Dame la calificacion: ') if calif >= 7.5 fprintf('Felicidades!! Aprovaste.') elseif calif < 7.5 fprintf('Estas Reprobado.') end
cumple
ejecuta
las
switch expresin %Archivo uso_SWITCH-CASE %Pide un dato de entrada y escribe como case valor 1 declaracin a1 %salida si aprueba o no. calif = input ('Dame la calificacion: ') ... declaracin aN switch calif case {7.5,8,8.5,9,9.5,10} case valor 2 fprintf('Felicidades!, Aprobo.') declaracin b1 case {0,0.5,1,2,3,4,4.5,5} ... fprintf('Usted Reprobo.') declaracin bN otherwise ... fprintf('No fue sificiente.') otherwise end declaracin c1 ... declaracin cN end for variable = %Archivo uso_FOR1 %Suma los 10 primeros enteros. expresin declaracin suma = 0; 1 for i = 1:10 suma = suma + i; declaracion 2 end ... fprintf('La suma es %g.', suma)
declaracin n declaracin a2
es
utilizada
para saber si una expresin es igual a algn valor determinado. No se pueden checar condiciones como a<5 o b<=3; Sin embargo, esta estructura se puede aplicar en donde se requiere ejecutar distintas declaraciones dependiendo del valor de una expresion. Cada valor puede ser
nmerico o una cadena de
texto. Como se puede observar cada case puede tener 1 o ms valores. Esta estructura se
para formar ciclos o
utiliza
lazos
end
----------------------------------------%Archivo uso_FOR2 %Suma solo los valores pares entre 1 y 10 suma = 0; for i = 1:2:10 suma = suma + i; end fprintf('La suma es %g', suma)
de instrucciones que se tiene que repetir un nmero determinado de veces. Si se cumple variable = expresin, entonces se ejecutan las declaraciones contenidas en el ciclo y despus continuar con la declaracin que esta despus del end. Si no se cumple , no se ejecutan las declaraciones solo se ejecuta la que esta despus del end. Es posible que las declaraciones dentro del
Laboratorio de Control
21
%Archivo uso_WHILE %Calcula el volumen de 5 esferas %, el radio aumenta 1 a 1. r = 0; while r < 5 r = r+ 1; vol = (4/3)*pi*r^3;
fprintf('Radio = %g Volumen = %g \n',
... declaracin N
Esta estructura nos sirve para ejecutar indeterminado nmero de veces un conjunto de instrucciones. Su funcionamiento es: si la
condicin
end
r, vol) end
ejecuta la primera instruccin despues del end; Pero si la condicon se hasta la N. en este punto se vuelve a checar que se cumpla o no la condicn, si
esta se cumple se siguen ejecutando las declaraciones
no
se cumple
se
Como ya vimos en las estructuras podemos encontrar el uso de operadores lgicos y de relacin, los cuales MATLAB soporta, y son los siguientes:
Tabla 1.12 Operadores de Relacin.
Descripcin
Mayor que Menor que Mayor o igual que Menor o igual que Igual a No igual a, distinto de
Ejemplo
(a>b) & (x<5) Si
Descripcin
se cumplen las 2 condiciones resultado es 1, pero si solo el se 2
cualquiera
y si no
de
se
las el
cumple
condiciones
resultado
simultneamente
ninguna, el resultado es 0.
NOT
~(a>b)
Laboratorio de Control
22
XOR
es 1.
1.5.2 Funciones (Funtion M-FILES). Como ya se describio anteriormente los archivos ms usados y creados
en MATLAB son los archivos del tipo funcin, estos archivos son subpregramas
Donde x es el parmetro o argumento de entrada, y es el parmetro de salida y operacin es el nombre de la funcin. Para demostar la forma bsica de una
Laboratorio de Control
23