SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
Gu´ R´pida de Matlab
     ıa a

       ´
       Oscar Angulo, Eduardo Cuesta,
Cesar Gutierrez y Mar´ del Carmen Mart´
 ´        ´          ıa               ınez

               diciembre de 2001
Pr´logo
  o

Este libro inicia una serie de gu´ dedicadas a MATLAB.
                                 ıas


El objetivo de esta gu´ es servir de apoyo para el manejo de MATLAB en las asignaturas en las que se emplea el citado
                      ıa
software y en las que las limitaciones de tiempo no permiten una dedicaci´n muy exhaustiva a su explicaci´n. Hemos
                                                                         o                               o
pretendido mostrar en esta gu´ los comandos y estructuras b´sicas de MATLAB de una manera clara y concisa con
                             ıa                            a
algunos ejemplos que hemos considerado interesantes. Pretendemos as´ mismo que esta gu´ sea una gu´ viva que siga
                                                                   ı                  ıa          ıa
evolucionando con el tiempo, como lo ha hecho hasta ahora, gracias a la experiencia en el uso docente de MATLAB y
gracias a las sugerencias de compa˜eros y alumnos a los cuales les queremos mostrar nuestro agradecimiento.
                                  n


                                                                  Valladolid, diciembre de 2001
                                                                  Los Autores




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                             1
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                     o
ninguna forma o por cualquier medio, ya sea electr´nico, mec´nico, por fotocopia, por registro u otros m´todos, ni
                                                  o         a                                           e
su pr´stamo, alquiler o cualquier otra forma de cesi´n de uso del ejemplar, sin el permiso previo y por escrito de los
     e                                              o
titulares del Copyright.




              ´
Angulo Torga, Oscar; Cuesta Montero, Eduardo; Guti´rrez Vaquero, C´sar; Mart´
                                                  e               e         ınez Mart´
                                                                                     ınez, Mar´ del Carmen:
                                                                                              ıa
Profesores 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
                           ıa




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                              2
Contenidos

1 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                                   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   6

2 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       19

3 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                                                                                           45




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                                       3
Cap´
   ıtulo 1

Introducci´n a MATLAB
          o

1.1       Comentarios previos
Comencemos destacando que la filosof´ del entorno MATLAB no es la de otros paquetes de matem´ticas usuales,
                                   ıa                                                      a
tales 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             a
pues, aunque podemos ejecutar desde la linea de comandos mediante los nombres de dichos operaciones como en los
paquetes mencionados, lo habitual con MATLAB es crear un fichero de texto externo que contenga la secuencia de
comandos 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.
               a



1.2       Iniciando y finalizando una sesi´n con MATLAB
                                         o
MATLAB se arranca pulsando con el rat´n en el icono correspondiente, e inmediatamente aparece la pantalla de la
                                     o
figura   ??.
    Cualquier comando que se escribe tras el cursor de MATLAB ser´ procesado cuando se presione la tecla [ENTER].
                                                                 a
Por ejemplo, el comando que hay que ejecutar para salir de MATLAB es        quit:


    >>        quit [ENTER]

Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                              4
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                                                             o
necesario 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
                    a
el siguiente comando.



1.3      El entorno gr´fico de MATLAB bajo Windows
                      a
La ventana de trabajo de MATLAB es una cl´sica ventana de Windows en la que aparece un men´ de opciones y unos
                                         a                                                u
cuantos 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 con
las 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.
                                  o




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                             5
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
                   a
Se˜alemos para los usuarios de Linux que algunas versiones antiguas de MATLAB no incluyen un editor propio como
  n
el descrito para Windows por lo que utilizaremos cualquiera de los que Linux tiene disponibles (joe, vi, kedit,...). En
este 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
                    u
grabar los ficheros en formato ASCII para elaborar nuestros programas.




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                               6
Cap´
   ıtulo 2

Breve Introducci´n a la Programaci´n
                o                 o
en MATLAB

2.1      Principios con MATLAB
2.1.1      Entrada y salida en MATLAB
Al 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 de
MATLAB teclearemos:



    >>     quit [ENTER]

2.1.2      Aritm´tica elemental
                e
