Curso Introductorio de Matlab
Curso Introductorio de Matlab
                                                        5 Gráficos                                                                                                                                                           22
                                                          5.1 Gráficos 2D . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
                                                          5.2 Gráficos 2D Múltiples .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23
             UNIVERSIDAD CARLOS III DE MADRID             5.3 Edición de gráficos . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24
                                                          5.4 Gráficos 3D . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   25
                                        ´               6 Programación                                                                                                                                                       26
                                                          6.1 Reglas Generales . . . . . . . . . . . . . . . .                                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
                                                          6.2 Tipos de m-files . . . . . . . . . . . . . . . . .                              .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
                                                              6.2.1 Archivos de instrucciones . . . . . . . .                                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
                                                              6.2.2 Archivos de funciones . . . . . . . . . .                                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
                                                          6.3 Estructuras de Control del Flujo del Programa                                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
                                                              6.3.1 Bucles for . . . . . . . . . . . . . . . .                                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
                                                              6.3.2 Sentencia if . . . . . . . . . . . . . . .                                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   31
                                                              6.3.3 Sentencia while . . . . . . . . . . . . .                                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   31
                                                          6.4 Operadores Lógicos y Operadores Relacionales                                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   32
                                                        7 Bibliografı́a                                                                                                                                                       34
1 INTRODUCCIÓN                                           1   1 INTRODUCCIÓN                                               2
&
      5                                    10                   %
                               Reglas                                  • La instrucción
      • Podemos definir constantes y variables mediante                                     save fname1 x y z
        nombres.
      • El nombre consiste en una letra seguida de otras le-             graba las variables x, y y z a un fichero (binario) de nombre
        tras, dı́gitos o subrayados, hasta un máximo de 31              fname1.mat (archivos mat o MAT-files).
        caracteres en total.                                           • La instrucción
      • MATLAB distigue           entre   MAYÚSCULAS          y                             load fname2 a b
        minúsculas.
                                                                         recupera las variables a y b de un fichero (binario) de nom-
      • Las variables se pueden borrar con clear nombre.                 bre fname2.mat. En fname2.mat podrı́a haber almace-
                                                                         nadas más variables aparte de a y b.
  Ejemplos
'                                                              $       • También es posible grabar y recuperar datos a y desde
                                                                         ficheros ASCII: opción -ascii de los comandos load y
 >> a = 2; A = 3;                                                        save.
 >> alfa = 30; conf = pi/180;
                                                                    Ejemplo
                                                                   '                                                                     $
 >> sin(conf*alfa+A*a)                                             >> x = 0:pi/5:2*pi;
 ans =                                                             >> y = sin(x.^2);
    0.2381                                                         >> t = [ x’ y’ ];
                                                                   >> save io.mat t
 >> ans^2                                                          >> clear t
 ans =                                                             >> x = t(:,1);
     0.0567                                                        ??? Undefined function or variable ’t’.
&                                                              %
                                                                   >> load io
 Si no asignamos un nombre a una expresión se crea au-            >> x = t(:,1);
 tomáticamente la variable ans con la que se puede hacer          >> y = t(:,2);
 operaciones posteriores.                                          >> plot(x,y)
                                                                   &                                                                     %
3 GRABAR Y LEER DATOS EN FICHEROS                             9       4 MATRICES Y VECTORES                                                  10
                                                                                                                          Filas
 el archivo (ASCII) nombre fichero. A partir de dicha ins-           Matriz: Colección de números ordena-
 trucción y hasta la introducción en la lı́nea de comandos de la   dos por filas y por columnas.
 instrucción
                            diary off                                       • Las matrices se definen mediante corchetes [ ].
 todos los comandos que ejecutemos, ası́ como los resultados que            • Los elementos dentro de una misma fila se separan
 devuelva MATLAB (salvo los gráficos) quedarán grabados en el               mediante comas o espacios en blanco.
 archivo nombre fichero. Luego, podemos abrir y modificar                   • Para indicar el final de una fila y el comienzo de la
 dicho archivo con cualquier editor de texto.                                 siguiente se utiliza el punto y coma.
                                                                            • Un vector fila de n elementos es una matriz 1×n.
                                                                            • Un vector columna de n elementos es una ma-
                                                                              triz n × 1.
                                                                            • Un escalar es una matriz 1 × 1.
                                                                      '                                                                           $
                                                                          >> A = [ 1 2 3; 4 5 6; 7 8 9 ]
                                                                          A =
                                                                                1   2      3
                                                                                4   5      6
                                                                                7   8      9
>> v1=[ 1, 2, 3, 4 ]
                                                                          v1=
                                                                      &         1   2      3                                                      %
4 MATRICES Y VECTORES                                     11       4 MATRICES Y VECTORES                                          12
'                                                              $
                                                                   4.3   Funciones para la construcción de matrices
 >> v2=[ 1; 2; 3 ]
 v2 =                                                                    eye(n)          matriz identidad de dimensión n × n
      1                                                                  zeros(m,n)      matriz de ceros de dimensión m × n
      2                                                                  ones(m,n)       matriz de unos de dimensión m × n
      3                                                                  diag(v)         matriz diagonal con diagonal {vk }nk=1
                                                                         rand(m,n)       matriz aleatoria de dimensión m × n
 >> size(A)                              >> size(v1)
                                                                     Ejemplos
 ans =                                   ans =                     '                                                                   $
       3    3                                  1     4              >> a=eye(2)
                                                                    a =
 >> size(v2)                             >> length(v1)                   1      0
 ans =                                   ans =                           0      1
       3   1                                   4
