matlab intro1

Upload: july-andrea-gomez-camperos

Post on 08-Jul-2015

8.893 views

Category:

Documents


2 download

TRANSCRIPT

CURSO BSICO DEMATLABINTRODUCCIN AL MATLABNDICE CURSO BSICO DE............................................................................................1MATLAB............................................................................................................1CAPTULO I: INTRODUCCIN.......................................................................................51.1 El programa MATLAB.......................................................................................................................................51.2 Ventanas en MATLAB.......................................................................................................................................51.2.1 Ventana de Comandos ....................................................................................................................................51.2.2 Ventana de grficos.......................................................................................................................................51.2.3 Ventana de edicin..........................................................................................................................................51.3 Entrada - salida....................................................................................................................................................61.3.1 Tipo de dato ....................................................................................................................................................61.4 Salida por pantalla...............................................................................................................................................61.4.1 Salida de pgina...............................................................................................................................................61.5 Formato de salida................................................................................................................................................61.6 Comandos generales que se deben recordar........................................................................................................71.6.1 Comandos que brindan informacin del directorio.........................................................................................7CAPTULO 2: OPERACIONES CON MATRICES Y VECTORES..................................82.1 Variablesy constantes en MATLAB.................................................................................................................82.2 Operadores aritmticos en MATLAB.................................................................................................................82.3 Modos de introducir matrices..............................................................................................................................92.3.1 Entrada de matrices por teclado......................................................................................................................92.4 Operaciones bsicas matriciales........................................................................................................................112.4.1 Transpuesta....................................................................................................................................................112.4.2 Suma y resta..................................................................................................................................................112.4.3 Producto ........................................................................................................................................................112.4.4 Inversa...........................................................................................................................................................112.4.5 Divisin ...............................................................................................................................................112.4.6 Potencia de matrices......................................................................................................................................12- 2 -INTRODUCCIN AL MATLAB2.4.7 Determinante.................................................................................................................................................122.5 Funciones trascendentes matriciales.................................................................................................................122.6 Tipos de matrices predefinidos.........................................................................................................................122.7 Instruccin de asignacin..................................................................................................................................132.8 Operaciones con arreglos u operaciones punto.................................................................................................142.9 Polinomiales....................................................................................................................................................14CAPTULO 3. FICHEROS EN MATLAB.......................................................................163.1 Ficheros de comandos ......................................................................................................................................173.2 Establecimiento del camino de bsqueda.........................................................................................................19CAPTULO 4. FUNCIONES ESTNDARES (BUILT IN)..............................................204.1 Funciones elementales matemticas.................................................................................................................204.2 Funciones que manipulan datos........................................................................................................................204.3 Operadores de relacin .....................................................................................................................................214.4 Operadores lgicos............................................................................................................................................214.5 Tratamiento de cadenas de caracteres...............................................................................................................22CAPTULO 5. SUBPROGRAMAS. FICHERO FUNCIN.............................................24CAPTULO 6. INSTRUCCIONES ESTRUCTURADAS................................................256.1 Instruccin if.....................................................................................................................................................256.2 Instruccin switch.............................................................................................................................................256.3 Instruccin for...................................................................................................................................................266.4 Instruccinwhile..............................................................................................................................................266.5 Estructuras o registros en MATLAB................................................................................................................27CAPTULO 7. GRFICOS...........................................................................................287.1 Grficos de una lnea.........................................................................................................................................287.2 Grficos de varias lneas...................................................................................................................................287.3 Grficas en el espacio........................................................................................................................................30- 3 -INTRODUCCIN AL MATLAB7.4 Borrado de textos en grficos............................................................................................................................30CAPTULO 8. ALGUNOS EJEMPLOS ........................................................................318.1 Solucin de sistemas lineales............................................................................................................................318.2 Solucin de ecuaciones diferenciales de manera numrica..............................................................................378.3 Solucin simblica de ecuaciones diferenciales...............................................................................................38 ................................................................................................................................................................................38 ................................................................................................................................................................................398.4 Integracin numrica.........................................................................................................................................408.5 Ecuaciones no lineales y optimizacin.............................................................................................................418.6 Integracin simblica........................................................................................................................................428.7 Transformada de Laplace..................................................................................................................................43GLOSARIO DE FUNCIONES, COMANDOS Y CONSTANTES QUE SE MENCIONAN........................................................................................................................................44- 4 -INTRODUCCIN AL MATLABCaptulo I: Introduccin1.1 El programa MATLABMATLAB es el nombre abreviado de MATrix LABoratory. Es un programa para realizar clculos con vectores y matrices. Como caso particular puede tambin trabajar con nmeros escalares, tanto reales como complejos. Una de las capacidades ms atractivas es la de realizar una amplia variedad de grficosen dos y tres dimensiones. MATLAB tiene tambin un lenguaje de programacin propio. Es, para muchos, el paquete ms usado en ingeniera en la actualidad.Numerosasfirmasygruposenel mundohacenmacrosojuegosdefuncionesycomandos poderosos, porsupuestoapartirdealgunosde los que se vernaqu,queseconocen enel mundo con el nombre de toolbox, y que resuelven problemas de ramas especficas, tales como el control automtico, control no lineal, identificacin, grficos, matemtica simblica, estadsticas, redes neuronales,fuzzy, procesamiento de seales, etc., ytodos los aos aparecen nuevos y mejores.1.2 Ventanas en MATLAB1.2.1 Ventana de Comandos Es la ventana principal y se caracteriza por el prompt >>. Al correr la aplicacin es la primera ventana que aparece. Todos los comandos, incluso aqullos utilizados para correr los programas escritos por el usuario, son ejecutados desde esta ventana. Si se oprime el cursor hacia arriba o hacia abajo se pueden editar los comandos tecleados.1.2.2 Ventana de grficosLasalida detodos loscomandosgrficos es enviados a esta ventana. El usuario podr crear tantas figurascomoel sistema de memoria lo permita. Se regresa a la ventana de comandos oprimiendo cualquier tecla.1.2.3 Ventana de edicinAqu es donde el usuario escribe, edita y salva sus propios programas en ficheros llamados m-files (ficheros punto m). Se accede por el men file en la opcin Open o new m-file.Los comandoshelpylookforsonmuyimportantes, pues brindanayuda enlnea. Estos comandos muestran en pantalla todas las funciones, comandos y, en general, todos los elementos que forman parte del lenguaje. Se puede conocer lo fundamental de un comando si se - 5 -INTRODUCCIN AL MATLABteclea help comando. Se usa lookfor para encontrar los comandos relacionados con una palabra clave, por ejemplo, inverse.1.3 Entrada - salidaMATLABsoportael clculodeformainteractiva, tomandolaentradadesdelapantallay enviando la salida hacia la misma. Posibilita la lectura y escritura de ficheros. Las siguientes caractersticas se mantienen para todas las formas de entrada - salida.1.3.1 Tipo de dato Bsicamente existe un solo tipo de dato que es la matriz compleja, los nmeros reales son casos particulares. Cuando un nmero real es entrado como valor de un variable, MATLAB hace cero automticamente la parte imaginaria.Sensibilidad al tipo de letra. MATLAB es sensible al tipo de letra, diferencia las minsculas de las maysculas. La variable A es diferente a la variable a. 1.4 Salida por pantallaEl resultado de la accin que realiza cada comando es visualizado en la pantalla. Sin embargo esto puede evitarse tecleando un punto y coma al final del comando con excepcin de los grficos y la ayuda en lnea. Para interrumpir un comando o un programa se usa ^C.1.4.1 Salida de pginaPara indicarle a MATLAB que muestre una sola pantalla de una sola vez es necesario teclear el comando more.Se tratade un switch,more onmuestra una sola pantalla a la vez, more off desactivaesto y more(n)muestra n lneas por pantalla. De otra forma se enva la salida sin importar si el usuario tiene tiempo o no de leer la informacin.1.5 Formato de salidaTodoslosclculosdentro deMATLAB son realizados usando doble precisin. La forma de aparicin del punto flotante es controlada por el formato en uso. La siguiente tabla muestra el valor de 10en 7 formatos diferentes:format short 31.4159format short e 3.1416e+001format long 31.41592653589793format long e3.141592653589793e+001format hex 403f6a7a2955385eformat rat 3550/113format bank 31.42- 6 -INTRODUCCIN AL MATLABLos formatos adicionales: format compact (suprime una lnea posterior) y format loose (pone una lnea posterior) controlan el espacio por encima y por debajo de la presentacin del nmero. format + , visualiza el signo del nmero.format short es el asumido.1.6 Comandos generales que se deben recordardemo Corre el programa de demostracinworkspaceBrinda informacin sobre el espacio de trabajowho Lista todas las variables en usowhos Lista todas las variables en uso y su dimensinwhat Lista todos los ficheros .m, .mat y .mex existentes en el discoclear Limpia el espacio de trabajo, elimina todas las variablesclear x, y, z Elimina las variables x, y, zclf Limpia la pantalla grficaclc Limpia la pantalla de textoshg Muestra la pantalla grficaexit,quit Retornan al SO.clock Muestra un vector fila de 6 elementos: ao, mes, da, hora, min., seg.computer Tipo de computadora con la que se est trabajandodate Informa la fecha actual1.6.1 Comandos que brindan informacin del directoriopwd Muestra el camino del directorio actual de trabajocd Cambia el directorio actualls Lista el contenido del directorio actual de trabajoTambin se pueden usar, del MS-DOS, type, delete, chdir, save, load- 7 -INTRODUCCIN AL MATLABCaptulo 2: Operaciones con matrices y vectores.2.1 Variablesy constantes en MATLABLos nombres de variables y funciones se forman por una letra seguida de cualquier combinacin deletras(del alfabetoingls)ydgitos. Sinembargo, sololosprimeros31caracteresdela variable y los primeros 8 de una funcin sern recordados por MATLAB. El guin bajo (_) se considera como una letra.Los parntesis se usan como en Pascal o C.Es posible trabajar con nmeros complejos.Se puede escribir directamentev = 3 + 4i v = 3 + 4jv = 5*exp(i*atan (4/3))Si la i o la j no van contiguas a nmeros debe escribirse el operador *.Estas tres instrucciones almacenan el mismo nmero complejo.Existen constantes predefinidas en MATLAB y que existen permanentemente:eps es una constante que se usa para tolerancias en determinadas tareas. Por ejemplo para saber cun cerca estamos de la singularidad.eps =2.2204 e-016Tambin existe pi ( ) con su valor correspondiente. inf que se trata de infinito y que se puede definir como 1/0.nan (Non A Number) resulta de operaciones no definidas matemticamente tales como inf/inf, 0/0, etc.2.2 Operadores aritmticos en MATLAB+ Suma- Resta*Multiplicacin\ Divisin izquierda/ Divisin derecha^PotenciaEs importante que no haya espacios antes o despus de los operadores de cualquier tipo, pues puede producir errores.- 8 -INTRODUCCIN AL MATLAB2.3 Modos de introducir matrices1.-Por teclado2.- Generadas por funciones3.- Creadas por los m-files4.- Cargadas desde un fichero de datos externo con el comando load.2.3.1 Entrada de matrices por teclado.Existen tres formas de entrada de matrices por teclado.A = [ 1 2 3;45 6;7 89]A = [ 1, 2, 3; 4, 5, 6;7, 8, 9]A = [ 123 456 7 8 9]Almacenan en A la matriz: 123A = 456 789Se puede referir a un elemento de la matriz A, por ejemplo, A(i, j). Se trata del elemento de la fila i y la columna j.Los elementos de la matriz pueden ser, en general, expresiones:x = [1 sqrt(23) 23*[A(1, 1) 3] ]Interesante:x = [123]x (5) =9entonces:x = [ 1 4.7958239]Grandes matrices pueden construirse a base de pequeas:A = [A; 101112]lo que produceA =12 345 678 91011 12Pequeas matrices pueden extraerse de grandes:- 9 -INTRODUCCIN AL MATLABA = A(1: 3, 1: 2) Produce una matriz con las tres primeras filas y las dos primeras columnas de A. B = A(2, :)extrae la segunda fila de A.Supongamos A = 1234567800003421B = A (1:2, 2:4)produce una matrizB =234 678B = A (1:2, 2)produce un vectorB = 26 B = A (:, 3)produce B= 3 7 0 2B = A (1:3, :)produceB = 123456780000B = A (:) produce B = [1234567800003421]Se pueden generar vectoresy = m :n :p genera un vector con los elementos desde m hasta p con un incremento n. n puede ser negativo. Si el incremento no se especifica se asume uno.Permiten hacer cosas como stas:x = 0: 0.2: 1;y = exp(-x).*sin(x);[x, y] produceans = 00.20000.40000.60000.80001.0000 00.16270.26100.30990.32230.3096La entrada de escalares es muy sencilla. Ejemplo:g = 9.8- 10 -INTRODUCCIN AL MATLAB2.4 Operaciones bsicas matriciales.2.4.1 TranspuestaB = A'X = [1 2 3 ] '2.4.2 Suma y restaSi A y B son conformes a la suma se puede escribir:C = A + B C =A-BSe pueden realizar operaciones de suma y resta con escalares.Y = X-1 siX =1entoncesY = 0 2 2 3 32.4.3 Producto Slo se puede resolver si las matrices son conformes al producto.SiA=[123y x = [ - 1 456 0 780] 2 ]b = A*x resultab = 58 -7Por supuesto que pi*x= -3.14160.00006.28322.4.4 InversaB = inv (A) calcula la matriz inversa de A cuadrada no singular.2.4.5 Divisin Existen dos smbolos para dividir matrices/y\.Si A es una matriz cuadrada no singular, entonces- 11 -INTRODUCCIN AL MATLABB/A = B*inv(A)(Divisin derecha)B\A = inv(B)*A (Divisin izquierda)Es decir,x = A\b es la solucin de A*x=bSe pueden dividir dos vectores:Recordemos que x = [-102]'y quey = [-2-11] 's = x\y produces = 0.800Esto es debido a que s = 0.800 es el valor del escalar que resuelve la ecuacin sobredeterminada x*s = y por mnimos cuadrados.Sin embargo S = y/x produce una respuesta:S = [0 0-1 0 0 -0.5 0 00.5]2.4.6 Potencia de matrices B^p Significa B a la potencia p. Solo es posible si B es cuadrada, se trata de una multiplicacin sucesiva de B, si p es entero. 2.4.7 DeterminanteB = det(A) calcula la determinante de A cuadrada.2.5 Funciones trascendentes matricialesExisten tres funciones para matrices: expm, logm y sqrtm.expm(A) .....! 3A! 2AA I e B3 2A+ + + + logm(A) = B de manera que A = Besqrtm(A) = Bde manera que B*B= A2.6 Tipos de matrices predefinidos.eye (n) Matriz identidad cuadrada de orden neye(m, n) Matriz identidad de orden m*nones(n)Matriz unitaria cuadrada de orden nones(m, n) Matriz unitaria de orden m*n- 12 -INTRODUCCIN AL MATLABzeros(m, n) Matriz de ceros de orden m*nrand(m, n) Matriz con elementos aleatorios de orden m*ndiag(V, K) Si V es un vector fila o columna de n componentes,se construye una matriz de orden n + abs(k) colocandoel vector en la K-sima diagonal (K = 0 es la diagonal principal), K > 0 encima de la diagonal principal y K < 0 por debajo).diag(V) Construye una matriz cuadrada de orden N con el vector V en su diagonal principal.triu(A) Extrae la parte triangular superior de A anulando el restotril(A) Extrae la parte triangular inferior de A anulando el restorot90(A) Rota una matriz 90 contra las agujas del relojrot90(A, k) Rota una matriz k*90 contra las agujas del relojfliplr(A) Rota las columnas de izquierda a derechaflipud(A) Rota las filas de arriba hacia abajoreshape (A, m, n) Devuelve una matriz de orden m*n cuyos elementos son tomados por columna de A. Si A no tiene m*n elementos se produce un error.Un ejemplo sera:B = [ones(3)zeros(3, 2); zeros(2, 3)4*eye(2)] B

