Sei sulla pagina 1di 24

Matemtica para las Ciencias Cognitivas

Mini Tutorial de MATLAB


MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un software matemtico que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programacin propio (lenguaje M). Est disponible para las plataformas Unix, Windows y Apple Mac OS X. Entre sus prestaciones bsicas se hallan: la manipulacin de matrices, la representacin de datos y funciones, la implementacin de algoritmos, la creacin de interfaces de usuario (GUI) y la comunicacin con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber, Simulink (plataforma de simulacin multidominio) y GUIDE (editor de interfaces de usuario - GUI). Adems, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con los paquetes de bloques (blocksets). (wikipedia)

Entorno
1. El Escritorio de Matlab (Matlab Desktop), que es la ventana o contenedor de mximo nivel en la que se pueden situar las dems componentes.

2. Las componentes individuales, orientadas a tareas concretas, entre las que se puede citar:

a. La ventana de comandos (Command Window),


sta es la ventana en la que se ejecutan interactivamente las instrucciones de MATLAB y en donde se muestran los resultados correspondientes, si es el caso. En cierta forma es la ventana ms importante y la nica que exista en las primeras versiones de la aplicacin.

b. La ventana histrica de comandos (Command History),


La ventana Command History ofrece acceso a las sentencias que se han ejecutado anteriormente en la Command Window. Estas sentencias estn tambin accesibles por medio de las teclas y como en las versiones anteriores, pero esta ventana facilita mucho el tener una visin ms general de lo hecho anteriormente y seleccionar lo que realmente se desea repetir.

c. El espacio de trabajo (Workspace),


El espacio de trabajo de MATLAB (Workspace) es el conjunto de variables y de funciones de usuario que en un determinado momento estn definidas en la memoria del programa o de la funcin que se est jecutando. Para obtener informacin sobre el Workspace desde la lnea de comandos se pueden utilizar los comandos who y whos.

e. El directorio actual (Current Folder),


El concepto de directorio activo o directorio actual es muy importante en MATLAB. Los programas de MATLAB se encuentran en ficheros con la extensin *.m. Estos ficheros se ejecutan tecleando su nombre en la lnea de comandos (sin la extensin), seguido de los argumentos entre parntesis, si se trata de funciones. No todos los ficheros *.m que se encuentren en el disco duro o en otras unidades lgicas montadas en una red local son accesibles sin ms. Para que un fichero *.m se pueda ejecutar es necesario que se cumpla una de las dos condiciones siguientes: 1. Que est en el directorio actual. MATLAB mantiene en todo momento un nico directorio con esta condicin. Este directorio es el primer sitio en el que MATLAB busca cuando desde la lnea de comandos se le pide que ejecute un fichero. 2. Que est en uno de los directorios indicados en el Path de MATLAB. El Path es una lista ordenada de directorios en los que el programa busca los ficheros o las funciones que ha de ejecutar. Muchos de los directorios del Path son propios de MATLAB, pero los usuarios tambin pueden aadir sus propios directorios, normalmente al principio o al final de la lista. En un prximo apartado se ver cmo se controla el Path. El comando pwd (print working directory) indica el directorio. Para cambiar de directorio por lnea de comando se utiliza el comando cd Ejemplo

>> cd C:\Matlab\CursoNICC

Para cambiar los componentes que se ven en el Escritorio de MATLAB Ir a Desktop>Layout

Comandos Bsicos
Matlab es una fuente informtica en constante crecimiento por lo cual uno nunca va a saber cmo funciona cada comando o funcin. Para eso utilizaremos algunos comandos muy tiles

Ayuda Product Help. Se abre la ventana de la Figura 9, en la que se puede buscar ayuda general sobre MATLAB o sobre la funcin o el concepto que se desee. La portada de esta ayuda tiene dos captulos principales: Functions, que contiene informacin de referencia sobre las funciones por orden alfabtico o por categoras; Handle Graphics, que permite acceder a informacin concreta sobre las distintas propiedades de los objetos grficos.

Si queremos conseguir ayuda por lnea de comando tenemos que saber el nombre de la funcin para la cual queremos ayuda y tipear: >> help funcin Por ejemplo: >>help help MATLAB EXPLICA LA FUNCIN HELP! Guardar y Abrir

