Programacin TE243 Segundo semestre de 2007 Ing: Jos Norbey Snchez Grupo: 02
1. Grficos en dos y tres dimensiones:
1.1 Grficos en dos dimensiones:
MATLAB dispone de cuatro funciones bsicas para crear grficos 2-D. Estas funciones se diferencian principalmente por el tipo de escala que utilizan en los ejes de abscisas y de ordenadas. Estas cuatro funciones son las siguientes:
plot() crea un grfico a partir de vectores y/o columnas de matrices, con escalas lineales sobre ambos ejes. loglog() dem con escala logartmica en ambos ejes. semilogx() dem con escala lineal en el eje de ordenadas y logartmica en el eje de abscisas. semilogy() dem con escala lineal en el eje de abscisas y logartmica en el eje de ordenadas.
En lo sucesivo se har referencia casi exclusiva a la primera de estas funciones (plot). Las dems se pueden utilizar de un modo similar. Existen adems otras funciones orientadas a aadir ttulos al grfico, a cada uno de los ejes, a dibujar una cuadrcula auxiliar, a introducir texto, etc. Estas funciones son las siguientes:
title('ttulo') aade un ttulo al dibujo. xlabel('tal') aade una etiqueta al eje de abscisas. Con xlabel off desaparece. ylabel('cual') aade una etiqueta al eje de ordenadas. Con ylabel off desaparece text(x,y,'texto') introduce 'texto' en el lugar especificado por las coordenadas x e y. Si x e y son: vectores, el texto se repite por cada par de elementos. Si texto es tambin un vector de cadenas de texto de la misma dimensin, cada elemento se escribe en las coordenadas correspondientes. gtext('texto') introduce texto con ayuda del ratn: el cursor cambia de forma y se espera un clic para introducir el texto en esa posicin. legend() define rtulos para las distintas lneas o ejes utilizados en la figura. Para ms detalle, consultar el Help grid activa la inclusin de una cuadrcula en el dibujo. Con grid off desaparece la cuadrcula.
2 Ejemplo. Generar una seal sinusoidal de amplitud unitaria.
Ejemplo graficar punteando dos vectores m y t de la misma dimensin:
>> t=[-5 -4.5 -3 -2 0 1 1.5 4 4.5 5]; >> m=[20 10 12 4 15 18 3 20 4 7]; Si el objetivo es graficar m contra t se digita: >> plot(t,m)
Si queremos presentarla en color rojo escribimos plot(t,m,r), otros colores como y(amarillo), g(verde), w(blanco) y k(negro); si se digita plot(t,m,r--), aparece la curva punteada, otras formas .,+,*,o,:, etc. Sin cerrar la curva, tecleando los comandos: xlabel(t(segundos)) y ylabel(m(amperios)), se adiciona el texto entre comillas simples a los ejes x y y respectivamente como se muestra en la figura.
Mediante el comando gtext(Curva ilustrativa) se puede adicionar el texto entre comillas (siempre con la figura abierta) donde se posicione el cursor y se haga el correspondiente clik. En este caso se desplegar en la curva. i se desea concentrar la atencin en una determinada zona de la curva se puede utilizar el comando axis([-4 -2 8 14]) donde los dos primeros elementos del vector son las coordenadas horizontales y los dos ltimos las coordenada verticales. Ver figura.
Para la ubicacin de los puntos se puede habilitar convenientemente un reticulado mediante la instruccin grid on apareciendo en la siguiente figura. Si se quiere deshabilitar se entra grid off.
En caso de necesitarse dibujar una curva adicional sobre la misma grfica anterior se usa el comando hold on. Por ejemplo para graficar una funcin sinusoidal sera:
Ejemplo en dos vectores de 9 datos sumarle una funcin seno:
Las curvas anteriores podran mostrarse en dos subgrficas una debajo de la otra separadas, pertenecientes a una misma ventana, usando el comando subplot(m,n,p), se genera una matriz de m filas y n columnas, y p genera los ejes de cada grfica.
Los comandos axis, xlabel, ylabel etc., se entran despus del respectivo plot para colocar etiquetas. Usando el comando subplot(m,n,p), donde se genera una matriz de m filas y n columnas, y p genera los ejes de cada grfica.
La mayora corresponden a superficies que representan la magnitud de una funcin de dos variables; las dos variables se representan en el plano horizontal y el valor de la funcin como una altura sobre dicho plano. La superficie se forma al unir las pequeas rejillas implementadas alrededor de cada punto. Los comandos utilizados para graficar superficies son: mesh, meshz, meshc, surf, surfc. A travs de algunos ejemplos se ilustrar la operacin de los comandos y de otras utilidades adicionales. El ms aplicable de los anteriores es mesh.
Ejemplo: graficar un plano en 3D.
>> x=-5:.5:5; (rango) >> y=x; (me genera una lnea con pendiente a 45 en el rango dado) >> [x1,y1]=meshgrid(x,y); (me genera un plano en el rango dado) >> z1=0*x1+10; (tercera variable para generar en 3D) >> surf(z1) (grfico en 3D)
Si deseamos colocar otro plano lo hacemos con hold on escribiendo lo siguiente:
Ejemplo: graficar dos planos en 3D.
>> x=-5:.5:5; >> y=x; >> [x1,y1]=meshgrid(x,y); >> z1=0*x1+10; >> surf(z1) >> hold on >> z2=0*x1+20; >> mesh(z2) 8
En esta figura anterior se observa la diferencia entre mesh y surf. El comando surf presenta dificultades cuando el nmero de puntos es grande; se pueden apreciar los problemas repitiendo el proceso anterior con un incremento para x1 de 0.1 en lugar del 0.5 utilizado, por lo que se recomienda utilizar preferentemente mesh. Se aprecia tambin que se est graficando contra el ndice, para graficar directamente contra los ejes especificados debe digitarse:
Ejemplo: graficar tres planos en 3D, pero con los rangos especificados.
>> x=-5:.5:5; >> y=x; >> [x1,y1]=meshgrid(x,y); >> z1=0*x1+10; >> surf(x,y,z1) >> hold on >> z2=0*x1+20; >> mesh(x,y,z2) >> mesh(x,y,z2+10)
Se puede observar que los ejes no se pierden
axis([-5 5 -5 5 0 30]) 9
Ejemplo: grfica en 3D, donde el tercer vector es una funcin.
Para el caso tridimensional, se tienen los vectores x, y y z, entonces para generar una grfica slo es necesario teclear. Otra forma: plot3(x,y,z).
10 Ejemplo. Generar una grfica tridimensional de una helicoidal.
t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t) axis square; grid on
El comando axis permite fijar los lmites de los ejes en una grfica y la opcin square fija las coordenadas iguales en los tres ejes. En la figura se muestra la grfica resultante.
Tarea: En dos dimensiones 1) Graficar una funcin diente de sierra uniforme y sumarle una funcin coseno 2) Obtener 4 grficas en un mismo display, por filas y por columnas de: 1-funcin seno, 2- funcin coseno, 3- una constante y 4- pendiente positiva.
En tres dimensiones 1) graficar 5 planos en tres dimensiones. 2) Dibujar la funcin sen(r)/r (siendo r=sqrt(x 2 +y 2 ), en el rango de u=-8:0.5:8; v=u; donde r=sqrt(U.^2+V.^2)+eps. Para evitar dividir por 0 se suma al denominador el nmero pequeo eps). Utilizando los comandos meshgrid y mesh. 3) Con el comando plot3 graficar una funcin seno, una funcin coseno y una funcin constante, 4) De acuerdo a 3) Cmo se graficara un valo?.