viernes, 16 de diciembre de 2011

GRÁFICOS EN MATLAB

GRÁFICOS EN MATLAB

Una de las funciones más importantes en Matlab es la función plot . Plot también parece ser una de las más sencillas funciones para aprender a usar. La sintaxis básica de la función es escribir el siguiente comando en la ventana de comandos del Matlab o en un archivo-m.

plot(x,y)
Este comando ploteará los elementos del vector x en el eje horizontal de una figura, y los elementos del vector y en el eje vertical de la figura. Por defecto, cada vez que se use el comando plot , se borrará la figura que estaba, quedando solo la nueva; discutiremos cómo forzar esto más abajo. Si quisiéramos graficar la sencilla fórmula lineal:

     y=3x

Deberíamos crear un archivo-m con las siguientes líneas de código:

     x = 0:0.1:100;

     y = 3*x;

     plot(x,y)

lo que generará la figura siguiente,

 
Una cosa a tener en cuenta cuando se usa el comando plot es que los vectores x e y deben ser la misma longitud. La otra dimensión puede variar. Matlab puede graficar un vector 1 x n versus un vector n x 1, ó un vector 1 x n versus una matriz 2 x n , (obtendrá dos líneas), el largo n es el mismo para ambos vectores.

El comando plot puede también usarse con solamente un vector como entrada o parámetro. En ese caso las columnas del vector se grafican versus sus índices (el vector 1:1:n se usará para el eje horizontal). Si el vector de entrada contiene números complejos, Matlab dibuja la parte real de cada elemento (en el eje x) versus la parte imaginaria (en el eje y).
La Estética de los Gráficos
El color y el marcador de un gráfico se pueden cambiar agregando un tercer parámetro (entre apóstrofo 'esto') al comando plot . por ejemplo, para graficar la función de arriba con una línea punteada roja , debería cambiarse el archivo-m a:

     x = 0:0.1:100;

     y = 3*x;

     plot(x,y,'r:')

Ahora el gráfico se ve:


La tercera entrada consiste de uno a tres caracteres que especifican un color y/o o un tipo de marcador. La lista de colores y marcadores es como sigue:

     y     amarillo      .     punto

     m     violeta       o     circulo

     c     celeste       x     cruz x

     r     rojo          +     suma

     g     verde         -     solido

     b     azul          *     estrella

     w     blanco        :     punteado

     k     negro         -.    punto y raya

                         --    a trazos

Se puede graficar más de una función en la misma figura. Digamos que quisiera graficarlas ondas seno y coseno en el mismo conjunto de ejes, usando diferentes colores y marcadores para cada una. Puede usarse el siguiente archivo-m para lograrlo:

     x = linspace(0,2*pi,50);

     y = sin(x);

     z = cos(x);

     plot(x,y,'r', x,z,'gx')

Obtendrá la figura siguiente de las ondas seno y coseno, con el seno en rojo sólido y el coseno en verde con cruces:


Agregando más juegos de parámetros al comando plot , puede graficar tantas funciones en la misma figura como se quiera . Cuando plotea muchas cosas en el mismo gráfico es útil diferenciar las diferentes funciones mediante color y marcadores. Puede lograrse el mismo efecto usando los comandos hold on y hold off. Una figura como la que se muestra abajo puede generarse mediante el siguiente archivo-m:

     x = linspace(0,2*pi,50);

     y = sin(x);

     plot(x,y,'r')

     z = cos(x);

     hold on

     plot(x,z,'gx')

     hold off

Recuerde que siempre que use el comando hold on, todas las figuras serán generadas en un conjunto de ejes, sin borrarse la figura anterior, hasta que se aplique el comando hold off.

Más de un Gráfico en una ventana (Subplot)
En una misma figura puede ponerse más de una línea empleando el comando subplot. El comando subplot le permite separar la figura en tantas figuras como se quiera, y ponerlas todas en una figura. Para usar este comando, Copie la siguiente línea de código e insértela en la ventana de comandos del Matlab o en un archivo-m:

subplot(m,n,p)
Este comando divide la figura en una matriz de m renglones y n columnas, por lo tanto crea mxn gráficos en una figura. TEl p-ésimo gráfico es seleccionado como el gráfico activo (solo hay uno a la vez por figura). Por ejemplo, suponga quisiera ver una senoide, un coseno, y una onda tangente graficadas en la misma figura, pero no en los mismos ejes. El siguiente archivo-m lo hará:

     x = linspace(0,2*pi,50);

     y = sin(x);

     z = cos(x);

     w = tan(x);

     subplot(2,2,1)

     plot(x,y)

     subplot(2,2,2)

     plot(x,z)

     subplot(2,2,3)

     plot(x,w)