Comenzaremos viendo con varios ejemplos que las operaciones aritm´ticas habituales se realizan del modo esperado
                                                                 e
con los operadores

                              suma:   +, resta: −, producto: ∗, divisi´n: /, y exponencianci´n: ˆ.
                                                                      o                     o

Escribamos 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
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
                                                                     a
otros; 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
                                                                        o
punto 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 datos
Existen 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/33

Se 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 =     Inf

Para la primera de ellas nos avisa que divide por cero.




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                            8
2.2 Asignaciones                                                                                                    m
                                                                                                                    at




2.2        Asignaciones
Uno 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 al
ejecutar diferentes acciones.
    El nombre de cada variable puede ser el que el programador quiera siempre que no coincida con alguna palabra
clave de MATLAB, en cuyo caso nos informar´ mediante un mensaje de error. De todos modos es recomendable que
                                          a
el 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
                                                                                                                    a
las 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
                             o
asignar (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 ←− a

donde   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 ...200

Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                               9
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
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
                                                                       u
largo del programa o de la sesi´n. Su formato es:
                               o

    >>     who [ENTER]
           Your variables are:
            A    u      vfil x
            ans vcol w         y
donde 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                                        o
guiendo 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
                                                   o
ese 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 *.m
Como 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                                   o
software matem´tico de resoluci´n de problemas simb´licos. En concreto, permite ejecutar una secuencia de comandos
              a                o                   o
escritos en un fichero ASCII sin m´s que hacer una llamada al mismo, como si se tratase de un programa en lenguaje
                                 a
C, 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 que
permita 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
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       a
vamos a ejecutar. Con este planteamiento elaboraremos programas (secuencia de comandos) que nos permitan resolver
problemas 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 de
tres 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
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                                     end




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                              13
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
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.
                                                                      e



2.5      Lectura y escritura de datos (Entrada/salida de datos)
2.5.1      Escritura de datos
La escritura de datos nos permite enviar el valor de una o m´s variables externamente, bien a la pantalla del ordenador,
                                                            a
bien 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.
                    a


Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                                 15
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
                                                                                  u
los datos para otra su uso en otra sesi´n, podemos utilizar el comando
                                       o                                 save. El formato se muestra en el siguiente
ejemplo:

    >>     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
2.5 Lectura y escritura de datos (Entrada/salida de datos)                                                       m
                                                                                                                 at




2.5.2      Lectura de datos
La lectura de datos nos permite asignar un valor a una o a m´s variables mediante acciones externas. bien desde el
                                                            a
teclado del ordenador ´ bien desde un fichero.
                      o
seudoc´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 anterior




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                           17
2.6 Programaci´n modular: Funciones
              o                                                                                                   m
                                                                                                                  at




fid=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 fid



2.6      Programaci´n modular: Funciones
                   o
En 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
                                                                                    a
por 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 el
programa cada vez que lo necesitemos.       Por otra parte, las funciones nos permiten descomponer el programa en
subprogramas 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            factorial

m=input(’Da el numero de sumandos n’);
x=0;
for n=1:1:m
    x=x+1/factorial(n);
end
x

Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                             18
2.7 Otras Observaciones                                                                                          m
                                                                                                                 at




    donde la funci´n
                  o     factorial viene definida por


function[k]=factorial(n)
k=1;
for m=2:1:n
    k=k*m;
end



2.7      Otras Observaciones
Para 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 fichero




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                            19
Cap´
   ıtulo 3

Gr´ficos con MATLAB
  a

3.1      Gr´ficos de dos dimensiones
           a
El usuario de MATLAB puede dibujar f´cilmente un conjunto de pares de puntos, y una forma de hacerlo es mediante
                                    a
el comando   plot.

3.1.1      El comando plot
El 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
                                                                                                          a
esta se muestra el dibujo realizado por   plot (o cualquiera de los comandos que introduciremos), sin embargo, si vamos


Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                                   20
3.1 Gr´ficos de dos dimensiones
      a                                                                                                                                                                   m
                                                                                                                                                                          at




realizando los ejemplos uno a uno sin cerrar la ventana gr´fica ´sta se oculta pasando a ser una ventana secundaria
                                                          a    e
en la que se van sustituyendo las gr´ficas por las que actualmente dibujamos. Cada vez que queramos ver una gr´fica
                                    a                                                                        a
tenemos 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   3


Para dibujar n´meros complejos tambi´n se pueden utilizar los comandos
              u                     e                                               polar, quiver, feather, compass, rose
y   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     5




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                                                                                    21
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.5




3.1.2      Opciones del comando plot
Existe 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 hemos



Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                                                                                         22
3.1 Gr´ficos de dos dimensiones
      a                                                                                                               m
                                                                                                                      at




denotado 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
                                      o
cad=’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                 n
s´
 ı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 puntos
dibujados.

                                     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 variables
a=0;
b=3;
x=linspace(a,b,n);                                             % Construimos el vector x
e1=exp(-x.^2);                                                 % y los vectores de abcisas
e2=(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’aficas




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                                23
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    3




3.1.3       Otros comandos
Concluimos la secci´n con dos comandos gr´ficos de uso frecuente en MATLAB. El primero de ellos es el comando
                   o                     a
errorbar, que nos permite incorporar a la gr´fica, mediante barras verticales, el error cometido. Este comando se
                                            a
usa 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 es
pueden ser predefinidas por MATLAB o definidas por el usuario, en este caso ’fcn’ indica una referencia a un M-file
de nombre fcn.m. M´s concretamente,
                    a




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                                                    24
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 el
m´ximo de los datos, tanto en el eje de las ordenadas como en el de las abcisas. Para modificar dicha escala podemos
 a
utilizar el comando   axis (ver secci´n 3.4).
                                     o



3.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       2




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                                                                            25
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
                                                                            12
tanto 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 y
rose, 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     −1

Los 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
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                                                    270




3.3      Gr´ficos en otros sistemas coordenados
           a
El comando         plot dibuja gr´ficos en coordenadas cartesianas; sin embargo, tambi´n es posible utilizar otros sistemas
                                 a                                                   e
de 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 mismo
gr´fico en coordenadas cartesianas.
  a




Gu´ R´pida de Matlabdvips .
  ıa a                                                                                                                        27
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)

Mais conteúdo relacionado

Mais procurados

El transistor bjt
El transistor bjtEl transistor bjt
El transistor bjtFenix Alome
 
Lugar geometrico de las raices
Lugar geometrico de las raicesLugar geometrico de las raices
Lugar geometrico de las raicesIvan Salazar C
 
05 respuesta en el tiempo de un sistema de control
05   respuesta en el tiempo de un sistema de control05   respuesta en el tiempo de un sistema de control
05 respuesta en el tiempo de un sistema de controlreneej748999
 
TRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOS
TRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOSTRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOS
TRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOSIsrael Magaña
 
Electronica rectificadores
Electronica rectificadoresElectronica rectificadores
Electronica rectificadoresVelmuz Buzz
 
Latches y flip flops
Latches y flip flopsLatches y flip flops
Latches y flip flopsJimmy Osores
 
Transistores mosfet configuracion y polarizacion
Transistores mosfet configuracion y polarizacionTransistores mosfet configuracion y polarizacion
Transistores mosfet configuracion y polarizacionJuan Carlos Cabrera
 
Amplificadores operacionales con funciones de transferencia
Amplificadores operacionales con funciones de transferenciaAmplificadores operacionales con funciones de transferencia
Amplificadores operacionales con funciones de transferenciaMartín E
 
2.3. Configuraciones en Paralelo y Serie-Paralelo de Diodos
2.3. Configuraciones en Paralelo y Serie-Paralelo de Diodos2.3. Configuraciones en Paralelo y Serie-Paralelo de Diodos
2.3. Configuraciones en Paralelo y Serie-Paralelo de DiodosOthoniel Hernandez Ovando
 
Funcion De Transferencia
Funcion De TransferenciaFuncion De Transferencia
Funcion De TransferenciaGrupo05N
 
Cade simu manual de funcionamiento2
Cade simu manual de funcionamiento2Cade simu manual de funcionamiento2
Cade simu manual de funcionamiento2guelo
 
Señales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABSeñales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABJose Agustin Estrada
 

Mais procurados (20)

El transistor bjt
El transistor bjtEl transistor bjt
El transistor bjt
 
Lugar geometrico de las raices
Lugar geometrico de las raicesLugar geometrico de las raices
Lugar geometrico de las raices
 
05 respuesta en el tiempo de un sistema de control
05   respuesta en el tiempo de un sistema de control05   respuesta en el tiempo de un sistema de control
05 respuesta en el tiempo de un sistema de control
 
TRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOS
TRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOSTRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOS
TRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOS
 
Sesión 6: Teoría Básica de Transistores BJT
Sesión 6: Teoría Básica de Transistores BJTSesión 6: Teoría Básica de Transistores BJT
Sesión 6: Teoría Básica de Transistores BJT
 
Electronica rectificadores
Electronica rectificadoresElectronica rectificadores
Electronica rectificadores
 
Practica 7 Flip Flop
Practica 7 Flip FlopPractica 7 Flip Flop
Practica 7 Flip Flop
 
Latches y flip flops
Latches y flip flopsLatches y flip flops
Latches y flip flops
 
Transistores mosfet configuracion y polarizacion
Transistores mosfet configuracion y polarizacionTransistores mosfet configuracion y polarizacion
Transistores mosfet configuracion y polarizacion
 
Amplificadores operacionales con funciones de transferencia
Amplificadores operacionales con funciones de transferenciaAmplificadores operacionales con funciones de transferencia
Amplificadores operacionales con funciones de transferencia
 
2.3. Configuraciones en Paralelo y Serie-Paralelo de Diodos
2.3. Configuraciones en Paralelo y Serie-Paralelo de Diodos2.3. Configuraciones en Paralelo y Serie-Paralelo de Diodos
2.3. Configuraciones en Paralelo y Serie-Paralelo de Diodos
 
practica2completa
practica2completapractica2completa
practica2completa
 
Unidad3
Unidad3Unidad3
Unidad3
 
52983063 series-de-fourier
52983063 series-de-fourier52983063 series-de-fourier
52983063 series-de-fourier
 
MEMORIAS DE LOS PLC
MEMORIAS DE LOS PLCMEMORIAS DE LOS PLC
MEMORIAS DE LOS PLC
 
Funcion De Transferencia
Funcion De TransferenciaFuncion De Transferencia
Funcion De Transferencia
 
Funciones De Transferencia
Funciones De TransferenciaFunciones De Transferencia
Funciones De Transferencia
 
Laboratorio 3 autotransformador
Laboratorio 3  autotransformadorLaboratorio 3  autotransformador
Laboratorio 3 autotransformador
 
Cade simu manual de funcionamiento2
Cade simu manual de funcionamiento2Cade simu manual de funcionamiento2
Cade simu manual de funcionamiento2
 
Señales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABSeñales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLAB
 

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

Matlab guia introductoria_2001_09_10
Matlab guia introductoria_2001_09_10Matlab guia introductoria_2001_09_10
Matlab guia introductoria_2001_09_10damari_paty
 
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.WALTER YSIQUE
 
Manual matlab 2009
Manual matlab 2009Manual matlab 2009
Manual matlab 2009Juan Gabriel
 
Mat lab basico
Mat lab basicoMat lab basico
Mat lab basicojessipe_ri
 
Octave calculo numerico
Octave calculo numericoOctave calculo numerico
Octave calculo numericoLUIS COAQUIRA
 
Sistemas operativos -_luis_la_red_martinez
Sistemas operativos -_luis_la_red_martinezSistemas operativos -_luis_la_red_martinez
Sistemas operativos -_luis_la_red_martinezHarold Velez
 
Sistemaoperativos lared-martinez
Sistemaoperativos lared-martinezSistemaoperativos lared-martinez
Sistemaoperativos lared-martinezDouglas Crampton
 
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...RamonMartinespaa
 
Matematicas en ingenieria_con_matlab_y_o
Matematicas en ingenieria_con_matlab_y_oMatematicas en ingenieria_con_matlab_y_o
Matematicas en ingenieria_con_matlab_y_oriberthancco
 

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

Matlab guia introductoria_2001_09_10
Matlab guia introductoria_2001_09_10Matlab guia introductoria_2001_09_10
Matlab guia introductoria_2001_09_10
 
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
 
Manual matlab 2009
Manual matlab 2009Manual matlab 2009
Manual matlab 2009
 
Guia para usar matlab
Guia para usar matlabGuia para usar matlab
Guia para usar matlab
 
Manual dematlab
Manual dematlabManual dematlab
Manual dematlab
 
Introduccion a matlab
Introduccion a matlabIntroduccion a matlab
Introduccion a matlab
 
Campos vectoriales con Matlab y Mathematica
Campos vectoriales con Matlab y MathematicaCampos vectoriales con Matlab y Mathematica
Campos vectoriales con Matlab y Mathematica
 
Mat lab basico
Mat lab basicoMat lab basico
Mat lab basico
 
Matlab r2006b
Matlab r2006bMatlab r2006b
Matlab r2006b
 
Documento11541
Documento11541Documento11541
Documento11541
 
Manual basico de_matlab
Manual basico de_matlabManual basico de_matlab
Manual basico de_matlab
 
Octave calculo numerico
Octave calculo numericoOctave calculo numerico
Octave calculo numerico
 
Sistemas operativos -_luis_la_red_martinez
Sistemas operativos -_luis_la_red_martinezSistemas operativos -_luis_la_red_martinez
Sistemas operativos -_luis_la_red_martinez
 
Sistemaoperativos lared-martinez
Sistemaoperativos lared-martinezSistemaoperativos lared-martinez
Sistemaoperativos lared-martinez
 
Vba excel mnumericos
Vba excel mnumericosVba excel mnumericos
Vba excel mnumericos
 
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
 
Sistemas operativos-david-luis
Sistemas operativos-david-luisSistemas operativos-david-luis
Sistemas operativos-david-luis
 
MATLAB Tutorial
MATLAB TutorialMATLAB Tutorial
MATLAB Tutorial
 
Matematicas en ingenieria_con_matlab_y_o
Matematicas en ingenieria_con_matlab_y_oMatematicas en ingenieria_con_matlab_y_o
Matematicas en ingenieria_con_matlab_y_o
 
Apuntes de clase matlab.abril2019
Apuntes de clase  matlab.abril2019Apuntes de clase  matlab.abril2019
Apuntes de clase matlab.abril2019
 

Último

Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdfRAMON EUSTAQUIO CARO BAYONA
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaLuis Minaya
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxLudy Ventocilla Napanga
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docxEDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docxLuisAndersonPachasto
 

Último (20)

Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
La luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luzLa luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luz
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docxEDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
 

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

  • 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. Pr´logo o Este libro inicia una serie de gu´ dedicadas a MATLAB. ıas El objetivo de esta gu´ es servir de apoyo para el manejo de MATLAB en las asignaturas en las que se emplea el citado ıa software y en las que las limitaciones de tiempo no permiten una dedicaci´n muy exhaustiva a su explicaci´n. Hemos o o pretendido mostrar en esta gu´ los comandos y estructuras b´sicas de MATLAB de una manera clara y concisa con ıa a algunos ejemplos que hemos considerado interesantes. Pretendemos as´ mismo que esta gu´ sea una gu´ viva que siga ı ıa ıa evolucionando con el tiempo, como lo ha hecho hasta ahora, gracias a la experiencia en el uso docente de MATLAB y gracias a las sugerencias de compa˜eros y alumnos a los cuales les queremos mostrar nuestro agradecimiento. n Valladolid, diciembre de 2001 Los Autores Gu´ R´pida de Matlabdvips . ıa a 1
  • 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 o ninguna forma o por cualquier medio, ya sea electr´nico, mec´nico, por fotocopia, por registro u otros m´todos, ni o a e su pr´stamo, alquiler o cualquier otra forma de cesi´n de uso del ejemplar, sin el permiso previo y por escrito de los e o titulares del Copyright. ´ Angulo Torga, Oscar; Cuesta Montero, Eduardo; Guti´rrez Vaquero, C´sar; Mart´ e e ınez Mart´ ınez, Mar´ del Carmen: ıa Profesores 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 ıa Gu´ R´pida de Matlabdvips . ıa a 2
  • 4. Contenidos 1 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3 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 45 Gu´ R´pida de Matlabdvips . ıa a 3
  • 5. Cap´ ıtulo 1 Introducci´n a MATLAB o 1.1 Comentarios previos Comencemos destacando que la filosof´ del entorno MATLAB no es la de otros paquetes de matem´ticas usuales, ıa a tales 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 a pues, aunque podemos ejecutar desde la linea de comandos mediante los nombres de dichos operaciones como en los paquetes mencionados, lo habitual con MATLAB es crear un fichero de texto externo que contenga la secuencia de comandos 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. a 1.2 Iniciando y finalizando una sesi´n con MATLAB o MATLAB se arranca pulsando con el rat´n en el icono correspondiente, e inmediatamente aparece la pantalla de la o figura ??. Cualquier comando que se escribe tras el cursor de MATLAB ser´ procesado cuando se presione la tecla [ENTER]. a Por ejemplo, el comando que hay que ejecutar para salir de MATLAB es quit: >> quit [ENTER] Gu´ R´pida de Matlabdvips . ıa a 4
  • 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 o necesario 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 a el siguiente comando. 1.3 El entorno gr´fico de MATLAB bajo Windows a La ventana de trabajo de MATLAB es una cl´sica ventana de Windows en la que aparece un men´ de opciones y unos a u cuantos 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 con las 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. o Gu´ R´pida de Matlabdvips . ıa a 5
  • 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 a Se˜alemos para los usuarios de Linux que algunas versiones antiguas de MATLAB no incluyen un editor propio como n el descrito para Windows por lo que utilizaremos cualquiera de los que Linux tiene disponibles (joe, vi, kedit,...). En este 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 u grabar los ficheros en formato ASCII para elaborar nuestros programas. Gu´ R´pida de Matlabdvips . ıa a 6
  • 8. Cap´ ıtulo 2 Breve Introducci´n a la Programaci´n o o en MATLAB 2.1 Principios con MATLAB 2.1.1 Entrada y salida en MATLAB Al 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 de MATLAB teclearemos: >> quit [ENTER] 2.1.2 Aritm´tica elemental e Comenzaremos viendo con varios ejemplos que las operaciones aritm´ticas habituales se realizan del modo esperado e con los operadores suma: +, resta: −, producto: ∗, divisi´n: /, y exponencianci´n: ˆ. o o Escribamos 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. 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 a otros; 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 o punto 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 datos Existen 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/33 Se 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 = Inf Para la primera de ellas nos avisa que divide por cero. Gu´ R´pida de Matlabdvips . ıa a 8
  • 10. 2.2 Asignaciones m at 2.2 Asignaciones Uno 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 al ejecutar diferentes acciones. El nombre de cada variable puede ser el que el programador quiera siempre que no coincida con alguna palabra clave de MATLAB, en cuyo caso nos informar´ mediante un mensaje de error. De todos modos es recomendable que a el 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 a las 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 o asignar (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 ←− a donde 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 ...200 Gu´ R´pida de Matlabdvips . ıa a 9
  • 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. 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 u largo del programa o de la sesi´n. Su formato es: o >> who [ENTER] Your variables are: A u vfil x ans vcol w y donde 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 o guiendo 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 o ese 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 *.m Como 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 o software matem´tico de resoluci´n de problemas simb´licos. En concreto, permite ejecutar una secuencia de comandos a o o escritos en un fichero ASCII sin m´s que hacer una llamada al mismo, como si se tratase de un programa en lenguaje a C, 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 que permita 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. 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 a vamos a ejecutar. Con este planteamiento elaboraremos programas (secuencia de comandos) que nos permitan resolver problemas 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 de tres 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. 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 end Gu´ R´pida de Matlabdvips . ıa a 13
  • 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. 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. e 2.5 Lectura y escritura de datos (Entrada/salida de datos) 2.5.1 Escritura de datos La escritura de datos nos permite enviar el valor de una o m´s variables externamente, bien a la pantalla del ordenador, a bien 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. a Gu´ R´pida de Matlabdvips . ıa a 15
  • 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 u los datos para otra su uso en otra sesi´n, podemos utilizar el comando o save. El formato se muestra en el siguiente ejemplo: >> 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. 2.5 Lectura y escritura de datos (Entrada/salida de datos) m at 2.5.2 Lectura de datos La lectura de datos nos permite asignar un valor a una o a m´s variables mediante acciones externas. bien desde el a teclado del ordenador ´ bien desde un fichero. o seudoc´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 anterior Gu´ R´pida de Matlabdvips . ıa a 17
  • 19. 2.6 Programaci´n modular: Funciones o m at fid=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 fid 2.6 Programaci´n modular: Funciones o En 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 a por 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 el programa cada vez que lo necesitemos. Por otra parte, las funciones nos permiten descomponer el programa en subprogramas 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 factorial m=input(’Da el numero de sumandos n’); x=0; for n=1:1:m x=x+1/factorial(n); end x Gu´ R´pida de Matlabdvips . ıa a 18
  • 20. 2.7 Otras Observaciones m at donde la funci´n o factorial viene definida por function[k]=factorial(n) k=1; for m=2:1:n k=k*m; end 2.7 Otras Observaciones Para 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 fichero Gu´ R´pida de Matlabdvips . ıa a 19
  • 21. Cap´ ıtulo 3 Gr´ficos con MATLAB a 3.1 Gr´ficos de dos dimensiones a El usuario de MATLAB puede dibujar f´cilmente un conjunto de pares de puntos, y una forma de hacerlo es mediante a el comando plot. 3.1.1 El comando plot El 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 a esta se muestra el dibujo realizado por plot (o cualquiera de los comandos que introduciremos), sin embargo, si vamos Gu´ R´pida de Matlabdvips . ıa a 20
  • 22. 3.1 Gr´ficos de dos dimensiones a m at realizando los ejemplos uno a uno sin cerrar la ventana gr´fica ´sta se oculta pasando a ser una ventana secundaria a e en la que se van sustituyendo las gr´ficas por las que actualmente dibujamos. Cada vez que queramos ver una gr´fica a a tenemos 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 3 Para dibujar n´meros complejos tambi´n se pueden utilizar los comandos u e polar, quiver, feather, compass, rose y 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 5 Gu´ R´pida de Matlabdvips . ıa a 21
  • 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.5 3.1.2 Opciones del comando plot Existe 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 hemos Gu´ R´pida de Matlabdvips . ıa a 22
  • 24. 3.1 Gr´ficos de dos dimensiones a m at denotado 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 o cad=’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 n s´ ı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 puntos dibujados. 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 variables a=0; b=3; x=linspace(a,b,n); % Construimos el vector x e1=exp(-x.^2); % y los vectores de abcisas e2=(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’aficas Gu´ R´pida de Matlabdvips . ıa a 23
  • 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 3 3.1.3 Otros comandos Concluimos la secci´n con dos comandos gr´ficos de uso frecuente en MATLAB. El primero de ellos es el comando o a errorbar, que nos permite incorporar a la gr´fica, mediante barras verticales, el error cometido. Este comando se a usa 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 es pueden ser predefinidas por MATLAB o definidas por el usuario, en este caso ’fcn’ indica una referencia a un M-file de nombre fcn.m. M´s concretamente, a Gu´ R´pida de Matlabdvips . ıa a 24
  • 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 el m´ximo de los datos, tanto en el eje de las ordenadas como en el de las abcisas. Para modificar dicha escala podemos a utilizar el comando axis (ver secci´n 3.4). o 3.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 2 Gu´ R´pida de Matlabdvips . ıa a 25
  • 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 12 tanto 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 y rose, 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 −1 Los 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. 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 270 3.3 Gr´ficos en otros sistemas coordenados a El comando plot dibuja gr´ficos en coordenadas cartesianas; sin embargo, tambi´n es posible utilizar otros sistemas a e de 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 mismo gr´fico en coordenadas cartesianas. a Gu´ R´pida de Matlabdvips . ıa a 27