1]1111111 1 1 0 01 1 1 0 01 1 1 0 00 0 0 4 00 0 0 0 42.7 Instruccin de asignacinLa sintaxis de una instruccin de asignacin esVariable = expresin [; ]La evaluacin de una expresin produce una matriz que se muestra en la pantalla y se asigna a una variable para su uso futuro.Si se omiten el nombre de la variable y el signo =, se crea automticamente una variable con el nombre ans (respuesta).>>1900/81 produceans =23.4568Si laexpresines demasiadolargaocomplicada, sepuedecontinuar enlaprximalnea escribiendo 3 ms puntos luego del operador aritmtico. Veamos.S = 1 - 1/2+1/3- 1/4 + 1/5 -.....1/6 + 1/7;- 13 -INTRODUCCIN AL MATLAB2.8 Operaciones con arreglos u operaciones punto.Se trata de operaciones trmino a trmino.La suma y la resta son claras, pues estas operaciones con matrices son as: trmino a trmino.El producto de arreglos o el producto de dos matrices trmino a trmino se denota, porA.*B. LasdivisinA./Bproduceunamatrizcuyoselementos sonloscocientes deloselementos correspondientes de A y B, es decir, a(i, j) / b(i, j).La divisin A.\B produce lo mismo pero b(i, j) / a(i, j).La potencia se denota por.^Veamos un ejemplo:x = [123];y =[45 6];z = x .^ yproducez = [132729]El exponente puede ser un escalarz = x .^2 producez = [149]Matriz Vacax = [ ]crea una matriz vaca.2.9 Polinomialespoly permite encontrar los coeficientes del polinomio caracterstico de una matriz, por ejemplo:A =[1 2 3 4 5 6 7 8 9];p = poly (A) producep = [1-15-180]Para encontrar las races de la ecuacin caracterstica:r = roots (p)r =16. 1168 -1. 1168- 14 -INTRODUCCIN AL MATLAB0Existen otras funciones:polyval (p, x) Permite calcular el polinomio,cuyos coeficientes son los elementos del vector p, para el valor de x.conv(p1, p2)Obtiene el producto de los polinomios p1 y p2.deconv(p1, p2)Obtiene el cociente de los polinomios p1 y p2.polyfit(x, y, n) Ajusta una funcin polinomial de orden n al conjunto de puntos (x, y). Se obtiene un vector con los coeficientes de la funcin.- 15 -INTRODUCCIN AL MATLABCaptulo 3. Ficheros en MATLABMATLAB tiene cuatro tipos de ficheros para almacenar la informacin:m-files. Son ficheros de texto ASCII estndares con extensin .m. Existen dos tipos de estos ficheros: ficheros comandos (script files) y ficheros funciones (function files). mat-files. Son ficheros de datos binarios, con extensin .mat. Estos son creados por MATLAB cuando el usuario graba los datos con el comando save nombre del fichero. Si no se pone el nombredelficheroseasumeelnombrematlab.mat.Estosficherospuedenser cargados por MATLAB con el comando load. Muchos de los programas escritos en MATLABson salvados como m-files. Todas las funciones estndares (built-in) son m-files.Haymuchas formas de cargar y almacenar datos en MATLAB.La va ms directa es el uso de los comandos load y save. El comando save es usado para salvar todo el espacio de trabajo o una seleccin de las variables en un fichero llamado Mat-file. Los ficheros-Mat (Mat-file) son escritos en un formato binario con precisin de 16 bits. Tambin es posible escribir los ficheros-Mat en formatos de ASCII de 16 y 8 dgitos con argumentos opcionales. Estos ficheros siempre tendrn extensin .mat.Los datos almacenados en estos ficheros pueden ser cargados en elespacio de trabajo de MATLAB a travs del comando load. A continuacin se muestran ejemplos del uso apropiado de estos comandos.Ejemplos:save misdatos.mat x yalmacena las variables x y y en el fichero misdatos.matsave nuedatos rx ry rzalmacena las variablesrx,ry,rzen el fichero nuedatos. MATLABaade automticamente la extensin.mat a los ficheros creados con este comando.savedatox.datx-asciisalvala variable x en el fichero xdata.dat en un formato ASCII de 8 dgitos.savesalva todo el espacio de trabajo en el fichero matlab.matload misdatos cargaenelespaciodetrabajo las variables salvadas en el ficheromisdatos.dat. load carga las variables almacenadas enel ficheropor defecto matlab.matLos ficheros con datos tipo ASCII pueden ser cargados en el espacio de trabajo de MATLAB, como una matriz rectangular de elementos numricos, en este caso MATLAB crea una variable cuyo nombre coincidir con el nombre del fichero diary-files. - 16 -INTRODUCCIN AL MATLABOtra forma de salvar o recuperar lo realizado en una sesin de trabajo es usando el comando diary. Esto permite almacenar enun fichero editable todos los comandos yfunciones utilizados en una sesin de MATLAB. Como salida puede ser utilizado un nombre de fichero con cualquier extensin. Para esto lo primero que hay que hacer es teclear diaryseguido delnombre del fichero, por ejemplo, diaryseccion1.out. Despus de esto todos los comandos y funciones que sean llamados, las sealizaciones de error, en caso de que stas existan, las respuestas de MATLAB, es decir, todo, ser almacenado en este fichero, hasta tanto se termine la sesin o se teclee diary off. Es posible adicionar cualquier otra sesin y para esto se teclea diary on, a partir de aqu todas las operaciones que se realicen sern aadidas al fichero ya existente. Estecomandoesmuytil, yaque a travs de l es posible recordar o repetir los comandos empleadosenunasesinanterior. Adems,elfichero creado podr ser editado encualquier editor detextose, incluso, puedeserconvertidoenunfichero.m(m-file), siemprequese eliminen las lneas de error o todos los comandos y funciones que no sean necesarios para el fichero m-file que se desee crear.Mex-files. Son ficheros con extensin .mex y pueden ser llamados por los lenguajes Fortran y C. El uso de estos ficheros requiere de alguna experiencia con el MATLAB y alguna paciencia. 3.1 Ficheros de comandos En este captulo no trataremos los ficheros funcin, a los que le dedicaremos un captulo aparte.Es claro que MATLAB se usa ms comnmente en el modo comando. Sin embargo es posible ejecutar unasecuenciade comandos almacenados en un fichero. Juntos, estos dos modos de trabajo, constituyen un ambiente poderoso de trabajo.Un fichero en disco, que contiene instrucciones del MATLAB, se llama fichero .m (punto m), pues la extensin es sa. Se crea accediendo al editor de MATLAB usando la opcin newde file.Los ficheros .m pueden contener, a su vez, referencias a otros ficheros .m.Funcin input

