Você está na página 1de 10

Pr actico 0: Introducci on a Matlab

Secci on Biof sica Facultad de Ciencias, Universidad de la Rep ublica. 19 de marzo de 2013
En el transcurso del semestre, veremos algunas nociones b asicas de programaci on y manejo de datos en una plataforma inform atica, con el doble prop osito de poder estudiar en mayor detalle fen omenos biof sicos, y al mismo tiempo incorporar el manejo elemental de una plataforma inform atica u til, particularmente, para el an alisis de datos experimentales, entre otras aplicaciones. En este curso utilizaremos la plataforma Matlab (www.mathworks.com), o su versi on libre y gratuita GNU Octave (www.gnu.org/software/octave). Todos los ejercicios y scripts (rutinas) del curso podr an ser ejecutadas en cualquiera de las plataformas con (en principio) id enticos resultados.

1.

Matlab

Matlab es el nombre abreviado de MATrix LABoratory. Es un programa para realizar c alculos num ericos con vectores y matrices. Como caso particular puede tambi en trabajar con n umeros escalares tanto reales como complejos, con cadenas de caracteres y con otras estructuras de informaci on m as complejas. Una de las capacidades m as atractivas es la de realizar una amplia variedad de gr acos en dos y tres dimensiones. Matlab tiene tambi en un lenguaje de programaci on propio. Al arrancar el programa se abre una ventana similar a la mostrada en la Figura 1. Como esta conguraci on puede ser cambiada f acilmente por el usuario, es posible que en muchos casos concretos lo que aparezca sea muy diferente. En cualquier caso, una vista similar se puede conseguir mediante el comando View/Desktop Layout/Default. Al ingresar en el programa aparece una ventana que tiene al menos 2 (aunque en general 3) particiones. Por ejemplo, en la Figura 1 se observa una ventana interna central (resaltada en celeste) titulada Command Window, y dos m as peque nas a la izquierda, Workspace y Command History. En Command Window es donde se ejecutan los comandos de Matlab, a continuaci on del prompt (aviso) caracter stico (>>), que indica que el programa est a preparado para recibir instrucciones. En la pantalla mostrada en la Figura 1 se ha ejecutado el comando A=rand(5), 1

Figura 1: Captura de la pantalla de Matlab

mostr andose a continuaci on el resultado proporcionado por Matlab. El Workspace contiene informaci on sobre todas las variables que se hayan denido en esta sesi on y permite ver y modicar las matrices con las que se est e trabajando. Command History muestra los u ltimos comandos ejecutados en la Command Window. Estos comandos se pueden volver a ejecutar haciendo doble clic sobre ellos.

2.

Manejo elemental del Matlab

Concentr andonos en lo que se llama Command Window, la ventana en la que se ve una matriz de 5 5 y est a sobre la derecha; vemos en el extremo inferior los siguientes s mbolos >> | en donde la barra vertical intermitente es un cursor. Si seleccionamos esa ventana (con 1 clic de mouse) podemos escribir con ese cursor. Esa es una de las formas m as pr acticas para comunicarse con el Matlab. Escribamos por ejemplo >> 2 + 3 y apretemos la tecla <Enter> 2

Si todo sale como lo planeamos, deber a aparecer algo de tipo ans=5 que viene a querer decir respuesta=5. Hagamos otra prueba. Si escribimos x+2 <Enter> (de ahora en m as usamos esta notaci on para poner Enter u otros comandos) lo que sale es un error, que nos dice que el programa no sabe qu e es x. Podemos solucionar eso poniendo x=3 <Enter> y luego de vuelta x+2 <Enter>. Con ese simple procedimiento hemos creado una variable escalar que podemos manejar en programas y cambiar. A partir de ahora, cada vez que se mencione x se va a evaluar con un valor que puede cambiar, pero que por ahora es 3. De hecho el cambio de una variable merece un comentario. Por ejemplo, el poner x=x+2 es en sentido estricto una armaci on err onea, ya que x no puede ser a la vez un n umero y ese mismo n umero incrementado en 2. Pero es rutina en los lenguajes de programaci on usar el signo de igual como forma de decirle al programa a lo que llamabas x incrementalo en 2. La respuesta de Matlab (si apretan Enter) va a ser x=5.