&                                                              %
                                                                    >> b=zeros(2,5)
                                                                    b =
4.2   Elementos de matrices y vectores                                   0     0              0        0        0
                                                                         0     0              0        0        0
      • Para extraer el elemento Aij de una matriz A se
        escribe A(i,j).                                             >> c=rand(2,2)
                                                                    c =
      • Para extraer el elemento vk de un vector v se                   0.0579     0.8132
        escribe v(k).                                                   0.3529     0.0099
'                                                              $
                                                                   &                                                                   %
4 MATRICES Y VECTORES                                               13   4 MATRICES Y VECTORES                                          14
4.7 Resolución de Sistemas de Ecuaciones Lineales 4.8 Otras operaciones sobre matrices
' $
0.8
5 36 1 8 0.6
0.2
−0.4
H = −0.8
−1
0.0000 0.5000 −4 −3 −2 −1 0 1 2 3 4
                                                                      &                                                                        %
     1.0000    0.0000
&                                                             %
  Ejercicios
  Define una matriz A de 2×2 y un vector columna x de 2               Intentar:
elementos.                                                            '                                                                        $
                                                                                    −x2
                                                                         •y=e             sobre el intervalo [−1.5, 1.5]
   1. Compara            A.ˆ2      Aˆ2   A*x       x*A                 • Gráfica en paramétricas: x = cos(3t) y = sen(2t)
   2. Calcula           sin(A)      cos(x)*(A+1)                      &
                                                                         t = [0, 2π]                                                           %
  Forma 1
  '                                                               $
                                                                       • Cambiar el tipo de lı́nea, color, etc:
   >> x=0:.01:2*pi;y1=sin(x);                                               #                                                            Ã
                         0.6
                                                                                  Ver help plot para tipos de lı́neas y colores
                         0.4
0.2
                        −0.2
                                                                       • grid dibuja una retı́cula cuadrada.
                        −0.4
                        −0.6
                                                                       • Escalado de la ventana gráfica:
                        −0.8                                             axis([xmin,xmax,ymin,ymax])
  &                                                               %      axis, congela el escalado actual.
                         −1
                           0     1   2   3   4   5   6   7
  Forma2
  º                                                ·
                                                                         Escribiendo axis de nuevo volvemos al autoescalado.
   >>x=0:.01:2*pi;Y=[sin(x)’,sin(2*x)’,sin(4*x)’];                     • Añadir tı́tulos y comentarios:
  ¹
   >>plot(x,Y)                                     ¸
                                                                               title       tı́tulo del gráfico
      Opciones                                                                 xlabel      comentario en el eje x
       • hold on permite modificar el último gráfico.                        ylabel      comentario en el eje y
                                                                               gtext       texto posicionado interactivamente
       • hold off desactiva este modo.
                                                                               text        texto posicionado mediante coordenadas
  Ejemplo:
  '                                                               $    • Ejemplos:
   >> x=0:.01:2*pi;
   >> y1=sin(x);y2=sin(2*x);y3=sin(4*x);                                    1. Escribir: title(’El Titulo’)
   >> plot(x,y1)                                                            2. Escribir: gtext(’La mancha’) y marcar con el ratón
   >> hold on                                                                  donde se desea que aparezca el comentario.
   >> plot(x,y2)
   >> plot(x,y3)                                                                                    Ejecutar help axis
  &>> hold off                                                    %
5 GRÁFICOS                                                         25   6 PROGRAMACIÓN                                                   26
   function a = rand10(m,n)
   a = floor(10*rand(m,n));                                Repite un conjunto de instrucciones un determinado
  &                                                   %    número de veces.
                                                                             for i= vector fila de ı́ndices
  Llamada                                                                         instrucciones(i)
  ®                             ©
   >> matriz=rand10(3,4)                                                     end
                               ª
' $
  
   >> [s,r]=sr2(3,4)            ª
6 PROGRAMACIÓN                                                31   6 PROGRAMACIÓN                                                 32
                                                                     >> p= sum(B(:))/length(A(:))
                                                                     p =
                                                                     &
                                                                       0.5333                                                       %
6 PROGRAMACIÓN                                   33       7 BIBLIOGRAFÍA                                            34
'                                                      $
                                                               • D. Hanselman and B. Littefield, The Student edition of
function [P,nops] = mult(A,B)                                    MATLAB: version 4, Prentice-Hall, 1995.
                                                               • A. Biran and M. Breiner, Matlab for Engineers, Addison-
%   [P,nops] = mult(A,B) calcula el producto de
                                                                 Wesley, 1995.
%   matrices P = A*B, con A y B de dimensiones
%   adecuadas (si no, se obtiene un mensaje de                 • Eva Pärt-Enander, Anders Sjöberg, Bo Melin and Pernil-
%   error) y el numero de operaciones en coma                    la Isaksson, The Matlab Handbook, Addison-Wesley, 1996.
%   flotante ’nops’ realizadas
[mA,nA] = size(A);
[mB,nB] = size(B);
if nA~=mB
     disp(’Matrices de dimensiones inadecuadas’)
else
     P = zeros(mA,nB);
     flops(0);
     for i=1:mA
         for j=1:nB
             for k=1:nA
                 P(i,j) = P(i,j) + A(i,k)*B(k,j);
             end
         end
     end
nops = flops;
&                                                      %