Para guardar una determinada sesin de trabajo utilizamos el comando save, >> save Dicha sesin se puede recuperar la prxima vez que abran MATLAB con el comando load. >>load Si queremos salvar solo una variable del espacio de trabajo hacemos lo siguiente. >> save nombrequelequeremosponer nombredelavariable Y si la queremos abrir >> load nombrequelepusimos Por ms opciones utilicen el comando help.

Calculadora
-Matemticamente tenemos chance? Per que abro MATLAB MATLAB sirve como calculadora. Print Si escribo un nmero en la lnea de comando y doy enter. Me aparece como respuesta el nmero que introduje. >> 2 ans = 2 >> Si no quiero que se imprima un resultado de lo que introduzco en lnea de comando utilizo punto y coma. Esto va a ser prctico para cuando generemos sucesiones de clculos y no queremos ver el resultado paso a paso. Pero sin embargo se habr creado en el espacio de trabajo una variable llamada ans=3. >>3; >> Multiplicar Si quiero multiplicar dos nmeros uso el smbolo * (asterisco) >> 2*6 ans = 12

>> Dividir Si quiero dividir uso la barra inclinada / >>12/2.1 ans = 5.7143 >> Para sumar y restar uso el y el +. De la misma forma. Para elevar a la potencia de utilizamos la casita ^ (Shift+6 en algunas computadoras) >>2^2 ans = 4 >> Para separar operaciones utilizo los parntesis curvos () >>2+2*(4+2) ans = 14 >> Existen otras operaciones bsicas que podemos utilizar en MATLAB entre las cuales estn las siguientes. Para ms informacin utilizar el comando help. log (logaritmo) cos (coseno) sin(seno) tan(tangente) exp(e^) log10 (logaritmo base 10) sqrt (raz cuadrada)

Variables (variable simple, vectores, matrices)


Variable simple De los clsicos smbolos de operacin que se usan en una calculadora del que no hablamos es del el =. Esto es porque en Matlbab para obtener un resultado utilizamos el Enter y el = lo utilizamos para asignar valores a variables. Por ejemplo, si queremos tener una variable x con un determinado valor le asignamos un valor de la siguiente manera. >>x=6 x= 6 >>

o si evitamos el print la variable se crea en el espacio de trabajo (Workspace) pero no se imprime, nos aparece el prompt. >>x=6; >> Hemos creado una variable de nombre x con valor asignado 6. Esta variable la podemos utilizar para realizar operaciones sencillas de estilo calculadora. >>x^2 ans = 36 >> Si en el lado derecho de la ecuacin, utilizamos una variable que no hemos definido, el programa nos dar error. SIEMPRE LEER EL MENSAJE DE ERROR!! ES CLAVE! >> x=6; y=2; >> t=a+x+y ??? Undefined function or variable 'a'. Como ven se pueden hacer ms de una asignacin por lnea y el mensaje de error es muy acertado, no hemos definido la variable a. Para BORRAR las variables generadas y comenzar de cero utilizamos el comando clear. >>clear x y Vectores En MATLAB podemos asignar variables de ms dimensiones. Por ejemplo podemos crear vectores. >> a=[ 1; 2; 3] a=

1 2 3

Se utlizan los parntesis rectos para asignar el vector. Utilizamos punto y coma entre cada tem del vector separando en diferentes filas. Para hacer un vector fila separamos sin punto y coma. >> b=[ 4 4 4] b= 4 4 4

Vectores filas se pueden transformar en vectores columnas y viceversa transponiendo el vector. >>d=b d= 4 4 4 Con estas variables vectoriales podemos operar. Por ejemplo, tomemos la variable anterior d. Podemos multiplicar a b por un escalar. >>f=b*2 b= 8 8 8 Tambin podemos sumar o restar dos vectores >>a=[1 1 1]; b=[2 2 2]; c=a+b c= 3 3 3 Si los vectores son del mismo tamao podemos mutiplicarlos o dividirlos tem a tem; tenemos que utilizar un punto antes del operador. >>a=[2 2]; b= [3 3]; >>c=a.*b c= 6 6

Para dividir sustituimos el * por una / Podemos concatenar dos vectores para crear un vector ms grande. >>a=[1 1 1]; b=[2 2 2]; c=[a b] c= 1 1 1 2 2 2