2.1.

Operadores binarios

Las operaciones binarias de suma, resta, multiplicaci on, divisi on, potencia, se aplican 1 mediante s mbolos especiales : + - * / ^ As , se tiene que: >>x+2<Enter> ans=5 >>x-2<Enter> ans=1 >>x*2<Enter> ans=6 x^2<Enter> ans=9

2.2.

Matrices y vectores

Para hacer algo interesante en Matlab en general hay que usar matrices y vectores; pero no precisamos toda el algebra de matrices y vectores. Basta con saber que un vector es una
Los s mbolos de suma y resta son el cl asico m as y menos; en un teclado est andar espa nol, el circunejo de la potencia se accede mediante Shift y la tecla que est a a la derecha de la tecla P, mientras el asterisco de la multiplicaci on est a en el teclado num erico entre la barra de divisi on y el gui on de la resta, y en el teclado normal se accede mediante Shift m as la tecla a la derecha de la letra de la potencia.
1

lista de n umeros y una matriz es una tabla de n umeros. M as adelante en el curso vamos a tener que multiplicar matrices y vectores, pero por el momento podemos hacer dos o tres cosas fundamentales. Escriban: >>v=[1 3 8 12] <Enter> lo que hicieron es decirle al programa que v es un vector con los n umeros 1, 3, 8, y 12. Prueben esto ahora >>v Lo que acaban de hacer es trasponer un vector. Al vector acostado lo llamamos un vector la y al otro columna. Tambi en se pueden generar vectores que tengan elementos con valores corridos en un rango. Por ejemplo: >>rango=[1:10] genera un vector que contiene los enteros entre 1 y 10. 2.2.1. Actividad 1: vectores de rango

Qu e hacen las siguientes instrucciones?: >>rango1=[1:2:10] >>rango2=[10:-1:1] >>rango3=[1:.1:3] 2.2.2. Matrices

Hagamos ahora una matriz:

>>M=[1 2.3; 3.2 0.5] M = 1.000 2.300 3.200 0.500

Las matrices tambi en se pueden trasponer. Int entenlo. Para saber qu e elemento est a en una posici on en la matriz podemos poner M (1, 2) que nos da el elemento de la primera la y la segunda columna. Hay muchas formas de generar matrices. Una interesante es: >>A=rand(5) Lo que acabamos de hacer es generar una matriz de 5x5 llena de n umeros aleatorios entre 0 y 1. Una matriz muy conocida por ustedes, se genera f acilmente mediante: >>I=eye(7) Un cl asico de Matlab son las matrices m agicas: 4

>>G=magic(4) Qu e pasa si sumamos las las de la matriz? >>sum(G) Y las columnas? >>sum(G) 2.2.3. Operaciones con matrices y vectores

En Matlab las matrices y vectores son variables que tienen nombres. Se sugiere utilizar may usculas para matrices y min usculas para vectores y escalares. Par multiplicar un vector por una matriz, simplemente se utiliza el s mbolo de multiplicaci on : >>a=[3 1.5] <Enter> >>M*a <Enter> Pero las dimensiones deben coincidir: >>b=[2 3 0.4]<Enter> >>M*b<Enter> En este caso tenemos un mensaje de error indicando que las dimensiones no coinciden. Tanto las matrices como los vectores pueden multiplicarse, dividirse, elevarse, sumarse o restarse por escalares: >> >> >> >> >> 2*M<Enter> 1+M<Enter> M-4<Enter> M*x<Enter> M^3<Enter>

2.2.4.

Inversa y determinante

Miren qu e facil es hacer los ejercicios de Matem atica II. Para calcular la inversa de una matriz A, y su determinante: >> det(A) >> inv(A) >> A*inv(A)

2.2.5.

Actividad 2: Ejercicios de Matem atica II

Realizar los ejercicios 1, 2 y 4a del pr actico 2 de Matem atmica II (curso 2010) usando Matlab. El repartido se puede obtener haciendo click aqu , o entrando a: www.cmat.edu.uy - cursos - Otras Licenciaturas - Matem atica 2 - 2010 - Pr actico 2.

