Anda di halaman 1dari 26

MANUAL BSICO DE MATLAB 6.

El programa MATLAB
MATLAB es el nombre abreviado de MATrix LABoratory. MATLAB es un programa para realizar clculos numricos con vectores y matrices. Una de las capacidades ms atractivas es la de realizar una amplia variedad de grficos en dos y tres dimensiones. MATLAB es un gran programa de clculo tcnico y cientfico, que tiene su propio lenguaje de programacin. Dicho lenguaje, es una herramienta de alto nivel para desarrollar aplicaciones tcnicas fciles de utilizar. MATLAB se arranca como cualquier otra aplicacin de Windows, clicando dos veces en el icono correspondiente en el escritorio o por medio del men Inicio. Al arrancar MATLAB se abre una ventana del tipo de la indicada en la Figura 1. sta es la vista que se obtiene eligiendo la opcin Desktop Layout/Default, en el men View.

Figura1. Ventana inicial de MATLAB6.5 La parte ms importante de la ventana inicial es la Command Windows, que aparece en la parte derecha (recuadrada en azul en la Figura 2). En esta sub-ventana es donde se ejecutan los comandos de MATLAB, a continuacin del prompt caracterstico (>>), que indica que el programa est preparado para recibir instrucciones.

Figura 2. Sub-ventanas de comandos. En la parte izquierda de la pantalla aparecen dos ventanas tambin muy tiles: en la parte superior aparece la ventana (recuadrada en rojo en la Figura 2) Current Directory, que se puede alternar con Workspace clicando en la pestaa correspondiente. La ventana Current Directory muestra los ficheros del directorio activo o actual. El Workspace contiene informacin sobre todas las variables que se hayan definido en esta sesin y permite ver y modificar las matrices y vectores con los que se est trabajando. En la parte inferior aparece la ventana (recuadrada en verde en la Figura 2) Command History que muestra los ultimos comandos ejecutados en la Command Window. Estos comandos se pueden volver a ejecutar haciendo doble clic sobre ellos.

Para salir de MATLAB basta teclear los comandos quit o exit, o elegir Exit MATLAB en el men File o utilizar cualquiera de los medios de terminar una aplicacin en Windows. (Figura 3).

Figura 3: Salir de MATLAB

La instrucciones se pueden proporcionar directamente en la venta de comando (Command Window) o a travs de ficheros-M (o M-files). Estos ficheros tiene la extensin *.m y contiene conjuntos de comandos o definicin de funciones. La importancia de estos ficheros-M es que al teclear su nombre en la lnea de comandos y pulsar Intro, se ejecutan uno tras otro todos los comandos contenidos en dicho fichero. El poder guardar las instrucciones en un fichero permite ahorrar mucho tiempo y trabajo. Aunque los ficheros *.m se pueden crear con cualquier editor de texto tal como Bloc de Notas, Notepad, Word, etc, MATLAB dispone de un editor que permite crear y modificar estos ficheros, como ejecutarlos paso a paso para ver si contiene errores. La Figura 4 muestra la ventana principal del Editor, en la que se ha tecleado un fichero-M llamado prueba1.m. El editor muestra con diferentes colores los diferentes tipos o elementos constitutivos de los comandos (en verde los comentarios, en rojo las cadenas de caracteres, etc.). Las lneas de comentario se indican con el carcter % delante del comentario. La Figura 5 corresponde a una ejecucin del fichero de comandos desde el editor, eligiendo la opcin Run dentro del men Debug. Cuando el curso se coloca sobre una variable ( en este caso sobre el valor e) aparece una pequea ventana con los valores numricos de esa variable.

Figura 4: Ventana del editor de texto.

Figura 5: Editor con ejecucin.