Otra forma de crear vectores es crear vector con elementos igualmente espaciados. Por ejemplo creemos un vector de 10 elementos con valores entre 0 y 1 con separaciones de 0.1. >> v=[0:0.1:1] v= Columns 1 through 6 0 0.1000 0.2000 0.3000 0.4000 0.5000 Columns 7 through 11 0.6000 0.7000 0.8000 0.9000 1.0000 Si queremos crear una sucesin de 10 nmeros enteros alcanza con poner >>v=[1:10]; Todos los vectores que hemos generado tienen un determinado tamao. Esta dado por el nmero de filas y columnas (en el caso de vectores o matrices de 2 dimensiones) que ocupan en el caso de un vector, el mismo tiene o 1 columna y varias filas o 1 fila y varias columnas. Podemos acceder a los elementos individuales de los vectores que generamos. Por ejemplo creamos un vector de 0 a 50 con intervalos de 0.5. >>v=[0:0.5:50]; Tiene 100 columnas. Pero queremos saber qu valor del vector est asignado para la columna 50. >> v(50) ans = 24.5000 Conociendo como referir a elementos de un vector podemos reasignar cualquiera de sus valores.

>>v(50)=100; >>v(50) ans = 100 Volveremos ms adelante a cmo hacer tratamientos ms prcticos del vector. Pero antes de finalizar. Si queremos conocer el largo del vector podemos usar la funcin length. >>largo=length(v) largo= 100 Si queremos conocer el mximo usamos la funcin max(v). Si queremos conocer el mnimo utilizamos min(v) y si queremos sumar todos los elementos utilizamos sum(v) Prueben utilizar estas funciones as como utilizamos length(v). Cualquier duda utilicen el help! Matrices Podemos construir matrices de varias filas y columnas de una forma muy sencilla. >>C=[3 3 3; 2 2 2; 1 1 1] C= 3 2 1 3 2 1 3 2 1

Tambin podemos crear una matriz a partir de vectores. Por ejemplo tomemos tres vectores fila. >>a=[1 1 1]; b=[2 2 2]; c=[3 3 3]; >>D=[a;b;c] D= 1 2 1 2 1 2

Podemos hacer lo mismo con vectores columna. Podemos multiplicar matrices por escalares, sumar dividir restar o mutiplicar matrices tem por tem mientras tengan el mismo tamao. Se utilizan los mismos operadores que para vectores. >> A = [5 1; 0 9]; >> B = [2 2; 1 1]; >> A + B ans = 7 1 1 10

>> A B ans = 3 1 3 8

Para multiplicar, dividir o incluso elevar cada tem al cuadrado debemos usar un punto antes del operador. Igual que para los vectores. Veremos el caso de la multiplicacin tem a tem contrastando con la multiplicacin matricial. La multiplicacin tem a tem se da solo para dos matrices de igual tamao y multiplica los elementos en la misma posicin de una matriz y la otra. >> A = [2 1; 1 2]; B = [3 4; 5 6]; >> A.*B ans = 6 4 5 12 Ahora si sacamos el . Tenemos la multiplicacin de matrices. >> A*B ans = 11 14 13 16

Algunas otras operaciones pueden hacerse con matrices. Algunas de las cuales utilizaremos ms adelante en el curso. Por ejemplo el clculo de determinantes. Esto re realiza con la funcin det(). Otro ejemplo es hallar la matriz inversa con la funcin inv(). Si tienen curiosidad utilicen el help de MATLAB.

Al igual que con vectores es muy fcil hacer referencia a los elementos individuales de una matriz. Por ejemplo generemos la siguiente matriz C. >>C=[3 3 3; 2 2 2; 1 1 1] C= 3 2 1 3 2 1 3 2 1

La matriz C tiene 3 filas y 3 columnas. Podemos acceder a un elemento de C dando informacin de en que fila y que columna se encuentra. Ssupongamos que queremos saber cul es el valor del tem en la primer fila y tercer columna de C. >> C(1,3) ans = 3 Los valores entre parntesis luego del nombre de la variable refieren a el nmero de fila y de columna de dicha variable. Por ejemplo si quisiramos acceder a los primeros dos valores de la tercer columna haramos lo siguiente. >> C(1:2,3) ans = 3 2 Eso quiere decir que queremos acceder a los tems de la fina 1 a la 2 de la tercer columna. Y si quisiramos referirnos a la fila completa podemos hacerlo con : . >> C(:,3) ans =