3.

Haciendo gr acos

Otra cosa importante es hacer un gr aco de resultados. Mostremos un ejemplo. Introduzcan >> x=0:0.1:10 si todo va bien obtienen un rango, que tiene una chorrera de n umeros del 0 al 10, incrementados de a 0,1. Escriban ahora >> y=sin(x+pi/2); si todo va bien el programa no imprimi o nada en pantalla. Eso es porque pusimos el punto y coma al nal (siempre que quieran omitir la salida escrita de un comando, simplemente ponen punto y coma ; al nal). Pero el vector y est a en el programa como pueden apreciar si miran el Workspace. Ahora vamos a gracar. Lo m as simple es poner >> plot(x,y) y si hicieron las cosas bien, les sale un gr aco que tiene un tramo de la funci on seno, corrida un a ngulo de 90 grados. Si ahora digitan >>xlabel(tiempo) <Enter> >>ylabel(lluvia)<Enter> Pronto! Ya tenemos nuestra primera gr aca2 .

3.1.

Actividad 3: Gracando

Gracar la funci on x2 en el intervalo [1, 1], la funci on x log(x) entre (0, 100] y la funci on x sin(x) en el intervalo [10, 10].

4.

Programaci on con Matlab

Matlab es una aplicaci on orientada a la programaci on cient ca, y por tanto es relativamente sencillo construir programas simples. Comenzaremos viendo c omo se usan las bifurcaciones y los bucles, elementos b asicos de cualquier programa.
Para indicarle a Matlab que lo que escribimos es texto y no el nombre de una variable, debemos poner las comillas simples antes y despu es del texto. Las comillas simples, o ap ostrofes, est an a la derecha de la tecla cero en teclados espa noles est andar, arriba de la letra P.
2

4.1.

Bucles (for loops)

Matlab dispone de instrucciones que nos permitir an escribir bucles y bifurcaciones. Los b ucles permiten repetir las mismas operaciones cambiando cada vez el valor de una variable de iteraci on. Todo bucle en Matlab comienza con alguna palabra como for o while y termina con la palabra end. A continuaci on veremos c omo hacer y emplear los bucles for. La siguiente construcci on ejecuta instrucciones cambiando el valor de i de 1 a n, variando de uno en uno. for i=1:n instrucciones end Si queremos, por ejemplo, escribir todos los n umeros del 1 al 5, podemos realizar lo siguiente: >>for i=1:5 i end Esto puede ser le do como: para i tomando los valores de 1 a 5, dar el valor de i. Cuando el programa interpreta el for, construye un vector, [1 2 3 4 5]. Luego, se repiten las instrucciones tantas veces como elementos tenga ese vector (en este caso 5), con la diferencia de que la variable de iteraci on (en este caso i) va cambiando de valor: primero toma el valor del primer elemento del vector (1), luego el segundo (2), luego el tercero (3). . . , etc etera. 4.1.1. Actividad 4: uso del bucle for

Escribir un bucle que permita calcular el factorial de alg un n umero, por ejemplo 5!

4.2.

Bifurcaciones (if)

Pasemos ahora a describir lo que denominamos bifurcaciones. Estas permiten realizar una u otra operaci on seg un se cumpla o no una condici on determinada. Para esto podremos usar el if de la siguiente manera: if (condici on ) instrucciones end Veamos ahora un ejemplo de c omo usarlo: >>a=2; >>b=3; >>c=0; >>if a<b 7

c=1; end En este ejemplo estamos asignando a a, b y c un valor, inicialmente. Luego con el if estamos preguntando, es a < b? Si la respuesta es verdadero, entonces pedimos que cambie el valor de c a 1. 4.2.1. if. Actividad 5: uso del if

Generar una matriz aleatoria grande y buscar cu antos n umeros son mayores a 0,5, usando

4.3.

Avanzado: Bucles y gr acas

Supongamos que queremos entender qu e efecto tiene el cambiar el t ermino que se suma a x en la funci on seno. Una forma ser a as : x=0:0.1:10; figure for i=0.1:0.1:1 y=sin(x+pi*i); hold on plot(x,y); hold off; end

5.