En algunas ocasiones puede resultar interesante interrumpir el trabajo con MATLAB y poderlo recuperar ms tarde en el mismo punto donde se dej (con las mismas variables definidas, con los mismos resultados intermedios, etc.) Hay que tener en cuenta que al salir del programa todo el contenido de la memoria se borra automticamente. Para guardar el estado de una sesin de trabajo existe el comando save. Si se teclea >> save antes de abandonar el programa, se crea en el directorio un fichero llamado matlab.mat ( o matlab) con el estado de la sesin (excepto los grficos, que por ocupar mucha memoria hay que guardar aparte). Dicho estado puede recuperarse la siguiente vez que se arranque el programa con el comando: >>load.

Operaciones con matrices y vectores


Ya hemos comentado que MATLAB es fundamentalmente un programa para clculo matricial. Inicialmente se utilizar MATLAB como programa interactivo, en el que se irn definiendo las matrices, los vectores y las expresiones que los combinan y obteniendo los resultados sobre la marcha. Si estos resultados son asignados a otras variables podrn ser utilizados posteriormente en otras ocasiones. En este sentido MATLAB sera como una potente calculadora matricial. Empezamos por aprender a introducir matrices y vectores desde el teclado. Definicin de matrices y vectores desde el teclado Como en casi todos los lenguajes de programacin las matrices y vectores son variables que tienen nombres. Para definir una matriz o un vector no hace falta establecer de antemano su tamao, de hecho, se puede definir inicialmente un tamao y cambiarlo posteriormente. MATLAB determina el nmero de filas y de columnas en funcin del nmero de elementos que se proporcionan. Las matrices se definen por filas, los elementos de la misma fila estn separados por blancos o por comas, mientras que las filas estn separadas por pulsaciones intro o por caracteres punto y coma (;). Por ejemplo el siguiente comando define una matriz A de dimensin 3x3: >> A=[1 2 3 ; 4, 5, 6 7 8 9] La respuesta del programa es:

A= 1 4 7 2 5 8 3 6 9

De forma anloga a las matrices, es posible definir un vector fila x en la forma siguiente: >> x=[10 20 30] La respuesta del programa es: x= 20 30 En MATLAB se accede a los elementos de un vector poniendo el ndice entre parntesis, por ejemplo >> x(2) La respuesta es: ans = 20 Para definir un vector columna y hay que separar los elementos por (;) o intro, >> y=[11; 12; 13] y= 11 12 13 Y de la misma forma >> y(3) ans = 13 MATLAB tiene en cuenta la diferencia entre vectores fila y vectores columna. Si intentamos sumar los vectores x e y obtendremos el siguiente mensaje de error: >> x +y ??? Error using ==> + Matrix dimensions must agree. Para poder sumar los vectores necesitamos que ambos sean vectores filas o ambos columna. Si hacemos 10

>> x Transforma el vector fila x en un vector columna ans = 10 20 30 Si sumamos ahora obtenemos: >> x+y ans = 21 32 43 Si transformamos y en vector fila y sumamos, entonces >> x+y ans = 21 32 43

Operaciones entre vectores MATLAB puede operar con vectores por medio de operadores y por medio de funciones. Los operadores son los siguientes: Suma (+) : >> x+y ans = 21 32 43 Resta (-) : >> x-y ans = -1 8 17 Multiplicacin (*): 1. Vector fila por vector columna, el resultado es un nmero. >> x*y ans = 740 2. Vector columna por vector fila, el resultado es una matriz. >> y*x ans = 110 220 330 120 240 360 130 260 390

Producto elemento a elemento (.*) 1. Por un nmero: >>x.*3 ans = 30 60 90 2. Por un vector elemento a elemento: >> x.*y ans= 110 240

390

Divisin elemento a elemento 1. Divisin de todos los elementos del vector por un nmero(./) >> x./3 ans= 3.3333

6.6667

10.0000

2. Divisin de un nmero por todos los elementos de un vector (.\) >> x.\3 ans= 0.3000 0.1500 0.1000 Elevar a una potencia elemento a elemento (.^) >> x.^3 ans= 1000

8000

27000