Para leer un daton = input ('Teclee el nmero de ..... ').MATLAB imprime en la ventana de comandos la cadena, Teclee el nmero ..., espera recibir un dato por teclado y lo almacena en la variable n. Si se desea leer una cadena de caracteres se debe escribir:n = input ('Teclee .. ..... ', 's')- 17 -INTRODUCCIN AL MATLABFuncin dispdisp (x)imprime la matriz x en pantalla sin imprimir el nombre.Si x es un texto lo imprime. Si se desea imprimir ms de un parmetro, estos deben formar parte de un vector y ser ambos cadenas. VeamosA=2;disp (['El resultado es ', num2str(A)])num2str(A) convierte A a cadena y se imprime en pantallaEl resultado es 2Ejemplo 1. Ejecutamos la opcin newde filey nos situamos en el editor de MATLAB y ah escribimos:%Esto es una pruebawt = 0:0.1:4*pi;y = sin (wt);plot (wt, y)% traza la grfica del seno(x) desde cero a 4radianes.Usandolaopcinsavedefile, delaventanadel editor, podemosgrabar el ficheroconel nombre, por ejemplo, grafsin.mEl smbolo % significa que todo lo que se escriba a la derecha de l es un comentario. Aunque MATLAB ignora los comentarios, forman parte del fichero.Si en la ventana de comandos escribimos ahora el comando grafsin se obtendr una sinusoide de 0 a 4radianes.Ejemplo 2. Escribir un programa que calcule la hipotenusa de un tringulo rectngulo conociendo sus catetos.%Hipotenusaa = input ('Teclee el valor de un cateto ');b = input ('Teclee el valor del otro cateto ');c = sqrt (a^2+b^2);disp (['La hipotenusa mide ', num2str(c)]); Es importante conocer que la ejecucin de helpnombre de ficheroimprime en la ventana de comandos las primeras lneas de comentarios. Hay que tener cuidado con el nombre de las variables que se utilicen en el cuerpo del fichero, ya que pasan a formar parte del espacio de trabajo y, de existir las mismas, tomaran un nuevo valor.- 18 -INTRODUCCIN AL MATLAB3.2 Establecimiento del camino de bsquedaMatlab ya tiene establecidos los caminos de bsqueda de los ficheros propios para su ejecucin o llamada. Tambin ofrece la carpeta workpara que el usuario pueda almacenar sus ficheros. Es posible, adems, crear otras carpetas y entonces se debe establecer el camino correspondiente. Esto se puede realizar utilizando la opcin Set Pathdel submen Filepara abrir la ventana delPath Browser. En esta ventana se puede agregar un camino de bsqueda ejecutando la opcin Add to Path del submen Path.Tambinsepuedeestablecer el caminodesdelaventanadecomandosusandoel comando addpath. Veamos un ejemplo. Si el usuario cre una carpeta con el nombre carpeta dentro de la carpeta MATLAB y ah almacena sus ficheros, debe establecer el camino de la siguiente forma:addpath c:\matlabr11\carpetaEste camino establecido valdr durante esa sesin de trabajo, pues al terminarla no se mantiene. Si se quisiera mantener para sesiones futuras se debe ejecutar la opcin Save Pathdel submen File del Path Browser o, desde la ventana de comandos, ejecutar save path.echoEs un switch. Normalmente cuando se ejecuta un fichero .mo los comandos no se imprimen en pantalla, aunqueavecespuedeserconvenientequesemuestrenparacorregirerrores. Para ficheros comandos echo on muestra los comandos hasta que se encuentre un echo off.echo nombre de fichero cambia el estado de echo en ese fichero.echo on allmuestra todos los comandos del fichero.echo off alloculta los comandos.pause Produce una pausa hasta que se oprime retorno.- 19 -INTRODUCCIN AL MATLABCaptulo 4. Funciones estndares (built in)4.1 Funciones elementales matemticasSe llaman tambin de arreglos, pues si operan con matrices lo hacen trmino a trmino.Ejemplo:C = sin(pi*B)Si B es una matriz produce una matriz C en que cada elemento es el seno de por el correspondiente de B.sqrt Raz cuadradaabs Valor absoluto, si es complejo devuelve la magnitud, si es un texto devuelve los valores en ASCII.conj Compleja conjugadafix Parte enteraimag Parte imaginariareal Parte realround Redondea al entero inferiorsign Signo de funcinrem Resto de la divisin Ej. rem(5,2) = 1sin Senocos Cosenotan Tangenteasin Arcosenoacos Arcocosenoatan Arcotangenteatan2 Arcotangente en los cuatro cuadrantesexp Exponenciallog Logaritmo naturallog10 Logaritmo vulgarEstas funciones operan sobre un escalar o a cada elemento de una matriz.4.2 Funciones que manipulan datossize(A) devuelve un vector de dos elementos que contiene el nmero de filas y el nmero de columnas de la matriz A.length (v) devuelve la longitud de un vector v.- 20 -INTRODUCCIN AL MATLABLas funciones siguientes devuelven un escalar si el argumento es un vector. Si es una matriz, devuelven un vector fila con las operaciones de las columnas.max Valor mayormin Valor menorsum Sumacumsum Suma acumulativa prod Producto de los elementoscumprod Producto acumulativomean Valor medio std Desviacin estndar median Devuelve el valor centralsortOrdena de forma ascendente.4.3 Operadores de relacin < Menor que =mayor o igual a> mayor queEsta comparacin se hace elemento a elemento y resulta en una matriz donde sus elementos son 0 cuando es falso y 1 cuando es verdadero.Una funcin interesante y muy til es la funcin find.Susintaxis esfind(condicin) yencuentra losndicesde lamatriz dondesecumple la condicin.Supongamos:A =[24574]B = find (A/2 = =fix (A/2) )Dos funciones tiles para generar vectores son:linspace(a, b, n)Genera un vector linealmente espaciado de a hasta b con n puntos.logspace(a, b, n) Genera un vector con espaciado logartmico desde 10a hasta 10b de longitud n.4.4 Operadores lgicos& and| or- 21 -INTRODUCCIN AL MATLAB~ notxor or exclusivoEstas operaciones, igual que las de comparacin, producen vectores y matrices con elementos del tipo 0 - 1, del mismo tamao que los operandos, con uno si la condicin es verdadera y cero si es falsa.Ejemplo:x = [0 5 3 7] y = [ 0 2 8 7]m = (x > y) & (x > 4) m= [0 1 0 0]n = x | y n= [0 1 1 1]Est claro que, como el resultado de estas operaciones es un vector con elementos del tipo 0-1, ste se puede usar para extraer los elementos deseados. Por ejemplo:x((x >y) & (x > 4))ans =54.5 Tratamiento de cadenas de caracteres.Todaslas cadenas de caracteres son entradas al MATLAB entre apstrofos, o sea, 'cadena'. MATLAB manipula cualquier cadena como un vector cuyos elementos van a ser los caracteres que formanla cadena en cuestin.Por ejemplo, si tecleamos:mensaje = 'Buenas noches'entonces MATLAB crea un vector fila de 13 elementos (los espacios existentes en la cadena se cuentancomocaracteres). Deah, queparacrearunvectorcolumnaconelementosdetipo cadena, es imprescindible que los mismos tengan el mismo nmero de caracteres. Por ejemplo, el comandonombres = ['Juan'; 'Raul'; 'Ania'; 'Magy'],Crea unvector columna con un elemento por fila, siendo para MATLAB la variable nombres, una matriz de 4x4.Encaso de que sea necesario crear vectores columna cuyos elementos sean cadenas de longitudesdiferentes, seleadicionaracadaelemento(cadena) queas lonecesite, tantos espacios en blanco como se requiera para lograr que la longitud de todos los elementos sea la misma.- 22 -INTRODUCCIN AL MATLABUna forma ms fcilde lograresto es utilizando el comando str2mat,el cual convierte una cadena a matriz. str2mat(s1, s2, s3, ...,) coloca cada argumento s1, s2,... en una fila y crea una matriz cadena, adicionndole a cada fila el nmero de espacios en blanco que necesite.Ejemplo:equipos = str2mat ('monitor', 'impresora', plotter')eval Calcula el valor de una cadena numrica.t = '3+2'; eval (t)produceans =5- 23 -INTRODUCCIN AL MATLABCaptulo 5. Subprogramas. Fichero funcinFicherofuncin. Es un fichero que contiene una funcin y, por tanto, se considera un subprograma. Se escribe en el mismo ambiente del fichero comando. Las funciones en MATLAB son como los procedimientos en Pascal y las funciones en C.El encabezamiento tendra la siguiente sintaxis:function [variables de salida] = Nombre de funcin(variables deentrada)Veamos algunos detalles sobre las funciones.1. En la primera lnea se declaran el nombre de la funcin y los argumentos de entrada y de salida. Sin esta lnea se tratara de un fichero comando.2. Las primeras lneas del fichero .m (despus de la declaracin de funcin) se imprimirn en pantalla si se pide ayuda acerca de l, es decir, las que estn precedidas por %.3. Las variables que se usen, incluyendo las del cuerpo de la funcin, son locales. 4. La transferencia de los parmetros de entrada es por valor (por tanto pueden ser constantes) y los de salida por nombre.5. Pueden existir varios parmetros de entrada y varios de salida.6. El nombre del fichero tiene que coincidir con el nombre de la funcin.7. Cuandosetengaunasolavariabledesalida, noserequierequestaseencierreentre corchetes en la lnea de definicin de la funcin,pero cuando se tengan varias variables de salida esto si es necesario. Pueden no existir variables de salida.Ejemplo 1. Escribir una funcin que calcule la hipotenusa de un tringulo rectngulo.function c = pit (a, b)%Se calcula segn el teorema de Pitgorasc = sqrt (a^2+b^2);Con esta funcin debo crear un fichero con el nombre pit.m.Si ahora escribo pit(3, 4) obtengo ans = 5.Evitelacoincidenciaentrelas funciones queustedescribeylas funcionesestndares del MATLAB. Una forma prctica de averiguar esto es utilizar el comando exist ('nombre') el cual devuelve 0 si no encuentra nada con ese nombre.- 24 -INTRODUCCIN AL MATLABCaptulo 6. Instrucciones estructuradas6.1 Instruccin ifif < secuencia de instrucciones 1>[else < secuencia de instrucciones 2>]endSi la condicin es cierta se ejecuta la secuencia de instrucciones 1, si es falsa se ejecuta (de existir) la secuencia de instrucciones 2. Los corchetes indican que es opcional la escritura.Ejemplo. Escribir una funcin que calcule el promedio decada columna de una matriz.function y = mean (x)% Se trata del promedio. Para vectores devuelve el promedio, que es un escalar. % Para matrices devuelve un vector fila que contiene los promedios de cada columna.[m, n] = size (x);ifm = = 1 m = n ;endy = sum(x)/m;6.2 Instruccin switchswitch expresin del switchcase expresin case { expresin1, expresin2,...} secuencia de instrucciones 2 ........ [otherwisesecuencia de instrucciones]endLa expresin del switch puede ser de cualquier tipo, incluso cadena. Note que si hay ms de una expresin deben escribirse entre llaves.Ejemplo. Elaborar un programa que trace una sinusoide con la opcin 1 y, con las opciones 2 y 3, trace una cosinusoide.disp('1. Sinusoide');disp('2. Cosinusoide');disp('3. Cosinusoide');n = input ('Teclee la opcin ');- 25 -INTRODUCCIN AL MATLABt = 0:0.01:9;switch ncase 1 plot(t, sin(t));case {2, 3} plot(t, cos(t));otherwise disp ('Opcion incorrecta');end 6.3 Instruccin forfor = :[:] endSi el incremento no se especifica MATLAB lo supone 1.Ejemplo. Crear una matriz de orden m*n cuyos elementos estn determinados por a(i, j) = 1/(i+j-1)m = input('Teclee el nmero de filas ');n = input('Teclee el nmero de columnas ');fori=1: m forj= 1:n a(i, j)= 1/(i+j-1); endend6.4 Instruccinwhilewhile< secuencia de instrucciones>endEjemplo: Si existe un vector a de n elementos, averiguar si alguno de ellos es cero.n = input('Cantidad de elementos de a ');i=1;while (a(i) ~ = 0) & (i < n) i = i+1;endif a(i) = = 0 disp('Hay un cero al menos');else disp('No hay ceros');end- 26 -INTRODUCCIN AL MATLAB6.5 Estructuras o registros en MATLABEn MATLAB existen tambin las estructuras (struct) de C o los registros del Pascal. Un registro esunaestructuraconvarioscomponentesocamposquepuedenserdediferentestipos.En MATLABlaestructuraalumnosecreaestableciendounobjetodedicha estructura. A diferencia de otros lenguajes de programacin, no hace falta definirpreviamenteel modeloopatrndelaestructura. Unaposibleformade hacerlo es crear uno a uno los distintos campos, como en el ejemplo siguiente:Ejemplo 1alumno.nombre = 'Pedro'alumno = nombre: 'Pedro'alumno.edad = 21alumno = nombre: 'Pedro'edad: 21La forma de referirse a algn campo es con el punto como se ha mostrado.Ejemplo 2. Escribir un programa que lea un arreglo de registros de los alumnos del aula, cada uno con tres campos: nombre, nota y edad. Encontrar el nombre del estudiante ms viejo.%Encuentra el nombre del alumno mayor de un arreglo de registrosn = input('Cantidad de alumnos ');for i = 1: n alumno(i).nombre = input('Teclee el nombre '); alumno(i).nota = input('Teclee la nota '); alumno(i).edad = input('Teclee la edad ');end;m = alumno(1).edad;for i = 2:n if m