Scripts: archivos .m

Los archivos con extensi on .m son archivos de texto sin formato que constituyen el centro de la programaci on en Matlab. Estos se crean y modican con cualquier editor de textos. Lo mejor es utilizar el editor de textos propio de Matlab. Esto se logra sencillamente tipeando: >>edit <Enter> Se abre una ventana. Vuelvan a la ventana principal. Si todo va bien en alg un lado tienen la ventana Command history. Pueden copiar los comandos que sirven para hacer el gr aco anterior (secci on 4.3), meramente pint andolos y con el bot on derecho eligiendo copiar. Vuelven a la ventana que le abri o edit y pegan los comandos. Si todo va bien y dependiendo de qu e versi on de Matlab tengan se le van a pintar de azul cosas como for y end. Ahora guarden eso (en el men u File -> Save). Pongan de nombre miprimerscript.m . Ahora cierren la ventana de la gr aca, vuelvan a la ventana de comandos y tipeen: 8

>>clear y vamos a probar correr el nuevo script. Tipeando: >>miprimerscript (o lo que sea que hayan puesto de nombre) vean lo que pasa... Es sorprendentemente mucho lo que se puede hacer con b asicamente esas herramientas.

5.1.

Avanzado: Funciones

Existen dos tipos de archivos .m, los denominados scripts y las funciones. Los scripts contienen, simplemente, un conjunto de comandos que se ejecutan sucesivamente cuando se teclea el nombre del archivo en la linea de comandos de Matlab o se incluye dicho nombre en otro .m. Las funciones permiten denir funciones enteramente an alogas a las de Matlab, con su nombre, argumentos y valores de retorno. Los archivos .m que denen funciones permiten extender las posibilidades de Matlab (existen bibliotecas de archivos .m que se venden, toolkits, o se distribuyen gratituamente en internet). Las funciones denidas en archivos .m se caracterizan porque la primera l nea (que no sea un comentario) comienza por la palabra function: por ejemplo: function y = mean(x,dim) 5.1.1. Actividad 6: creando funciones

Escribir una funci on que me permita calcular el factorial de un n umero, cualquiera que este sea. Recuerda que en la Actividad 4 calculaste el valor de 5!.

6.

Entorno de trabajo

Como vimos los programas y scripts de Matlab se encuentran en archivos con extensi on .m. No todos los archivos .m se encuentran accesibles, para que se puedan ejecutar es necesario que este est e en el directiorio actual o que est e en uno de los directiorios indicados en el Path de Matlab. El directorio actual es el primer sitio en el que Matlab busca cuando se le pide que ejecute un archivo desde la l nea de comando. El Path es una lista ordenada de directorios en los que el programa busca los archivos o las funciones que ha de ejecutar. El directorio actual se puede cambiar desde la ventana principal, donde dice Current Folder. Al lado de una lista desplegable aparece un bot on con puntos suspensivos que al presionarlo permite elegir el directorio de trabajo. Otra alternativa es desde la l nea de comandos utilizar el cl asico comando cd (por change directory): >> cd Mis Documentos/Matlab

6.0.2.

Save y load

En muchos casos puede resultar interesante interrumpir el trabajo con Matlab y poderlo recuperar m as tarde en el mismo punto en el que se dej o. Al salir del programa todo el contenido de la memoria se borra autom aticamente. Para guardar el estado de una sesi on de trabajo existe el comando save. Si se teclea >>save nombreArchivo antes de abandonar el programa, se crea en el directorio actual un archivo llamado nombreArchivo.mat. Dicho estado puede recuperarse con el comando: >>load nombreArchivo. Vale tener para los archivos .mat las mismas consideraciones acerca de su accesibilidad que para los archivos .m.

7.

Actividad 7: uso de la Ayuda

Matlab dispone de un men u Help en la ventana principal de la aplicaci on donde se puede encontrar la informaci on que se desee. Adem as, de una forma muy inmediata, es posible tambi en recurrir a la ayuda desde la l nea de comandos: >>help comando y les va a dar una explicaci on. Busquen pues el signicado de las siguientes funciones: length, size, mean, sum, find, rand, randn.

10

Você também pode gostar