Si anteriormente no hemos definido el vector x se hace de la misma forma, es decir: >> [1 2 3 4]^2 ??? Error using ==> ^ Matrix must be square. >> [1 2 3 4].^2 ans = 1 4 9 16

>> [1 2 3 4]*[1 -1 1 -1] ??? Error using ==> * Inner matrix dimensions must agree. >> [1 2 3 4].*[1 -1 1 -1] ans = 1 -2 3 -4

Tipos de datos
Nmeros reales de doble precisin: Los elementos constitutivos de los vectores y matrices son nmeros reales. MATLAB mantiene una forma especial para los nmeros muy grandes (ms grandes que lo que es capaz de representar), que son considerados como infinito. Por ejemplo, obsrvese como responde el programa al ejecutar el siguiente comando: >> 1.0/0.0 Warning: Divide by zero. (Type "warning off MATLAB:divideByZero" to suppress this warning.) ans = Inf As pues, para MATLAB el infinito se representa como inf o Inf. MATLAB tiene tambin una representacin especial para los resultados que no estn definidos como nmeros. Por ejemplo: >> 0/0 Warning: Divide by zero. (Type "warning off MATLAB:divideByZero" to suppress this warning.) ans = NaN >> inf/inf ans = NaN En ambos casos, la respuesta es NaN, que es la abreviatura de Not a Number. Las funciones realmin y relamax devuelven el nmero ms pequeo y el ms grande respectivamente con el que se puede trabajar. >> realmin ans = 2.2251e-308

>> realmax ans = 1.7977e+308 Cadenas de caracteres. En MATLAB las cadenas de texto van entre apstrofos o comillas simples. Por ejemplo >> s=hola soy una cadena de caracteres s= hola soy una cadena de caracteres Variables. Una variable es un nombre que se da a una entidad numrica que puede ser una matriz, un vector o un escalar. El valor de esta variable puede cambiar a lo largo de una sesin de MATLAB o a lo largo de la ejecucin de un programa. La forma ms normal de cambiar el valor de una variable es colocndola a la izquierda del operador de asignacin (=). Por ejemplo: >> t=1 t= 1 >> t=t+1 t= 2 >> t=5 t= 5 Cuando a un resultado no le asignamos ningn nombre, MATLAB le asigna automticamente una variable interna llamada ans que almacena el ltimo resultado obtenido. >> t+3 ans = 8 Si se desea que una expresin contine en la lnea siguiente, hay que introducir tres puntos () antes de pulsar intro. >> t*2 ... *5 ans = 50 Tambin se pueden incluir varias expresiones en la misma lnea separndolas por comas (,) o punto y coma (;) >> t*2, t*5

ans = 10 ans = 25 Si una expresin termina en punto y coma (;) su resultado se calcula, pero no se escribe en pantalla. >> t*2;t*5 ans = 25 >> t*2; t*5; >> Esta posibilidad es muy interesante, tanto para evitar la escritura de resultados intermedios, como para evitar la impresin de grandes cantidades de nmeros cuando se trabaja con matrices o vectores de gran tamao. Otras formas de definir vectores. MATLAB dispone de varias formas de definir los vectores. El introducirlos por teclado slo es prctico en casos de pequeo tamao y cuando no hay que repetir esa operacin muchas veces. Recordemos tambin que el tamao de los vectores puede ser modificado por el usuario mediante la adiccin o sustraccin de elementos. A continuacin vamos a ver otras formas de definir los vectores: Tipos de vectores predefinidos mediante funciones. Existen en MATLAB funciones para definir vectores con gran facilidad, algunas de estas funciones son las siguientes: Vectores fila o columna donde todos los elementos son cero. Zero(n,1)= Vector columna donde los n elementos son cero. Zero(1,n)= Vector fila donde los n elementos son cero. >> zeros(3,1) ans = 0 0 0 >> zeros(1,3) ans = 0 0 0 Vectores fila o columna donde todos los elementos son unos.