3 2 1 Sabiendo como referir a los elementos de una matriz podemos asignarles nuevos valores. Cambiaremos un par de elementos al valor -1. C(1:2,3)=-1 C= 3 2 1 3 -1 2 -1 1 1

Esto nos permite tambin una nueva forma de generar matrices, asignando valores a una nueva variable. Construyamos una matriz de 3 x 3 con todos los tems igual a 5. >> B(1:3,1:3)=5 B= 5 5 5 5 5 5 5 5 5

Grficos
Como vimos anteriormente podemos generar vectores de nmeros uniformemente espaciados utilizando la sintaxis [desde:intervalo:hasta]. Retomemos con un ejemplo: Queremos desde 0 hasta 10 en intervalos de 0.1 >> x=[0:0.1:10]; As de simple. Podemos aplicarle una funcin a esta variable x recin generada. Por ejemplo digamos que queremos graficar la funcin coseno con el dominio x.

>> y=cos(x); Listo, con eso generamos una variable y que cumple tener valores correspondientes al coseno de los valores de la variable x. Ahora, grafiqumosla utilizando la funcin plot. En la misma introduciremos aquello que queremos en el eje x, luego aquello que queremos en el eje y. >>plot(x,y) Obtendremos la siguiente grfica.

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

10

La misma corresponde al coseno de entre 0 y 10. Ahora que pasa si al definir la variable x utilizamos un espaciado mayor. Hagamos lo siguiente, redefinamos x esta vez con intervalos de 1. >>x=[0:1:10]; Ahora intentemos graficar. >>plot(x,y); ??? Error using ==> plot Vectors must be the same lengths.

Esto nos da un error. Dice los vectores deben ser del mismo tamao. Esto es porque cambiamos la variable x, que antes tena otro tamao. Pero no cambiamos la variable y, la cual sigue teniendo el tamao anterior. (recuerden que y fue definida en funcin de x). Redefinamos y. Luego grafiquemos >> y=cos(x); >>plot(x,y); Obtenemos la siguiente grfica.

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

10

Obtenemos una representacin grfica de la funcin coseno, pero con un intervalo muy amplio. Esto hace que tengamos una grfica poco representativa de la funcin. Un comando muy prctico a la hora de graficar es el comando hold. Por ejemplo, con esta grfica abierta generemos otra variable u que represente el seno. >>u=sin(x); Antes de graficarla utilicemos el comando hold on. Para mantener la grfica anterior. >>hold on >>plot(x,u); Obtenemos una figura con ambas grficas, el seno y el coseno entre 0 y 10.

Pero vayamos un paso ms all y digamosle a MATLAB con que color queremos graficar. Para ello agregamos luego de las variables a graficar un cdigo para el color rojo r. La siguiente tabla muestra los cdigos de colores.

>>hold on >>plot(x,u, r) Obtenemos la siguiente figura.

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

10

Ahora, como recuerdan las grficas no se ven suaves porque en ambos casos tenemos solamente 10 puntos. Si queremos ver esos puntos podemos volver a graficar indicndole a MATLAB que queremos ver solo los puntos o o puntos y lneas -o.

>> close >> plot(x,y, '-o') >> hold on >> plot(x,u, '-or') Con el comando close cerramos la figura abierta. Eso nos da la siguiente figura.

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

10

Otros comandos para explorar con el help son los comandos grid , axis, subplot, plot3.

Bucles (For)
El for es una instruccin de MATLAB que le indica la ejecucin de una seria sentancias encapsulados en el for una seguidilla de veces. La sintaxis para un bucle de for es la siguiente:

for ndice=comienzo: incremento: final; sentencias

end

Por ejemplo, hagamos un bucle for donde la instruccin es la impresin del ndice >> for indice=1:1:10 indice end indice = 1 indice = 2 Como vern en la lnea de comando MATLAB imprimi el valor del ndice para cada vuelta del for. Ahora construyamos un vector cuyos valores sean funcin del ndice. >> for indice=1:10; vector(indice)=indice*10; end Como utilizamos el ; los valores no se imprimieron el lnea de comando pero podemos ahora imprimir vector y observar el resultado del for. >> vector vector = 10 20 30 40 50 60 70 80 90 100

