Guia rapida de matlab (comandos basicos, graficacion y programacion)

151,253 views

Published on

Published in: Education
4 Comments
34 Likes
Statistics
Notes
No Downloads
Views
Total views
151,253
On SlideShare
0
From Embeds
0
Number of Embeds
47
Actions
Shares
0
Downloads
3,512
Comments
4
Likes
34
Embeds 0
No embeds

No notes for slide

Guia rapida de matlab (comandos basicos, graficacion y programacion)

  1. 1. Gu´ R´pida de Matlab ıa a ´ Oscar Angulo, Eduardo Cuesta,Cesar Gutierrez y Mar´ del Carmen Mart´ ´ ´ ıa ınez diciembre de 2001
  2. 2. Pr´logo oEste libro inicia una serie de gu´ dedicadas a MATLAB. ıasEl objetivo de esta gu´ es servir de apoyo para el manejo de MATLAB en las asignaturas en las que se emplea el citado ıasoftware y en las que las limitaciones de tiempo no permiten una dedicaci´n muy exhaustiva a su explicaci´n. Hemos o opretendido mostrar en esta gu´ los comandos y estructuras b´sicas de MATLAB de una manera clara y concisa con ıa aalgunos ejemplos que hemos considerado interesantes. Pretendemos as´ mismo que esta gu´ sea una gu´ viva que siga ı ıa ıaevolucionando con el tiempo, como lo ha hecho hasta ahora, gracias a la experiencia en el uso docente de MATLAB ygracias a las sugerencias de compa˜eros y alumnos a los cuales les queremos mostrar nuestro agradecimiento. n Valladolid, diciembre de 2001 Los AutoresGu´ R´pida de Matlabdvips . ıa a 1
  3. 3. m at .No est´ permitida la reproducci´n total o parcial de esta gu´ ni su tratamiento inform´tico, ni la transmisi´n de a o ıa, a oninguna forma o por cualquier medio, ya sea electr´nico, mec´nico, por fotocopia, por registro u otros m´todos, ni o a esu pr´stamo, alquiler o cualquier otra forma de cesi´n de uso del ejemplar, sin el permiso previo y por escrito de los e otitulares del Copyright. ´Angulo Torga, Oscar; Cuesta Montero, Eduardo; Guti´rrez Vaquero, C´sar; Mart´ e e ınez Mart´ ınez, Mar´ del Carmen: ıaProfesores del Departamento de Matem´tica Aplicada a la T´cnica; Valladolid, 2001. a e ´UNIVERSIDAD DE VALLADOLID. INSTITUTO DE INVESTIGACION DE CIENCIAS DE LA EDUCACION. ´ISBN: 84-Imprime: Servicio Reprograf´ COPIPAUMA ıaGu´ R´pida de Matlabdvips . ıa a 2
  4. 4. Contenidos1 Introducci´n a MATLAB o 4 1.1 Comentarios previos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Iniciando y finalizando una sesi´n con MATLAB o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 El entorno gr´fico de MATLAB bajo Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 5 1.4 Entorno gr´fico de MATLAB para Linux a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Breve Introducci´n a la Programaci´n en MATLAB o o 7 2.1 Principios con MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.1 Entrada y salida en MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.2 Aritm´tica elemental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 7 2.1.3 Diferentes formatos para los datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2 Asignaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3 Ficheros *.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.4 Estructuras de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.5 Lectura y escritura de datos (Entrada/salida de datos) . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5.1 Escritura de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5.2 Lectura de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.6 Programaci´n modular: Funciones o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.7 Otras Observaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Gr´ficos con MATLAB a 20 3.1 Gr´ficos de dos dimensiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 20 3.1.1 El comando plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.1.2 Opciones del comando plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.1.3 Otros comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2 Gr´ficos con n´meros complejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a u 25 3.3 Gr´ficos en otros sistemas coordenados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 27 3.4 Controlando los gr´ficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 28 3.5 Dibujando curvas de nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.6 Gr´ficos en 3-D a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.7 Control del color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.8 Copia de la ventana gr´fica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 45Gu´ R´pida de Matlabdvips . ıa a 3
  5. 5. Cap´ ıtulo 1Introducci´n a MATLAB o1.1 Comentarios previosComencemos destacando que la filosof´ del entorno MATLAB no es la de otros paquetes de matem´ticas usuales, ıa atales como Derive, Maple o Mathematica. Su filosof´ se asemeja m´s a la de un lenguaje de programaci´n que al de un paquete est´ndar de matem´ticas ıa a o a apues, aunque podemos ejecutar desde la linea de comandos mediante los nombres de dichos operaciones como en lospaquetes mencionados, lo habitual con MATLAB es crear un fichero de texto externo que contenga la secuencia decomandos que se desea ejecutar y llamar a este “programa” desde MATLAB. Algunas de las ventajas e inconvenientes de MATLAB son: 1) Ventajas que el entorno MATLAB tiene frente a un lenguaje de programaci´n: o (a) No hay que definir el tipo de las variables que se van a utilizar, ni el tama˜o de las mismas. n (b) No hay que compilar los programas, como ocurre en los entornos de programaci´n. o (c) Se pueden utilizar extens´ ısimas librer´ de funciones ya definidas. ıas (d) Presenta un manejo muy pr´ctico de vectores y matrices. a 2) Frente a un lenguaje de programaci´n no presenta incovenientes destacables. o Adem´s las sentencias y las a estructuras que se manejan son muy similares a las que se usan en el entorno de C. Algunos de los inconvenientes frente a otros paquetes inform´ticos son, entre otros: a (a) Al no estar pensado para el trabajo en linea de comandos no presenta ning´n men´ de acceso r´pido a u u a procedimientos de uso frecuente (como el que tiene por ejemplo Derive). (b) No posee una librer´ de c´lculo simb´lico propio por lo que recurre a comandos de Maple. No obstante, ıa a o este no es el fin ´ltimo de este programa y hay otros en el mercado m´s optimizados para este tipo de u a c´lculos. a1.2 Iniciando y finalizando una sesi´n con MATLAB oMATLAB se arranca pulsando con el rat´n en el icono correspondiente, e inmediatamente aparece la pantalla de la ofigura ??. Cualquier comando que se escribe tras el cursor de MATLAB ser´ procesado cuando se presione la tecla [ENTER]. aPor ejemplo, el comando que hay que ejecutar para salir de MATLAB es quit: >> quit [ENTER]Gu´ R´pida de Matlabdvips . ıa a 4
  6. 6. 1.3 El entorno gr´fico de MATLAB bajo Windows a m at Si se necesita detener la ejecuci´n de un programa o de un comando MATLAB antes de su finalizaci´n normal es o onecesario presionar simult´neamente la tecla [CTRL] y la tecla [C]. MATLAB detiene as´ cualquier comando o programa a ıque estuviera ejecut´ndose en ese momento y devuelve el cursor a su estado original quedando preparado para ejecutar ael siguiente comando.1.3 El entorno gr´fico de MATLAB bajo Windows aLa ventana de trabajo de MATLAB es una cl´sica ventana de Windows en la que aparece un men´ de opciones y unos a ucuantos botones de acceso r´pido. a El men´ de opciones se compone de cinco submen´s u u File , Edit , View, Window y Help , cada uno de ellos conlas siguientes opciones • Men´ File : Con esta opci´n se puede, entre otras u o cosas crear un nuevo elemento (bien un fichero M-File, una figura o un modelo de Simulink); abrir una nueva sesi´n, o un fichero M-File; gra- o bar, leer o mostrar el campo de trabajo (variables utilizadas); seleccionar el directorio de trabajo; seleccionar diversas preferencias, que van desde el color de la pantalla hasta el tipo de datos con los que trabaja por defecto; imprimir el documento activo, una selecci´n o elegir las preferencias de o impresi´n; los ´ltimos archivos utilizados; y aban- o u donar el programa. • Men´ Edit : u Posee las opciones de un edi- tor cl´sico de textos para Windows, seleccionar a un texto (con los cursores o el rat´n), cortar o un texto, copiar o pegar lo que tengamos se- leccionado en el portapapeles, deshacer la ´ltima u acci´n, seleccionar todo el documento o bien bor- o rar las variables de la sesi´n. oGu´ R´pida de Matlabdvips . ıa a 5
  7. 7. 1.4 Entorno gr´fico de MATLAB para Linux a m at • Men´ Help : Muestra todas las ayudas que nos u ofrece MATLAB y sobre las que nos extendere- mos algo m´s en la ´ltima parte de esta intro- a u ducci´n. o Diversas operaciones se pueden realizar a trav´s de los botones de acceso r´pido, como abrir una nueva sesi´n, e a o imprimir un fichero, obtener ayuda, seleccionar un nuevo directorio de trabajo o ver el n´mero de variables que u estamos utilizando en este momento.1.4 Entorno gr´fico de MATLAB para Linux aSe˜alemos para los usuarios de Linux que algunas versiones antiguas de MATLAB no incluyen un editor propio como nel descrito para Windows por lo que utilizaremos cualquiera de los que Linux tiene disponibles (joe, vi, kedit,...). Eneste caso, la ventana de trabajo tendra una presentaci´n similar a la siguiente: o Destaquemos por ´ltimo que tanto bajo Windows como bajo Linux se puede utilizar cualquier editor que permita ugrabar los ficheros en formato ASCII para elaborar nuestros programas.Gu´ R´pida de Matlabdvips . ıa a 6
  8. 8. Cap´ ıtulo 2Breve Introducci´n a la Programaci´n o oen MATLAB2.1 Principios con MATLAB2.1.1 Entrada y salida en MATLABAl arrancar MATLAB aparecer´ el s´ a ımbolo del sistema (adem´s de algunos mensajes) a >> El s´ ımbolo >> determina la linea de comandos donde podremos escribir y ejecutar los comandos. Para salir deMATLAB teclearemos: >> quit [ENTER]2.1.2 Aritm´tica elemental eComenzaremos viendo con varios ejemplos que las operaciones aritm´ticas habituales se realizan del modo esperado econ los operadores suma: +, resta: −, producto: ∗, divisi´n: /, y exponencianci´n: ˆ. o oEscribamos en linea de comandos lo siguiente: >> 1+2 [ENTER] Suma de dos enteros. ans = 3 >> sin(pi/2) [ENTER] Seno de π/2. ans = 1 >> 2.45*3.1415 [ENTER] Producto de dos n´meros reales. u ans = 7.6967 >> 2,34*3 [ENTER] Ponemos una coma en lugar de un punto ans = 2 ans = 102 ¿Qu´ ha hecho MATLAB? e >> 2E-2*3E8 [ENTER] Uso del exponente.Gu´ R´pida de Matlabdvips . ıa a 7
  9. 9. 2.1 Principios con MATLAB m at ans = 6000000 >> log(10) [ENTER] Logaritmo neperiano. ans = 2.3026 >> (3+2^3*i)+(-1+5*i) [ENTER] Suma de complejos. ans = 2.0000+13.0000i >> (1-2*i)*(2+2*i) [ENTER] Producto de complejos. ans = 6.0000-2.0000i Existen otras muchas funciones disponibles en MATLAB y que son an´logas a las que maneja Derive, Maple u aotros; as´ por ejemplo: ı arco seno: asin(x), arco tangente: atan(x), ra´ cuadrada: sqrt(x), logaritmo en base 10: log10(x), . . . ız Si no queremos que aparezca por pantalla el resultado de una operaci´n tendremos que poner al final de la linea opunto y coma ”;” . >> tan(pi/4) [ENTER] Tangente de π/4. ans = 1.0000 >> tan(pi/4); [ENTER] La misma operaci´n pero sin salida por pantalla. o >>2.1.3 Diferentes formatos para los datosExisten diferentes formatos de salida para los datos en MATLAB. Veamos algunos ejemplos. >> d=1/33 d= 0.0303 >> format long, d [ENTER] Formato largo. d= 0.03030303030303 >> format short e, d [ENTER] Formato corto con mantisa y exponente. d= 3.0303e-002 >> format long e, d [ENTER] Formato largo con mantisa y exponente. d= 3.030303030303030e-002 >> format rat, d [ENTER] Formato racional. d= 1/33Se puede realizar algunas ”operaciones” con alguna indeterminaci´n. o >> 1/0 [ENTER] Divisi´n por cero. o ans = Inf >> 5*Inf [ENTER] Multiplicaci´n por infinito. o ans = InfPara la primera de ellas nos avisa que divide por cero.Gu´ R´pida de Matlabdvips . ıa a 8
  10. 10. 2.2 Asignaciones m at2.2 AsignacionesUno de los elementos fundamentales en la programaci´n son la variables: o Variable: Objeto que puede tomar el mismo valor a lo largo de todo el programa o bien puede ir cambiando alejecutar diferentes acciones. El nombre de cada variable puede ser el que el programador quiera siempre que no coincida con alguna palabraclave de MATLAB, en cuyo caso nos informar´ mediante un mensaje de error. De todos modos es recomendable que ael nombre que elijamos para cada variable sea alusivo a su contenido o a su aplicaci´n. o Destaquemos un hecho importante: MATLAB distingue entre may´sculas y min´sculas por lo que u u x y X no ser´n alas mismas variables ni lo ser´n tampoco a Nodos, nodos y NODOS. Para realizar la asignaci´n de valores a las variables en MATLAB no hace falta declarar el tipo de dato que se va a oasignar (entero, real, complejo o car´cter) ni el tama˜o del mismo (escalar, vector o matriz del tama˜o que sea). a n n Seudoc´digo: La asignaci´n de un valor o o a a una variable llamada VARIABLE escribiremos VARIABLE ←− adonde a puede ser una constante, el valor de otra variable o el valor de una expresi´n aritm´tica. o e 1) Comencemos con algunos ejemplos elementales de asignaciones y alguna de las operaciones que se pueden realizar. >> a=2 [ENTER] Asignaci´n del valor 2 a la variable a. o a= 2 >> x=a [ENTER] Asignaci´n del valor 2 a la variable x. o x= 2 >> x=x+2 [ENTER] Asignaci´n del valor 4 a la variable x. o x= 4 >> b=1:1:10 [ENTER] Asignamos a b el vector de datos [1,2,3,4,...,10] b= 1 2 3 4 5 6 7 8 9 10 >> a+b [ENTER] Sumamos un escalar y un vector. ans = 3 4 5 6 7 8 9 10 11 12 ¿Qu´ ha hecho MATLAB? e >> a*b [ENTER] Producto de un vector y un escalar. ans = 2 4 6 8 10 12 14 16 18 20 2) Si sumamos vectores de tama˜o diferente tenemos lo siguiente. n >> c=1:5:25 [ENTER] Declaramos el vector c. c= 1 6 11 16 21 >> b+c [ENTER] Sumamos los vectores b y c. ??? Error using ==> + Matrix dimensions must be agree 3) Podemos multiplicar vectores, bien como producto escalar de ellos o bien componente a componente. >> b=0:2:20 [ENTER] Declaramos el vector b. b= 0 2 4 6 8 10 12 14 16 18 20 >> c=0:1:10 [ENTER] Declaramos el vector c. c= 0 1 2 3 4 5 6 7 8 9 10 >> b.*c [ENTER] Producto de dos vectores componente a componente. ans = 0 2 8 18 ...200Gu´ R´pida de Matlabdvips . ıa a 9
  11. 11. 2.2 Asignaciones m at >> b’*c [ENTER] Matriz resultado de multiplicar b traspuesto por c (ver pantalla) >> b*c’ [ENTER] Producto de b por c traspuesto (producto interior) ans = 770 4) No s´lo se pueden sumar vectores o multiplicar por una constante si no que se puede calcular el logaritmo de un o vector o el seno de un vector, etc... obteniendo el logaritmo o el seno de cada una de sus componentes. >> b=1:10; [ENTER] Declaramos el vector b. >> log(b) [ENTER] Logartimo del vector b. ans = Columns 1 through 7 Siete primeras columnas. 0 0.6931 ...1.9459 Columns 8 through 10 Tres ´ltimas columnas. u 2.0794 2.1972 2.3026 >> sin(b) [ENTER] Seno del vector b. ans = Columns 1 through 7 Siete primeras columnas. 0.8415 0.9093 ...0.6570 Columns 8 through 10 Tres ´ltimas columnas. u 0.98954 0.4121 -0.5440 >> c=1:1:5 [ENTER] c= 1 2 3 4 5 >> 2.^c [ENTER] 2 elevado a las potencias que determina c. ans = 2 4 8 16 32 >> c.^ 2 [ENTER] Las componentes de c elevadas al cuadrado. ans = 1 4 9 16 25 Un punto delante de los operadores .*, .^ y ./ indica que las operaciones se realizan componente a componente en los vectores o las matrices. 5) En relaci´n a la aritm´tica matricial mostramos algunas de las funciones m´s habituales. o e a >> A=[1 2 3;4 5 6;7 8 9] [ENTER] Definici´n de la matriz A. o A= 1 2 3 4 5 6 7 8 9 >> A(2,2) [ENTER] Elemento (2,2) de la matriz A. ans = 5 >> A(:,3) [ENTER] Muestra la tercera columna de la matriz A. ans = 3 6 9 >> size(A) [ENTER] Tama~o de la matriz A. n ans = 3 3 >> B=[1 2 1;2 1 2;1 2 1] [ENTER] B= 1 2 1 2 1 2 1 2 1 >> A*B [ENTER] Producto matricial habitual.Gu´ R´pida de Matlabdvips . ıa a 10
  12. 12. 2.3 Ficheros *.m m at ans = 8 10 8 20 25 20 32 40 32 Un comando de uso frecuente es who que nos permite conocer el n´mero y nombre de las variables usadas a lo ulargo del programa o de la sesi´n. Su formato es: o >> who [ENTER] Your variables are: A u vfil x ans vcol w ydonde las variables corresponden a otra ejecuci´n del programa. o El comando whos nos muestra, adem´s del nombre de las variables, informaci´n adicional de cada variable, distin- a oguiendo si es vector o escalar. >> whos [ENTER] Name Size Bytes Class A 3x4 96 double array ans 4x1 32 double array u 1x1 8 double array Grand total is 28 elements usign 224 bytes vcol 4x1 32 double array vfil 1x4 32 double array w 1x1 8 double array x 1x1 8 double array y 1x1 8 double array Debemos tener en cuenta que MATLAB en cada sesi´n mantiene en memoria todas las variables utilizadas hasta oese momento y que ´nicamente el comando u clear hace que elimine el valor de todas las variables. >> clear [ENTER]Si ahora tecleamos who no se produce ninguna salida.2.3 Ficheros *.mComo ya hemos dicho la filosof´ de MATLAB se asemeja m´s a la de un lenguaje de programaci´n que a la de un ıa a osoftware matem´tico de resoluci´n de problemas simb´licos. En concreto, permite ejecutar una secuencia de comandos a o oescritos en un fichero ASCII sin m´s que hacer una llamada al mismo, como si se tratase de un programa en lenguaje aC, Fortran u otros, pero sin necesidad de ”linkar” y ”compilar” dicho fichero. Estos ficheros se pueden editar con cualquier editor o procesador de textos, como el que incluye el propio MATLAB,el usual Word (siempre que almacenemos el fichero sin formato), edit (de MSDOS), kedit, joe, vi,. . . , siempre quepermita guardalo en formato texto. Un sencillo ejemplo nos pertimitir´ aclarar estas ideas. a 1) En primer lugar abrimos un fichero con el editor elegido. 2) Tecleamos lo siguiente: numerador=12^3 % Asignamos el valor 12^3 a la variable numerador. denominador=3.2E-3 % Asignamos el valor 3.2E-3 a la variable denominador. x = numerador/denominador % Calculamos la division de la anteriores variables.Gu´ R´pida de Matlabdvips . ıa a 11
  13. 13. 2.4 Estructuras de control m at 3) Grabamos el fichero en el directorio en el que hemos arrancado MATLAB con el nombre “prueba1.m”. Es un error frecuente grabar el fichero en un directorio diferente al que tenemos fijado para MATLAB. Si no se hubiese grabado en ese directorio podemos cambiar desde MATLAB el directorio de trabajo haciendo uso de los comandos del sistema (para LINUX: ls, cd, mv,. . . para WINDOWS: dir, cd, move,. . . ) 4) Volvemos a la ventana de MATLAB y tecleamos >> prueba1 numerador = 1728 denominador = 0.0032 x= 540000 En lo sucesivo ´sta ser´ la forma de trabajar con MATLAB: escribir en un fichero la secuencia de comandos que e avamos a ejecutar. Con este planteamiento elaboraremos programas (secuencia de comandos) que nos permitan resolverproblemas con un cierto grado de complejidad.2.4 Estructuras de control ´Las estructuras de control permiten organizar adecuadamente las acciones a realizar por el procesador. Estas son detres tipos: • Secuenciaci´n: Es la estructura de control m´s sencilla y f´cil de utilizar y o a a consiste en la enumeraci´n consecutiva de acciones a realizar. o No existe seudoc´digo expl´ o ıcito para esta estructura aparte de la propia escritura de las acciones • Selecci´n: Esta estructura act´a sobre una proposici´n o condici´n boo- o u o o leana con dos posibles valores mutuamente excluyentes: Ver- dadero o Falso Si C es la condici´n y A y B son las acciones o secuencia de acciones o ´ SEUDOCODIGO: ´ CODIFICACION EN MATLAB: si C entonces if C acci´n A o acci´n A o sino else acci´n B o acci´n B o finsi end Como ejemplo escribamos el siguiente fichero if n>2 % Si el valor de n es menor que 2 haz: disp(’Has cometido un error’) % Muestra un mensaje por pantalla. end if n>0 & n<2 % Si n>0 Y n<2 entonces haz... disp(’Has acertado’) end if n<-2 | n>10 % Si n<-2 O n>10 entonces haz...Gu´ R´pida de Matlabdvips . ıa a 12
  14. 14. 2.4 Estructuras de control m at disp(’Es otra prueba’) end Observemos que la opcion else no es necesario utilizarla. Veamos otro ejemplo con la opci´n else. o if n>0 & n<2 % Si n>0 y n<2 entonces haz... disp(’Estas en el intervalo’) else % en caso contrario haz... disp(’No estas en el intervalo’) end Las estructuras de selecci´n se pueden anidar de diferentes formas. Mostramos una de esas posibilidades. o ´ SEUDOCODIGO: si C1 entonces ´ CODIFICACION EN MATLAB: acci´n A1 o if C1 sino acci´n A1 o si C2 elseif C2 acci´n A2 o acci´n A2 o finsi else acci´n A3 o acci´n A3 o finsi end Como ejemplo podemos escribir el siguiente fichero. if abs(x)<2 % Si el valor absoluto de x es menor que 2 haz disp(’La variable x esta acotada’) elseif x>-3 % Si no es as’{i} y si x>-3 haz disp(’La variable no esta acotada’) end Existen otras estructuras de selecci´n con fines m´s espec´ o a ıficos como es la estructura switch que se puede consultar en cualquier manual de MATLAB. • Iterativa. La estructura iterativa responde al caso de las acciones consis- tentes en la repetici´n de una o de varias subacciones o Existen varios tipos de estructuras iterativas que se pueden englobar en una sola pero nosotros vamos a presentar los casos particulares m´s habituales: a 1) Sin n´mero predeterminado de iteraciones y con la condici´n al principio. Si C es la condici´n y A es la u o o acci´n o secuencia de acciones: o ´ SEUDOCODIGO: ´ CODIFICACION EN MATLAB: mientras C hacer while C acci´n A o acci´n A o finmientras endGu´ R´pida de Matlabdvips . ıa a 13
  15. 15. 2.4 Estructuras de control m at Proponemos el siguiente ejemplo n=1; while prod(1:n)<1e100 n=n+1; disp(’Nos llegamos en’),n end 2) Sin n´mero predeterminado de iteraciones y con la condici´n al final. Si C es la condici´n y A es la acci´n u o o o o secuencia de acciones: ´ CODIFICACION EN MATLAB: ´ SEUDOCODIGO: while 1 hacer acci´n A o acci´n A o if C,break, end mientras C end 3) Con n´mero predeterminado de iteraciones. Esta estructura repite una acci´n o una secuencia de ellas un u o n´mero fijo de veces que viene determinado por una variable u contador que toma valores entre un valor inicial vi y un valor final vf, cuando la variable contador se incrementa un valor paso que puede ser negativo. Si A es una acci´n o secuencia de acciones: o ´ SEUDOCODIGO: para contador=vi hasta vf incr. paso ´ CODIFICACION EN MATLAB: hacer for contador=vi,vf,paso acci´n A o acci´n A o finpara end Como ejemplo editemos el fichero prueba.m con los siguientes comandos for n=1:1:10 % Cuenta desde 1 hasta 10 de 1 en 1. y(n)=n^2; % Declara un vector cuyas componentes son de la forma n^2. x(n)=2*y(n); % Declara un vector cuyas componentes son de la forma 2*y_n. end % Fin del bucle. y,x % Muestra por pantalla los vectores declarados. Ejecutamos en MATLAB el fichero prueba y obtenemos lo siguiente >> prueba [ENTER] y = 1 4 9 16...100 x= 2 8 18...200 A diferencia de lo que ocurre con algunos lenguajes de programaci´n y con la mayor parte del software o matem´tico, la variable a contador puede recorrer los valores que queramos como se muestra en el siguiente ejemplo (modificamos el fichero anterior). for n=[1 3 7 2 5.5 3] % Recorre los valores 1 3 7 2 5.5 y 3 de n. x(n)=2*n; % Declara un vector . end % Fin del bucle.Gu´ R´pida de Matlabdvips . ıa a 14
  16. 16. 2.5 Lectura y escritura de datos (Entrada/salida de datos) m at x % Muestra por pantalla los vectores declarados. La ejecuci´n del fichero prueba muestra o >> prueba [ENTER] x= 2 4 6 0 0 11 14 >> prueba [ENTER] Destaquemos que el vector muestra los valores ordenados desde la primera componente hasta la ´ltima que u contiene la variable n (contador), en el caso de encontrarse ´ ındices no enteros redondea (de todos modos se avisa con un warning) y en el caso de faltar ´ ındices ´stos se rellenan con valores nulos. e2.5 Lectura y escritura de datos (Entrada/salida de datos)2.5.1 Escritura de datosLa escritura de datos nos permite enviar el valor de una o m´s variables externamente, bien a la pantalla del ordenador, abien a un fichero.seudoc´digo. Si el nombre de la variable es o VARIABLE la acci´n escritura se escribe como o escribe VARIABLE 1) Para que el valor de VARIABLE aparezca por pantalla bastar´ teclear el nombre de la variable a >> VARIABLE [ENTER] 2) Para escribir el valor de una variable en un fichero con un formato establecido utilizaremos los siguientes comandos: • Abrimos el fichero en el que vamos a guardar los datos: >> fid=fopen(’nombre-fichero’,permisos) donde – fid es el identificador que Matlab utiliza para reconocer el fichero. – nombre-fichero es el nombre con el que aparecer´ en nuestro directorio a – permiso es un cadena que indica la operaci´n a realizar con el fichero, o ’r’ −→ Lectura ’w’ −→ Escritura (se crea si es necesario) ’a’ −→ A˜adir a un fichero ya existente (se crea si es necesario) n ’r+’ −→ Lectura y escritura ’w+’ −→ Trunca el fichero o lo crea para lectura o escritura ’a+’ −→ Lectura y a˜adir a un fichero ya existente (se crea si es necesario) n • Escribimos el contenido de la variable o variables datos con el formato que indiquemos en format con el siguiente comando >> fprintf(fid,format,datos) • Cerramos el fichero abierto con el comando >> fclose(fid) En caso de que se produzca alg´n error al cerrar el fichero MATLAB devolver´ el valor u a −1 y si no es as´ ı devolver´ 0. aGu´ R´pida de Matlabdvips . ıa a 15
  17. 17. 2.5 Lectura y escritura de datos (Entrada/salida de datos) m at Editemos un fichero que haga uso de los anteriores comandos t=0:1:10 % Crea un vector con los datos 0,1,2,3,...,10. y=t.^2 % Crea un vector con los datos 0,1,4,9,...,100. fid=fopen(’parabola.dat’,’w’) % Crea un puntero a un fichero llamado % parabola.dat para escribir en el (w) x=[t;y]; % Crea la matriz de datos que vamos a escribir en % el fichero. fprintf(fid,’%1.1f % 2.6e’,x) % Escribe en el fichero los datos con el % siguiente formato: % La primera columna [un entero].[un decimal] % La segunda [dos enteros].[6 decimales en % modo exponencial] fclose(fid) % Manda los datos al fichero fid En los manuales se pueden encontrar m´s detalles sobre el formato de los datos. a Cuando no sea necesario manejar directamente un fichero con los datos sino que ´nicamente necesitamos guardar ulos datos para otra su uso en otra sesi´n, podemos utilizar el comando o save. El formato se muestra en el siguienteejemplo: >> a=[1 2 3;4 5 6]; Crea la variable a >> b=2:2:10; Crea la variable b >> save datos1 Guarda el valor de todas las variables en el fichero datos1.mat >> save datos2 a Guarda en el fichero datos2 la variable a >> clear eliminamos todas las variables >> whos No hay variables declaradas >> load datos2 El comando load lee el fichero de datos datos2.mat >> a a= 1 2 3 4 5 6 >> clear >> load datos1 >> a,b a= 1 2 3 4 5 6 b= 2 4 6 8 10 Otras opciones como el comando diary se pueden consultar en los manuales.Gu´ R´pida de Matlabdvips . ıa a 16
  18. 18. 2.5 Lectura y escritura de datos (Entrada/salida de datos) m at2.5.2 Lectura de datosLa lectura de datos nos permite asignar un valor a una o a m´s variables mediante acciones externas. bien desde el ateclado del ordenador ´ bien desde un fichero. oseudoc´digo. Si el nombre de la variable es o VARIABLE la acci´n lectura se escribe como o lee VARIABLE 1) El comando de MATLAB para la lectura de un dato desde el teclado es input que se utiliza como aparece en el ejemplo >> z=input(’El valor de la variable z es:n’) [ENTER] El valor de la variable z es: 12 z= 12 2) Para leer el valor de una variable en un fichero con un formato establecido se puede utilizar el comando load. Mostremos el siguiente ejemplo: Dado el fichero data.dat 1 2 3 4 5 6 7 8 9 podemos teclear >> load data.mat [ENTER] Carga los datos del fichero data.dat en la variable data >> data data = 1 2 3 4 5 6 7 8 9 3) Otra opci´n para leer el valor de una variable en un fichero con un formato establecido hace uso de los comandos o descritos para la apertura y el cierre de un fichero, y de otro para la lectura propiamente dicha, en concreto: >> A=fscanf(fid,format,tama~o) n donde • fid es el identificador del fichero. • format es un cadena con las mismas opciones que fprintf. • tama~o es un argumento optativo que permite limitar el n´mero de datos leidos. El valor que puede tomar n u este argumento es uno de los siguientes – N: Lee un vector de hasta N componentes. – inf: Lee datos hasta el final del fichero. – [N,M]: Lee una matriz de tama˜o N x M por columnas (M puede se inf). n En el siguiente ejemplo se muestra como se puede leer el fichero creado en el ejemplo anteriorGu´ R´pida de Matlabdvips . ıa a 17
  19. 19. 2.6 Programaci´n modular: Funciones o m atfid=fopen(’parabola.dat’,’r’) % Crea un puntero a un fichero llamado % parabola.dat para leer de ’el (r)z=fscanf(fid,’%1.1f %2.6e’,11) % Lee del fichero los datos con el % siguiente formato: % La primera columna [un entero].[un decimal] % La segunda [dos enteros].[6 decimales en % modo exponencial]fclose(fid) % Cierra el fichero identificado por fid2.6 Programaci´n modular: Funciones oEn programaci´n, al realizar una operaci´n, aparecen con frecuencia los siguientes problemas: o o • La tarea debe realizarse varias veces. • Dicha tarea es realizada en varios programas. • Aparece en el contexto de un programa muy extenso que conviene simplificar.Para resolver este tipo de problemas se usan lo que se llaman funciones que no son m´s que programas que son utilzados apor otros programas. Cualquier programa puede considerarse como una funci´n subceptible de ser usado por otro programa o La posibilidad de llamar a estas funciones tantas veces como sea necesario nos permite no tener que escribir elprograma cada vez que lo necesitemos. Por otra parte, las funciones nos permiten descomponer el programa ensubprogramas m´s sencillos. a En relaci´n con el modo de definir funciones haremos las siguientes observaciones: o 1) Se guarda como un fichero funcion.m cuyo nombre ha de coincidir con el de la funci´n. o 2) Ha de estar encabezado por la linea function[salida1,...,salidaN]=nombre(entrada1,...,entradaM) seguido por los comandos del programa. 3) La funci´n termina su tarea con el ´ltimo comando del programa, sin necesidad de ning´n comando espec´ o u u ıfico, aunque ´sta acci´n es posible con el comando e o return. 4) Desde la propia funci´n se puede hacer llamadas a otras funciones o incluso a ella misma (lo que se conoce como o recursividad). 5) Las variables usadas en cada funci´n toman un valor local. Por tanto, una variable con el mismo nombre en una o funci´n y en el programa principal mantiene el valor que tome en cada uno de los contextos. o Escribimos un sencillo ejemplo que hace llamada a una funci´n llamada o factorialm=input(’Da el numero de sumandos n’);x=0;for n=1:1:m x=x+1/factorial(n);endxGu´ R´pida de Matlabdvips . ıa a 18
  20. 20. 2.7 Otras Observaciones m at donde la funci´n o factorial viene definida porfunction[k]=factorial(n)k=1;for m=2:1:n k=k*m;end2.7 Otras ObservacionesPara terminar esta introducci´n a˜adimos algunas observaciones m´s. o n a 1) Los s´ ımbolos “,” “;” “:” sirven para: separar operaciones dentro de un l´ ınea (“,”); para delimitar campos dentro de un comando (“:”) ´ para evitar que el resultado de un comando no salga por pantalla (“;”). o >> 2+3; 3+4 [ENTER] ans = 7 Los puntos “...” se usar´n para continuar un comando cuando no nos quepa completo en un sola l´ a ınea. 2) Con las flechas ↑ y ↓ recuperamos las operaciones realizadas anteriormente. 3) Para obtener ayuda sobre MATLAB debemos de teclear cualquiera de los comandos >> help [ENTER] >> helpwin [ENTER] Aparece una ventana de ayuda en Windows. 4) El s´ ımbolo “%” indica a MATLAB que no tenga en cuenta lo que se encuentra a continuaci´n en la misma l´ o ınea (comentario). Esto vendr´ bien cuando queremos explicar los programas que hagamos. a 5) Desde la l´ ınea de comandos de MATLAB podemos ejecutar comandos propios del sistema (MSDOS, Linux,...) como por ejemplo >> dir >> cd directorio >> del ficheroGu´ R´pida de Matlabdvips . ıa a 19
  21. 21. Cap´ ıtulo 3Gr´ficos con MATLAB a3.1 Gr´ficos de dos dimensiones aEl usuario de MATLAB puede dibujar f´cilmente un conjunto de pares de puntos, y una forma de hacerlo es mediante ael comando plot.3.1.1 El comando plotEl uso del comando plot es el siguiente >> plot(argumentos)y los argumentos que toma pueden ser Argumentos Explicaci´n o n plot(x) x ∈IR Dibuja los pares de puntos (i, xi ), 1 ≤ i ≤ n, unidos por segmentos. plot(x,y) x, y ∈ I n R Dibuja los pares de puntos (xi , yi ), 1 ≤ i ≤ m, unidos por segmentos. Dibuja en el plano complejo los pares de puntos ( (zi ), (zi )), 1 ≤ plot(z) z ∈ Cn i ≤ n , unidos por segmentos. Para cada j , 1 ≤ j ≤ n, dibuja los pares de puntos (i, aij ), 1 ≤ i ≤ m, unidos por segmentos. plot(A) A ∈ Mm×n En la misma gr´fica, cada l´ a ınea se dibuja con un color y con un tipo de l´ ınea diferente. Independientemente de que x sea un vector fila o columna, ejecuta plot(x,y) donde y es una fila o columna de A, para la elecci´n de la o plot(x,A) x ∈ I n , A ∈ Mm×n R fila y columna se tiene en cuenta la coincidencia de dimensiones. En la misma gr´fica, cada l´ a ınea se dibuja con un color y con un tipo de l´ ınea diferente. En las mismas condiciones que el caso anterior dibuja los pares orde- plot(A,x) x ∈ I n , A ∈ Mm×n R nados siendo x el valor de las ordenadas Ejecuta plot(x,y), donde x es una columna de A e y es una columna de B. plot(A,B) A,B ∈ Mm×n En la misma gr´fica, cada l´ a ınea se dibuja con un color y con un tipo de l´ ınea diferente. Veamos algunos ejemplos. Al ejecutarlos por primera vez aparece una nueva ventana que es la ventana gr´fica, en aesta se muestra el dibujo realizado por plot (o cualquiera de los comandos que introduciremos), sin embargo, si vamosGu´ R´pida de Matlabdvips . ıa a 20
  22. 22. 3.1 Gr´ficos de dos dimensiones a m atrealizando los ejemplos uno a uno sin cerrar la ventana gr´fica ´sta se oculta pasando a ser una ventana secundaria a een la que se van sustituyendo las gr´ficas por las que actualmente dibujamos. Cada vez que queramos ver una gr´fica a atenemos que hacerla ventana principal ya que no se realiza autom´ticamente. a Dibujemos el vector de ordenadas y el de abcisas: 25 >> x=[-4 -2 0 1 3 5]; [ENTER] 20 >> y=[16 4 0 1 9 25]; [ENTER] >> plot(x,y); [ENTER] 15 10 5 0 −4 −3 −2 −1 0 1 2 3 4 5 Dibujemos un vector de n´meros complejos: u 1 0.5 >> z=[1 2+i 3 2-i 3-2*i]; [ENTER] >> plot(z); [ENTER] 0 −0.5 −1 −1.5 −2 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3Para dibujar n´meros complejos tambi´n se pueden utilizar los comandos u e polar, quiver, feather, compass, rosey pol2cart. (consultar la secci´n 3.2). o Dibujemos una matriz: 25 >> A=[1 1 0.5; 2 4 -0.5; 3 9 0.5; 4 16 20 -0.5; 5 25 0.5]; [ENTER] >> plot(A); [ENTER] 15 10 5 0 −5 1 1.5 2 2.5 3 3.5 4 4.5 5Gu´ R´pida de Matlabdvips . ıa a 21
  23. 23. 3.1 Gr´ficos de dos dimensiones a m at Si en el ejemplo anterior elegimos las ordenadas obtenemos: 25 20 >> x=[0 0.1 0.2 0.3 0.4]; [ENTER] >> A=[1 1 0.5; 2 4 -0.5; 3 9 0.5; 4 16 15 -0.5; 5 25 0.5]; [ENTER] 10 >> plot(x,A); [ENTER] 5 0 −5 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 1.5 Tambi´n podemos dibujar diferentes funciones en el mismo e gr´fico. a 1 >> x=0:0.1:2; [ENTER] 0.5 >> A=[sin(pi*x); 0.5+0.5*x]; [ENTER] >> plot(x,A); [ENTER] 0 −0.5 −1 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2 Podemos intercambiar los ejes sin m´s que escribir a 1.8 1.6 1.4 >> plot(A,x) [ENTER] 1.2 1 0.8 0.6 0.4 0.2 0 −1 −0.5 0 0.5 1 1.53.1.2 Opciones del comando plotExiste una serie de opciones para realizar gr´ficos con MATLAB entre las que destacamos las siguientes: a Explicaci´n o Dibuja la gr´fica de abcisas a x y ordenadas y con las opciones de estilo plot(x,y,cad) dadas por cad. Dibuja la gr´fica de abcisas a x1 y ordenadas y1 con las opciones de estilo dadas porcad1, la gr´fica de abcisas x2 y ordenadas y2 con las a plot(x1,y1,cad1, x2,y2,cad2,...) opciones de estilo dadas por cad2 y as´ con el resto de ternas. Si se ı omiten las opciones de estilo MATLAB escoge el color y estilo para cada gr´fico. a Los estilos de l´ ıneas y colores se determinan con una variable caracter de a lo sumo tres de caracteres que hemosGu´ R´pida de Matlabdvips . ıa a 22
  24. 24. 3.1 Gr´ficos de dos dimensiones a m atdenotado porcad. Las ternas se construyen con un car´cter de cada columna sin importar el orden. As´ por ejemplo, a ıcad=’ys-’ dibuja una l´ ınea amarilla, s´lida y con cuadrados como marcadores, exactamente igual que cad=’s-y’ o ocad=’sy-’ aunque siempre es mejor ser hom´geneos en cada uno de los usos de estos par´metros. Los tama˜os de los o a ns´ ımbolos, las anchuras de las l´ ıneas y otros aspectos del dibujo pueden ser modificados como ya veremos posteriormente. Si no se especifica el estilo, MATLAB utiliza por defecto una l´ ınea azul continua sin marcadores para los puntosdibujados. Marcadores L´ ıneas Colores . punto - s´lida o y amarillo * estrella -- discont´ ınua g verde x cruz -. punto-raya m magenta o c´ ırculo : punteada b azul + m´s a c cyan s cuadrado w blanco d rombo r rojo p pent´gono a k negro h hex´gono a v tri´ngulo abajo a < tri´ngulo izquierda a > tri´ngulo derecha a ^ tri´ngulo arriba a Veamos algunos ejemplos. Dibujamos una gr´fica con c´ a ırculos. 0.5 >> x=-pi:0.05:pi; [ENTER] 0.4 0.3 >> plot(x, sin(x).*cos(x),’o’); 0.2 [ENTER] 0.1 0 −0.1 −0.2 −0.3 −0.4 −0.5 −4 −3 −2 −1 0 1 2 3 4 Tecleamos el siguiente fichero:n=50; % Asignamos valores a las variablesa=0;b=3;x=linspace(a,b,n); % Construimos el vector xe1=exp(-x.^2); % y los vectores de abcisase2=(x.^2).*exp(-x.^2);e3=x.*exp(-x.^2);e4=exp(-x);plot(x,e1,’+’,x,e2,’*’,x,e3,’o’,x,e4,’x’); % Dibujamos las gr’aficasGu´ R´pida de Matlabdvips . ıa a 23
  25. 25. 3.1 Gr´ficos de dos dimensiones a m at 1 La ejecuci´n del fichero anterior desde la ventana de MATLAB o 0.9 nos muestra como se pueden superponer varias gr´ficas, en a 0.8 2 2 2 concreto las de las funciones e−x , x2 e−x , x e−x y e−x , 0.7 diferenci´ndolas mediante distintos estilos de l´ a ınea. 0.6 0.5 0.4 0.3 0.2 0.1 0 0 0.5 1 1.5 2 2.5 33.1.3 Otros comandosConcluimos la secci´n con dos comandos gr´ficos de uso frecuente en MATLAB. El primero de ellos es el comando o aerrorbar, que nos permite incorporar a la gr´fica, mediante barras verticales, el error cometido. Este comando se ausa como el comando plot, pero con un argumento m´s que indica el margen de error. En concreto: a Argumentos Explicaci´n o Ejecuta plot(x,y,cad) superponiendo las barras de error x, y, e ∈ I n , R dadas por el vectore (de valores positivos) sim´tricamente e errorbar(x,y,e,cad) cad es una por encima y por debajo de la gr´fica. El argumento cad es a variable cadena opcional. x, y, e ∈ I n , R Ejecuta plot(x,y,cad), superponiendo en la gr´fica corre- a errorbar(x,y,u,e,cad) cad es una spondiente las barras de error dadas por los vectores positivos variable cadena u (las cotas superiores) y l (las cotas inferiores). En este ejemplo generamos una serie de datos con cotas de 3.5 error de un 15%. Mostramos la gr´fica con los errores como a sigue 3 >> x=linspace(0,10,50); [ENTER] 2.5 >> y=exp(sin(x)); [ENTER] 2 >> delta=0.15*y; [ENTER] 1.5 >> errorbar(x,y,delta); [ENTER] 1 0.5 0 −2 0 2 4 6 8 10 12 fplot, que nos permite dibujar funciones, especificadas mediante ’fcn’. Estas El segundo de los comandos espueden ser predefinidas por MATLAB o definidas por el usuario, en este caso ’fcn’ indica una referencia a un M-filede nombre fcn.m. M´s concretamente, aGu´ R´pida de Matlabdvips . ıa a 24
  26. 26. 3.2 Gr´ficos con n´meros complejos a u m at Argumentos Explicaci´n o Dibuja el gr´fico de la funci´n especificada en la cadena a o lim ∈ I 2 , R fplot(’fcn’, lim, cad) fcn en el intervalo de abcisas determinado por lim. ’fcn’, cad cadenas La cadena cad que indica el estilo de l´ ınea es opcional. lim ∈ I 4 , R Idem que el anterior pero lim determina tambi´n las e fplot(’fcn’, lim, cad) ’fcn’, cad cadenas ordenadas. lim ∈ I (2 ´ 4) , R o fplot(’fcn’, lim, cad, En las mismas condiciones, pero especificando la pre- tol ∈ I R, tol) cisi´n con o tol que por defecto es 2e − 3. ’fcn’, cad cadenas Dibujemos la funci´n seno en el intervalo o [0, 10]: 1 >> fplot(’sin(x^2)’, [0 10]) [ENTER] 0.8 0.6 0.4 0.2 0 −0.2 −0.4 −0.6 −0.8 −1 0 1 2 3 4 5 6 7 8 9 10 Destaquemos que MATLAB obtiene autom´ticamente la escala de los ejes de la gr´fica, utilizando el m´ a a ınimo y elm´ximo de los datos, tanto en el eje de las ordenadas como en el de las abcisas. Para modificar dicha escala podemos autilizar el comando axis (ver secci´n 3.4). o3.2 Gr´ficos con n´ meros complejos a u Dibuja en coordenadas polares. tetha son los Los elementos del vector polar(theta,r) r son las distancias al origen. ´ngulos en radianes, y los elementos del vector a Convierte las coordenadas polares dadas por theta y r en coordenadas car- pol2cart(theta,r) tesianas. Vamos a ver dos ejemplos. >> r = linspace(0,2); [ENTER] 2 >> theta = linspace(0,10*pi); [ENTER] 1.5 >> [x,y] = pol2cart(theta,r); [ENTER] 1 >> z = x+i*y; [ENTER] 0.5 >> plot(z); [ENTER] 0 −0.5 −1 −1.5 −2 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2Gu´ R´pida de Matlabdvips . ıa a 25
  27. 27. 3.2 Gr´ficos con n´meros complejos a u m at En el segundo de los ejemplos dibujaremos la funci´n o t5 r = ecost − 2 cos 4 t + sin 12tanto en coordenadas polares como en coordenadas cartesianas. 90 5.0543 120 60 >> t = linspace(0,22*pi,1100);[ENTER] 150 2.5272 30 >> r = exp(cos(t))-2*cos(4*t)+sin(t.5 /12);[ENTER] 180 0 >> polar(t,r);[ENTER] 210 330 240 300 >> [x,y] = pol2cart(t,r);[ENTER] 270 >> plot(x,y);[ENTER] 4 2 0 −2 −4 −3 −2 −1 0 1 2 3 4 Un vector de n´meros complejos pueden ser dibujado tambi´n con los comandos u e quiver, feather, compass yrose, tal y como se detalla a continuaci´n. o Dibuja una flecha para cada par de coordenadas dadas. Muestra el argumento quiver(x,y) y magnitud del n´mero complejo que tiene ese par de coordenadas reales. u Dibuja una flecha en las coordenadas (xi , yi ) con el argumento y magnitud quiver(x,y,dx,dy) dados por(dxi , dyi ). El par´metro s indica la escala con la que se dibujan las flechas, que por a quiver(x,y, ...,s) defecto toma el valor 1. Dibuja flechas mostrando las magnitudes y argumentos de los elementos de feather(z) la matriz complejaz , estas flechas parten de puntos equidistantes del eje x. Como feather pero en este caso todas ellas tienen como origen el origen de compass(Z) coordenadas. Dibuja un histograma de ´ngulos, es decir, un histograma circular mostrando a rose(v,n) la frecuencia de los ´ngulos dados en el vector a v ; se utilizan n intervalos. En el caso de no especificar n, el valor por defecto es 36. Veamos algunos ejemplos. Sea Z la matriz compleja definida como:   1+i 2 − i 3 − 5i Z =  −4 + 3 i 5 − 5 i i  −1 − i 3 + 3 i −1Los siguientes comandos producen en la misma ventana las diferentes gr´ficas. a >> Z=[1+i 2-i 3-5*i; -4+3*i 5-5*i i ;-1-i 3+3*i -1]; [ENTER] >> clf; [ENTER] >> subplot(2,2,1); quiver(real(Z),imag(Z)); title(’quiver’); [ENTER] >> subplot(2,2,2); feather(Z); title(’feather’); [ENTER] >> subplot(2,2,3); compass(Z); title(’compass’); [ENTER] >> subplot(2,2,4); rose(angle(Z(:))); title(’rose’); [ENTER]Gu´ R´pida de Matlabdvips . ıa a 26
  28. 28. 3.3 Gr´ficos en otros sistemas coordenados a m at quiver feather 3.5 4 3 2 2.5 2 0 1.5 −2 1 −4 0.5 0 −6 0 1 2 3 4 −5 0 5 10 compass 90 7.0711 rose 2 90 120 60 120 60 150 3.5355 30 150 1 30 180 0 180 0 210 330 210 330 240 300 240 300 270 2703.3 Gr´ficos en otros sistemas coordenados aEl comando plot dibuja gr´ficos en coordenadas cartesianas; sin embargo, tambi´n es posible utilizar otros sistemas a ede coordenadas. Utiliza coordenadas logar´ ıtmicas en el eje x. El resultado es el mismo que semilogx(x,y) utilizarplot(log10(x),y) pero no produce ning´n error si tenemos que u calcular log10 0. Es el mismo comando anterior, pero esta vez la escala logar´ ıtmica est´ en el a semilogy(x,y) eje y. loglog(x,y) Dibuja ambos ejes en escala logar´ ıtmica. Como ejemplo dibujemos un gr´fico en un sistema de coordenadas logar´ a ıtmicas y lo comparamos con el mismogr´fico en coordenadas cartesianas. aGu´ R´pida de Matlabdvips . ıa a 27

×