ones(n,1)= Vector columna donde los n elementos son uno. ones(1,n)= Vector fila donde los n elementos son uno. >> ones(3,1) ans = 1 1 1 >> ones(1,3) ans = 1 1 1

Generar un vector con n valores igualmente espaciados entre x1 y x2, la orden se escribe linspace(x1,x2,n) >> linspace(1,10,10) ans = 1 2 3 4 5 >> linspace(0,1,10) ans = Columns 1 through 7 0 0.6667 0.1111 0.2222 0.3333 0.4444 0.5556

10

Columns 8 through 10 0.7778 0.8889 1.0000

Calcular el nmero de elementos de un vector x, la orden es length(x) >> x=linspace(1,10,20); >> length(x) ans = 20

Tipos de vectores predefinidos mediante el operador dos puntos (:) El operador dos puntos es muy importante en MATLAB y puede usarse de varias formas. Para empezar, definimos un vector x con el siguiente comando: >> x=1:10 x= 1 2 3 4 5 6 7 8 9 10

En cierta forma se podra decir que el operador (:) representa un rango; en este caso, los nmeros enteros entre 1 y 10. Por defecto el incremento es 1, pero este operador puede tambin utilizarse con otros valores enteros y reales, positivos y negativos. En este caso el incremento va entre el valor inferior y el superior, en las formas que se muestran a continuacin: >> x=1:2:10 x= 1 3 5 7 9

>> x=1:1.5:10 x= 1.0000 10.0000 2.5000 4.0000 5.5000 7.0000 8.5000

>> x=10:-1:1 x= 10 9 8 7 6 5 4 3 2 1

Como puede verse, por defecto este operador produce vectores fila. Si se desea obtener un vector columna basta transpones es decir x. El siguiente ejemplo genera un vector donde las 10 primeras componentes del vector son los nmeros naturales, y las 10 siguientes sus cuadrados: >> x=[1:10] x= 1 2 3 4 5 6 7 8 9 10

>> y=x.^2 y= 1 4 9 16 25 36 49 64 81 100

>> [x y]

ans = Columns 1 through 13 1 2 3 4 5 6 7 8 9 10 1 4 9

Columns 14 through 20 16 25 36 49 64 81 100

FUNCIONES DE MATLAB
Funciones Matemticas elementales: La funciones que a continuacin vamos a describir corresponden a funciones matemticas elementales y se aplican a valores escalares o a vectores elemento a elemento. sin(x) cos(x) tan(x) log(x) log10(x) exp(x) sqrt(x) round(x) abs(x) seno coseno tangente logaritmo neperiano logaritmo decimal exponencial raz cuadrada redondeo hacia el entero mas prximo valor absoluto

Funciones que actan sobre vectores: Las siguientes funciones solo actan sobre vectores. [xm,im ]=max(x) [ym,jm]=min(x) sum(x) mean(x) std(x) Devuelve el valor mximo xm y la posicin im Devuelve el valor mnimo ym y la posicin jm Suma de los elementos de un vector Valor medio de los elementos del vector Desviacin tpica.

Funciones para clculos con polinomios: Para MATLAB un polinomio se puede definir mediante un vector de coeficientes. Por ejemplo, el polinomio: x4-8x2+6x -10=0 se puede representar mediante el vector [1, 0, -8, 6, -10]. MATLAB puede realizar diversas operaciones sobre l, como por ejemplo evaluarlo para un determinado valor de x

>> pol=[1 0 -8 6 -10] pol = 1 0 -8 6 -10

>> polyval(pol,1) ans = -11

Otras funciones siguientes:

orientadas

al

clculo

de

polinomios

son

las

polyfit(x,y,n): calcula los coeficientes de un polinomio p(x) de grado n que se ajusta a los datos p(x(i)) ~=y(i), en el sentido de mnimo error cuadrtico medio. Por ejemplo, consideremos los puntos x=[1 2 3 4 5] y el vector y=[1 -1 3 0 0.5], y queremos calcular un polinomio que aproxime a esos puntos. (Figura 6)