Condicionales (If)
El If es una instruccin de MATLAB en la cual se plantea una condicin. Si la condicin se cumple se ejecutan determinadas sentencias. Si la condicin no se cumple no se ejecutan o se ejecutan otras distintas. La sintaxis del If en MATLAB es la siguiente

if condicin sentencia end Este es el caso ms simple en el cual solo se ejecuta la sentencia si se cumple la condicin. Tambin existe el caso siguiente. if condicin sentencia else sentencia 2 end En este caso dependiendo de si se cumple o no la condicin se ejecutan sentencias diferentes. Para ver cmo funciona el if asignemos un valor randmico entre 0 y 1 a una variable valor. Para eso utilicemos la funcin rand. >>valor=rand Ahora redondiemos el valor a 0 o 1 dependiendo si es mayor o menor a 0.5. Para eso escribamos el siguiente if. >> if valor>0.5 valor=1 else valor=0 end Dependiendo del valor randmico que haban obtenido previamente ahora tendrn como resultado que valor =0 o que valor=1. Pasemos a otro ejemplo en el cual anidamos un for con un if. Generemos un vector de valores entre 0 y 10 e iteremos con un for entre los elementos de dicho vector. Si el valor es mayor a 5, cambimoslo por 10. Si es menor o igual, cambimoslo por 0.

>>vector=[0:10] >> for i=1:length(vector); if vector(i)>5 vector(i)=10 else vector(i)=0 end end El resultado de escribir y ejecutar dichas tareas muestra paso por paso del for lo que fue haciendo MATLAB. Otras instrucciones importantes de MATLAB para investigar con el help son while y switch.

Scripts
Con MATLAB no tenemos porque escribir todo en lnea de comando. Podemos generar una serie de instrucciones para MATLAB guardada en un archivo .m y podemos correr esa rutina utilizando MATLAB. Para generar un script hay un par de cosas que necesitamos saber. Para empezar tenemos que abrir en el editor un archivo nuevo. Para hace hacemos File>new>Blank M-file

Se abrir una nueva ventana con el siguiente aspecto.

Este es el editor o debugger donde podemos generar nuestros scripts. A la izquierda vern un nmero 1. Esto indica el nmero de lnea. MATLAB numerar las lneas del script y en los errores nos dar informacin sobre que parte del script esta fallando. El editor no tiene prompt >> como tiene la lnea de comando. Esto no importa, MATLAB lee cada lnea como si fuera ingresada en rden en lnea de comando. Ahora en algunos casos podemos querer escribir cosas en el script pero que MATLAB no las considere como parte del programa. Para eso utilizamos los comentarios.

Toda lnea en el script iniciada con el smbolo % no ser tomada en cuenta por MATLAB a la hora de correr el programa. Para probarlo escriban la siguiente rutina:

%Esto es una rutina de MATLAB vector=[0:10] %Aqui definimos un vector for i=1:length(vector); %comenzamos el for entre 1 y el numero de elementos if vector(i)>5 %esta es la condicin %vector(i)=1000 esto no se va a correr vector(i)=10; else vector(i)=0; end %fin del if end % fin del for vector %imprimir el vector %aqui termina la rutina de MATLAB

Salven este script. Y pueden correrlo utilizando el smbolo de play dentro del editor, utilizando la tecla F5 o escribiendo el lnea de comando el nombre del script.

10 Ejercicios

1) Generar un vector v de valores 2, 4, 6, 8 y 10. 2) Generar una matriz A con 4 filas y 5 columnas. Cada fila tiene los valores 2, 4, 6, 8. 3) Cambiar las dos ltimas columnas de la matriz A por 1s. 4) Generar un vector u de valores entre 0 y 10 con ms de mil elementos. 5) Graficar una funcin lineal y=3*x + 1 utilizando el vector u. 6) Graficar una funcin cuadrtica j=x^2 7) Grficar ambas funciones en diferentes colores. 8) Utilizando lnea de comando conocer cules son las variables en el espacio de trabajo y cules son sus propiedades. 9) Crear un vector de 20 elementos randmicos entre 0 y 1 utilizando un for. 10) Generar un script que redonde hacia 0 o hacia 1 los valores de un vector randmico de 20 elementos.

Para tener un detalle ms completo de los comandos y las operaciones posibles entren a
http://es.scribd.com/doc/4848649/Tutorial-MATLAB

o utilicen los manuales

en PDF.

Potrebbero piacerti anche