como puede ver, habrá solo tres gráficos , a pesar de haber creado una matriz de 2 x 2 , de 4 subplots. No tiene por qué rellenar todas las subfiguras que ha creado, pero Matlab dejará un lugar para cada figura en la matriz. Pudo haber hecho sencillamente otro gráfico mediante la línea subplot(2,2,4) . Las subplots se ordenan de la misma manera como se lee un libro. La primera subplot está arriba a la izquierda, la siguiente está a su derecha. Cuando todas las columnas de ese renglón están ocupadas, se rellena la columna de la izquierda del próximo renglón de abajo (asumiendo que genera los subplots en el orden 1, 2, 3,..).

Una cosa a notar acerca del comando subplot es que cada comando plot ejecutado después ubicará la figura en la última posición que se especificó en el último comando subplot, borrando la figura que había . Por ejemplo, en el archivo-m previo, si se emitiera un comando plot más tarde en el mismo, éste se graficará en la en la tercera posición en la ventana gráfica, borrando la línea de la tangente.

Cambiando los ejes
Ahora que ha encontrado diversos modos de graficar funciones, puede personalizar sus ploteos para lograr lo que desea. El modo más frecuente de hacerlo es mediante el comando axis. El comando axis cambia los ejes del diagrama actual, de modo que se muestra sólo la parte del eje que se desea. El comando axis se usa ingresando el siguiente comando justo después del comando plot (o cualquier comando que tiene un plot como una de sus salidas):

     axis([xmin, xmax, ymin, ymax])

Por ejemplo, suponga querer ver un gráfico de la función y=exp(5t)-1. Si entra lo siguiente al Matlab

t=0:0.01:5;

y=exp(5*t)-1;

plot(t,y)

debería tener la figura siguiente:




Como puede ver, el gráfico tiende a infinito. Atendiendo al eje y (escala: 8e10), es claro que no puede verse mucho en este gráfico. Para tener una mejor idea de lo que está pasando en el ploteo, miremos el primer segundo de esta función. Escriba el siguiente comando en la ventana de comandos del Matlab.

axis([0, 1, 0, 50])

y debería obtener la figura siguiente:




Ahora esta figura es mucho más valiosa. Puede verse más claro lo que pasa cuando la función va hacia infinito. Puede personalizarse los ejes a sus necesidades. Cuando se usa el comando subplot, pueden cambiarse los ejes de cada subplot emitiendo un comando axis antes del próximo comando subplot. Hay más usos del comando axis que puede ver si tipea help axis en la ventana de comandos del Matlab.

Agregar Texto
Otra cosa que puede ser importante en sus gráficos es el etiquetado. Puede darle un título al gráfico (con el comando title), etiqueta al eje x (con el comando xlabel), o al eje y (con el comando ylabel), así como incluir texto en la figura presente. Todos los comandos mencionados se emiten luego de ejecutarse el comando plot actual.
Más aún, puede incorporarse texto en el mismo gráfico de dos maneras: el comando text y el comando gtext. El primer comando requiere conocer las coordenadas donde quiere ubicar la cadena de texto. El comando es text(xcor,ycor,'textstring'). Para usar el otro comando, no necesita saber las coordenadas exactas. El comando es gtext('textstring'), y entonces sólo mueva la mira en cruz al lugar deseado con el mouse, y haga clic en la posición que quiere que se inserte el texto. El texto "etiqueta innecesaria" se ubicó a la derecha por encima de la posición donde se hace clic. La figura debería verse así:


Otros comandos que pueden usarse con el comando plot son:
  • clf (borra el gráfico actual, lo deja en blanco)
  • figure (abre una nueva ventana figure para graficar, y se preserva la figura previa)
  • close (cierra la ventana de la figura actual)
  • loglog (igual que plot, excepto que ambos ejes se escalan en Log10)
  • semilogx (igual que plot, excepto que el eje x se escala en Log10)
  • semilogy (igual que plot, excepto que el eje y se escala en Log10)
  • grid (agrega una grilla al gráfico)


No hay comentarios:

Publicar un comentario