Figura 6: Puntos que queremos aproximar

Ejecutamos los siguientes comandos >> x x= 1 >> y y= 1.0000 -1.0000 3.0000 0 0.5000 2 3 4 5

>> polyfit(x,y,2) ans = -0.1429 0.8571

(Figura 7: grfica roja)

-0.3000 (Figura 7: grfica verde)

>> polyfit(x,y,4) ans = 0.9792 -11.9583

50.2708 -83.7917

45.5000

Figura 7: Polinomios de aproximacin a los puntos dados.

spline(x,y): calcula un polinomio de grado tres en cada intervalo [x(i),x(i+1)], tal que p(x(i))=y(i). (Figura 8)

Figura 8: Aproximacin por splines cbicos.

trapz(x,y) : calcula la integral de la poligonal que une los puntos(x(i), y(i)), con su correspondientes signos. En la grfica 9 hemos rellenado en verde la parte que tiene integral negativa. En el caso que todos los elementos del vector y sean positivos, esta funcin nos proporciona el rea.

Figura 9: Clculo de la integral

PROGRAMACIN DE MATLAB Bifurcaciones y bucles


MATLAB es una aplicacin que se puede programar muy fcilmente. Las ms bsicas son las bifurcaciones y los bucles. La Figura 10 muestra dos posibles formas de bifurcaciones.

falso falso Condicin Condicin

cierto Sentencias

cierto Bloque 1 Bloque 2

Figura 10: Ejemplos grficos de bifurcaciones. Los bucles permiten repetir las mismas o anlogas operaciones sobre datos distintos. La figura 11 muestra dos posibles formas de bucle, con el control situado al principio o al final del mismo. Si el control est situado al comienzo del bucle es posible que las sentencias no se ejecuten ninguna vez, por no haberse cumplido la condicin cuando se llega al bucle por primera vez. Sin embrago, si la condicin est al final del bucle las sentencias se ejecutarn por lo menos una vez, aunque la condicin no se cumpla.

falso Condicin Sentencias cierto Sentencias Condicin cierto

falso

Figura 11: Bucles con control al principio y al final. Sentencia if En su forma ms simple, la sentencia if se escribe de la forma siguiente Caso 1 de la Figura 10: if condicion sentencias end Caso 2 de la Figura 10: if condicion bloque 1 else bloque 2

end Existe tambin la bifurcacin mltiple, en la que pueden concatenarse tantas condiciones como se desee, y que tiene la forma: if condicion1 bloque 1 elseif condicion2 bloque 2 elseif condicion3 bloque 3 else %opcion por defecto para cuando no se cumplan 1,2,3 bloque4 end donde la opcin por defecto else puede ser omitida: si no est presente no se hace nada en caso de que no se cumpla ninguna de las condiciones que se han chequeado. Sentencia for La sentencia for repite un conjunto de sentencias un nmero predeterminados de veces. La siguiente construccin ejecuta sentencias con valores de i de 1 a n, variando de uno en uno. for i=1:n sentencias end Por ejemplo, >> x=linspace(0,1,5) x= 0 0.2500 0.5000 >> n=length(x) n= 5 >> for i=1:n i,x(i) end i= 1 ans = 0 i= 2 ans = 0.2500

0.7500

1.0000

i= 3 ans = 0.5000 i= 4 ans = 0.7500 i= 5 ans = 1 El caso ms general para la variable del bucle (valorinicial:incremento:valor-final); En el mismo ejemplo anterior, si ponemos for i=1:2:n, quiere decir que va del valor i=1 al n pero de dos en dos: >> for i=1:2:n i,x(i) end i= 1 ans = 0 i= 3 ans = 0.5000 i= 5 ans = 1 El incremento tambin puede ser negativo, por ejemplo: >> for i=5:-2:1 i,x(i) end i= 5 ans = 1 i= 3 ans = 0.5000

i= 1 ans = 0

