Você está na página 1de 10

Prctica 1

Introduccin a Matlab

Este documento es una pequea introduccin a MATLAB. Un documento mejor elaborado y ms extenso es Aprenda Matlab 7.0 como si estuviera en primero que puede obtenerse en http://www.tayuda.com

MATLAB viene de MATrix LABoratory'; se trata de un programa especializado en los clculos con matrices que puede llegar a ser muy til en cuanto se sabe cmo trabajar con l, pues nos permite, con poco esfuerzo, desde hacer los clculos rutinarios con matrices, a escribir programas para hacer tareas ms complejas de forma muy sencilla. Dado que los escalares son matrices 1 1 , MATLAB tambin trabaja con ellos sin ningn problema. Podemos hacer con matrices cualquier operacin: sumar, restar, multiplicar, potencias, simplemente hemos de tener en cuenta que las matrices tendrn que ser de las dimensiones adecuadas, aunque en caso de no ser as, el programa nos lo avisar con un mensaje de error.

1 Entorno grfico de Matlab

Figura 1.- Entorno de trabajo en MATLAB Una vez arrancado MATLAB, aparece una pantalla como la de la Figura 1. En la parte derecha tenemos la 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 la figura se puede ver la matriz M despus de haber sido creada). En la Command Window vemos >> eso significa que MATLAB est esperando que le introduzcamos un comando En la parte inferior izquierda tenemos el Command History. El 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 . Las sentencias ejecutadas anteriormente se pueden volver a ejecutar mediante un doble clic o por medio del men contextual que se abre al clicar sobre ellas con el botn derecho. Tambin se pueden copiar y volcar sobre la lnea de comandos, pero se ha de copiar toda la lnea, sin que se admita la copia de un fragmento de la sentencia.

En la parte superior izquierda tenemos una zona que alterna entre Workspace y Current Directory. El Workspace contiene informacin sobre todas las variables que se hayan definido en esta sesin y permite ver y modificar las matrices con las que se est trabajando (haciendo doble clic sobre ellas, Figura 2).

Figura 2.- Editor de matrices

Figura 3.- Vista del Current Directory

El Current Directory muestra los ficheros del directorio actual (Figura 3) y nos permite navegar por los directorios del ordenador de forma anloga a la del Explorador de Windows (modificando as el directorio actual). El concepto de 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 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. Los ficheros *.m mostrados en la ventana Current Directory se pueden abrir con el Editor/Debugger mediante un doble clic (Figura 4).

Figura 4.- Editor de ficheros *.m

2 Primeros contactos
Lo primero que podemos hacer es escribir lo siguiente en la Command Window:
>> 1+1 ans = 2

MATLAB ha resuelto la operacin que le hemos indicado y ha almacenado en la variable ans (answer) el resultado de la misma. Siempre que no se indica explcitamente la variable a la que se quiere asignar el resultado de una operacin, MATLAB asigna, de forma implcita, el resultado de la operacin a la variable ans. As, resulta ms recomendable escribir este otro comando:
>> x=1+1 x = 2

el resultado de la operacin se almacena en la variable x. Es importante indicar que MATLAB distingue entre maysculas y minsculas (case-sensitive). Si tras el comando anterior escribimos un ; entonces el resultado de la operacin no se muestra en la ventana de comandos:
>> x=1+1;

Podemos ordenar varios comandos en la misma lnea separndolos por ,.


>> y=3, x^y y = 3

ans = 8

Dos comandos muy importantes son el comando help y el comando helpwin. El comando lookfor sirve para buscar funciones relacionadas con una palabra:
>> lookfor correl

Nos muestra una lista de funciones relacionadas con la palabra correl y nos da una pequea descripcin de esas palabras. Otra instruccin interesante es:
>> format compact

Esta intruccin hace que las salidas por pantalla que genera el MATLAB sean ms compactas (elimina muchos saltos de lnea innecesarios).

3 Trabajando con el Workspace


Si en un determinado momento necesitamos salir de MATLAB, puede resultar interesante guardar el trabajo que llevamos hecho para poder recuperarlo cuando volvamos a utilizar el MATLAB. Las variables que vemos en el Workspace se encuentran almacenadas en memoria y al salir de MATLAB desaparecen. Para no perder el contenido de estas variables debemos teclear:
>> save