Setencia while Su sintaxis es la siguiente: while condicion sentencias end donde condicin puede ser una expresin vectorial. Las sentencias se siguen ejecutando mientras haya elementos distintos de cero en condicin, es decir mientras haya algn o algunos elementos true. El bucle se termina cuando todos los elementos de condicin son false. Veamos el ejemplo anterior de escribir i, x(i) para i=1:n, usando ahora la sentencia while >> i=1 i= 1 >> while i<=n i,x(i) i=i+1; end i= 1 ans = 0 i= 2 ans = 0.2500 i= 3 ans = 0.5000 i= 4 ans = 0.7500 i= 5 ans = 1

Ficheros *.m Los ficheros con extensin (.m) son ficheros de texto sin formato que constituyen el centro de la programacin en MATLAB. Existen dos tipos de ficheros *.m, los ficheros de comandos y las funciones. Los primeros contienen simplemente un conjunto de comandos que se ejecutan sucesivamente cuando se teclea el nombre del fichero en la lnea de comando de MATLAB o se incluye dicho nombre en otro fichero *.m. Un fichero de comandos puede llamar a otros ficheros de comandos. Si un fichero de comando se llama desde la lnea de comandos de MATLAB, las variables que crea pertenecen al espacio de trabajo base de MATLAB y permanecen en l cuando se termina la ejecucin de dicho fichero. Las funciones permiten definir funciones enteramente anlogas a las de MATLAB, con su nombre, sus argumentos y sus valores de retorno. Las funciones definidas en ficheros *.m se caracterizan porque la primera lnea (que no sea de comentario) comienza por la palabra function, seguida por los valores de retorno (entre corchetes [ ] y separados por comas, si hay ms de uno), el signo (=) y el nombre de la funcin, seguido de los argumentos (entre parntesis y separados por comas). Los ficheros de comandos se pueden llamar tambin desde funciones, en cuyo caso las variables que se crean pertenecen al espacio de trabajo de la funcin. El espacio de trabajo de una funcin es independiente del espacio de trabajo base y del espacio de trabajo de las dems funciones. A continuacin se ver un poco ms detallado ambos tipos de ficheros. Ficheros de comandos Como ya hemos dicho los ficheros de comando, contienen una sucesin de comandos anloga a la que se tecleara en el uso interactivo del programa. Dichos comandos se ejecutan sucesivamente cuando se teclea el nombre del fichero que los contiene sin la extensin. En la figura 12 vemos el fichero prueba1.m, y la ejecucin resultante es: >> prueba1 y= 2.7183

y= 2.7183 7.3891

y= 2.7183 7.3891 20.0855

y= 2.7183 7.3891 20.0855 54.5982

Figura 12: Ejemplo de fichero de comando Ficheros de definicin de funciones. La primera lnea de un fichero llamado name.m que define una funcin tiene la forma: function [lista de argumentos de salida] = name (lista de argumentos de entrada) donde name es el nombre de la funcin. Entre corchetes y separados por comas van los argumentos de salida (siempre que haya ms de uno), y entre parntesis tambin separados por comas los argumentos de entrada. Las variables definidas dentro de una funcin son variables locales, en el sentido de que son inaccesibles desde otras partes del

programa y en el que no interfieren con variables del mismo nombre definidas en otra funciones o partes del programa.

Ejemplo de un fichero que define una funcin: function poblacion(dt) %Tasas de natalidad b y mortalidad d b=0.2; d=0.2; %Numero de individuos inicialmente N0=100; %Calculo del tablero de los tiempos t=[0:dt:20]; nt=length(t); %Solucion exacta for i=1:nt sol(i)=N0*exp((b-d)*t(i)) end %solucion aproximada N(1)=N0; for i=2:nt N(i)=N(i-1)+b*N(i-1)*dt-d*N(i-1)*dt; end %dibujo de las solucion exacta y aproximada, la aproximada en rojo %y la exacta con * plot(t,sol,'*',t,N,'r')

Anda mungkin juga menyukai