antes de abandonar el programa. Este comando crea en el directorio actual un fichero binario llamado matlab.mat en el que se encuentran almacenadas las variables del Workspace. La prxima vez que arranquemos el programa podemos recuperar estas variables tecleando:
>> load

Tal y como hemos utilizado el comando save, hemos guardado todas las variables del Workspace. En ocasiones puede interesarnos guardar variables de forma selectiva y en un fichero con un determinado nombre:
>> save fichero x y

Este comando crea un fichero llamado fichero.mat en el directorio actual con las variables x e y. Para recuperar estas variables debemos escribir:
>> load fichero

Cuando queremos eliminar alguna variable del Workspace debemos utilizar el comando clear en alguna de sus mltiples formas.
>> clear y

borra la variable y. Si no le damos el nombre de ninguna variable borra todas las variables.

4 Vectores y matrices
Veamos cmo podemos crear una matriz:
>> A=[1 2 3 4 5 6 7 8 9] A = 1 4 7 2 5 8 3 6 9

El comando anterior ha creado una matriz 3x3. Podramos haber creado la misma matriz con cualquiera de los dos siguientes comandos:
>> A=[1 2 3; 4 5 6; 7 8 9]; >> A=[1,2,3; 4,5,6; 7,8,9];

As, podemos utilizar de manera indistinta el espacio en blanco o la coma para separar columnas y el salto de lnea o el punto y coma para separar filas. Podemos tambin crear matrices a partir de otras matrices:
>> >> >> >> >> M = 1 1 3 3 1 1 3 3 2 2 4 4 2 2 4 4 a=[1 b=[2 c=[3 d=[4 M=[a 1; 1 1]; 2;2 2]; 3;3 3]; 4;4 4]; b; c d]

En MATLAB tenemos los siguientes operadores matriciales: + adicin o suma sustraccin o resta * multiplicacin ' traspuesta ^ potenciacin \ divisin-izquierda / divisin-derecha .* .producto elemento a elemento ./ y .\ divisin elemento a elemento .^ elevar a una potencia elemento a elemento Existen varias funciones para crear matrices: zeros, ones, rand, magic, etc.
>> m = ones(2,4) m = 1 1 1 1 1 1 1 1

Hay funciones para conocer la dimensin de una matriz:


>> [f c] = size(m) f = 2 c = 4

Esta funcin devuelve el nmero de filas y de columnas de la matriz


>> length(m) ans = 4

length devuelve el mayor valor de filas o columnas de la matriz. Es til cuando se trabaja con vectores fila o vectores columna. En este caso devuelve la dimensin del vector.
Con el operador : podemos definir vectores:
>> v = 1:5 v = 1 2 3 4 5

>> v = 1:2:5 v = 1 3 5

La sintaxis es valor inicial : incremento : valor lmite. Se puede omitir el incremento y en ese caso se entiende que el incremento es 1. El incremento puede, por supuesto, ser negativo. En MATLAB es sencillo borrar filas o columnas de una matriz:
>> m=rand(3) m =

0.9501 0.2311 0.6068 >> m(1,:)=[] m = 0.2311 0.6068 >> m(:,2)=[] m = 0.2311 0.6068

0.4860 0.8913 0.7621

0.4565 0.0185 0.8214

0.8913 0.7621

0.0185 0.8214

0.0185 0.8214

Ojo con la comparacin de igualdad en matrices:


>> a=[1 2; 3 4]; b=[1 2; 3 3]; >> a==b ans = 1 1 >> a~=b ans = 0 0 0 1 1 0

El operador ~= es el equivalente a != en C. En este caso lo hace elemento a elemento. Si queremos saber si dos matrices son iguales tenemos que utilizar isequal:
>> isequal(a,b) ans = 0

Tenemos funciones como any, all y find que chequean si las componentes de una matriz cumplen una determinada condicin:
>> a=magic(3) a = 8 1 3 5 4 9 >> any(a>7) ans = 1 1 >> all(a>2) ans = 1 0 >> find(a>4) ans = 1 5 6 7 8 6 7 2

any chequea por columnas si alguno de los elementos de la columna cumple una determinada condicin (en el ejemplo que sean mayores que 7). all chequea por columnas que todos los elementos de la columna cumplan la condicin. find devuelve los ndices de la componente de la matriz que cumplen la condicin. Los elementos de la matriz se numeran de arriba abajo por columnas.

5 Programacin en MATLAB
MATLAB considera como comentario todo lo que hay desde el carcter % hasta el final de lnea. Veamos los esquemas que admite MATLAB. La sentencia if:
if condicion1 bloque1 elseif condicion2 bloque2 else bloque3 end

La sentencia switch
switch expresin case exp1, bloque1 case exp2, bloque2 otherwise, bloque3 end

Cuando casa con una de la expresiones ejecuta su bloque y finaliza el switch. La sentencia for:
for i=1:n Bloque end for i=vector Bloque end

En vector estn almacenados los valores que tomar la variable i. La sentencia while:
while condicin Bloque end

En MATLAB se pueden crear ficheros de comandos (scripts) o funciones. Ambos se crean en ficheros *.m. Solo pueden ejecutarse aquellos ficheros *.m que se encuentran en el directorio actual o aquellos que se encuentran en el path de MATLAB. Para invocar un script o una funcin contenida en un fichero *.m solo hay que escribir el nombre del fichero (sin el .m) Si queremos hacer una funcin la primera lnea del fichero debe seguir la siguiente sintaxis:
function [valores retorno] = nombre(argumentos)

El fichero debe llamarse como la funcin. El siguiente ejemplo muestra el contenido del fichero prueba.m:
function [suma resta] = prueba(A,B) suma = A+B; resta = A-B;

Veamos cmo se utiliza:


>> a=[2 2;2 2];b=[3 3;3 3]; >> [s r] = prueba(a,b) s = 5 5 r = -1 -1 -1 -1 5 5

6 Entrada y salida de datos


Se pueden importar datos de ficheros de texto. Si tenemos el fichero datos.txt:
1 2 3 4 5 6

Y escribimos:
M=load(datos.txt);

Almacena en M los datos del fichero. Si los datos estn en un fichero csv (datos.csv):
1,2,3 4,5,6

los podemos almacenar utilizando la funcin:


M=csvread(datos.csv);

Hay otras funciones como textread que permiten cargar datos con otros formatos. Para escribir datos a fichero se tienen las funciones fopen, fclose y fprintf. Tambin existe fscanf que podemos utilizar para leer un fichero.
>> [f,t]=fopen('salida','w') f = 3 t = '' >> fprintf(f,'la matriz es de dimensin %dx%d\n',size(a)) ans = 30 >> fclose(f);

Fopen retorna el identificador de fichero y un texto en caso de error. Fprintf retorna el nmero de caracteres escrito. Despus de cerrar el fichero, si comprobamos su contenido veremos que tiene:
la matriz es de dimensin 3x3

Si queremos que la salida vaya a la ventana de comandos sin utilizar fichero podemos utilizar fprintf sin indicar el identificador de fichero:
>> fprintf('la matriz es de dimensin %dx%d\n',size(a)) la matriz es de dimensin 3x3

Otras funciones de entrada salida tiles son input y disp. Suelen utilizarse en scripts o funciones para interactuar con el usuario. As, podemos solicitar que se introduzca un valor para una variable a travs de la ventana de comandos utilizando la instruccin input:
>> x=input('dame el valor de la x = ') dame el valor de la x = 13 x = 13

La funcin disp permite visualizar el contenido de una variable sin que aparezca el nombre de la variable:
>> a=zeros(3); >> disp(a) 0 0 0 0 0 0 0 0 0

7 Grficos
MATLAB de varias funciones para crear grficos 2-D y 3-D. La funcin plot es la ms bsica de todas ellas. Veamos un ejemplo:
>> x=0:pi/10:2*pi; >> y=sin(x); >> plot(x,y)

El resultado puede verse en la figura 5.

Figura 5. Un ejemplo con plot