Documente Academic
Documente Profesional
Documente Cultură
2 Dimensiones . 3 Dimensiones.
MATLAB dispone de cinco 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. plotyy() dibuja dos funciones con dos escalas diferentes para las ordenadas, una a la derecha y otra a la izquierda de la figura. 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(absi') aade una etiqueta al eje de abscisas. Con xlabel off desaparece ylabel(ord') 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. grid activa la inclusin de una cuadrcula en el dibujo. Con grid off desaparece la Cuadrcula.
clc; clear all; close all; %Este programa permite graficar la funcin seno limite_inferior=input('Ingrese el lmite inferior: '); limite_superior=input('Ingrese el lmite superior: '); pre=input('Ingrese la precision entre ms alto mejor: '); periodo=input('Ingrese el periodo de la seal: ') x=linspace(limite_inferior,limite_superior,pre); y=sin(periodo*x); %Graficamos. plot(x,y) title('Grafica y=sin(x)') xlabel('Eje de las abscisas') ylabel('Eje de las ordenadas') text(3.5,0,'Inicio') text(-3.5,0,'Fin') grid on
10
11
Esta es la funcin clave de todos los grficos 2-D en MATLAB. Ya se ha dicho que el elemento bsico de los grficos bidimensionales es el vector. Se utilizan tambin cadenas de 1, 2 3 caracteres para indicar colores y tipos de lnea. La funcin plot(), en sus diversas variantes, no hace otra cosa que dibujar vectores.
12
plot(A) dibuja una lnea por cada columna de A en ordenadas, frente al ndice de los elementos en abscisas. Ejemplo:
13
14
plot(x,A) dibuja las columnas (o filas) de A en ordenadas frente al vector x en abscisas. Las dimensiones de A y x deben ser coherentes: si la matriz A es cuadrada se dibujan las columnas, pero si no lo es y la dimensin de las filas coincide con la de x, se dibujan las filas plot(A,x) anlogo al anterior, pero dibujando las columnas (o filas) de A en abscisas, frente al valor de x en ordenadas plot(A,B) dibuja las columnas de B en ordenadas frente a las columnas de A en abscisas, dos a dos. Las dimensiones deben coincidir plot(A,B,C,D) anlogo al anterior para cada par de matrices. Las dimensiones de cada par deben coincidir, aunque pueden ser diferentes de las dimensiones de los dems pares
15
Nos permite usar colores, formas y estilos de lneas cuando graficamos usando la funcin plot.
Ejemplo:
plot(x,y,'--','color','g')
16
*
Desarrollado por: Ing. Juan Vsquez.
17
Cuando hay que dibujar varias lneas, por defecto se van cogiendo sucesivamente los colores de la tabla comenzando por el azul, hacia arriba, y cuando se terminan se vuelve a empezar otra vez por el azul. Si el fondo es blanco, este color no se utiliza para las lneas. Tambin es posible aadir en la funcin plot algunos especificadores de lnea que controlan el espesor de la lnea, el tamao de los marcadores, etc. Considrese el siguiente ejemplo: plot(x,y,'-.rs', 'LineWidth',4, 'MarkerEdgeColor','k', 'MarkerFaceColor', 'g','MarkerSize',10)
18
Existe la posibilidad de aadir lneas a un grfico ya existente, sin destruirlo o sin abrir una nueva ventana. Se utilizan para ello los comandos hold on y hold off. El primero de ellos hace que los grficos sucesivos respeten los que ya se han dibujado en la figura (es posible que haya que modificar la escala de los ejes); el comando hold off deshace el efecto de hold on. El siguiente ejemplo muestra cmo se aaden las grficas de x2 y x3 a la grfica final(cada una con un tipo de lnea diferente): Crear x,x2 y x3 >> plot(x) >> hold on >> plot(x2,'--') >> plot(x3,'-.') >> hold off
19
Una ventana grfica se puede dividir en m particiones horizontales y n verticales, con objeto de representar mltiples grficos en ella. Cada una de estas subventanas tiene sus propios ejes, aunque otras propiedades son comunes a toda la figura. La forma general de este comando es: subplot(m,n,i)
20
donde m y n son el nmero de subdivisiones en filas y columnas, e i es la subdivisin que se convierte en activa. Las subdivisiones se numeran consecutivamente empezando por las de la primera fila, siguiendo por las de la segunda, etc. Por ejemplo, la siguiente secuencia de comandos genera cuatro grficos en la misma ventana:
21
clear all; close all; clc; x=linspace(0,2*pi,100) y=sin(x); z=cos(x); w=exp(-x*.1).*y; v=y.*z; subplot(2,2,1), plot(x,y) subplot(2,2,2), plot(x,z) subplot(2,2,3), plot(x,w) subplot(2,2,4), plot(x,v)
22
23
24
Tambin en este punto MATLAB tiene sus opciones por defecto, que en algunas ocasiones puede interesar cambiar. El comando bsico es el comando axis. Por defecto, MATLAB ajusta la escala de cada uno de los ejes de modo que vare entre el mnimo y el mximo valor de los vectores a representar. Este es el llamado modo "auto", o modo automtico. Para definir de modo explcito los valores mximo y mnimo segn cada eje, se utiliza el comando:
axis([xmin, xmax, ymin, ymax])
*
Desarrollado por: Ing. Juan Vsquez.
25
ymin, ymax] axis('ij') utiliza ejes de pantalla, con el origen en la esquina superior izda. y el eje j en direccin vertical descendente axis('xy') utiliza ejes cartesianos normales, con el origen en la esquina inferior izda. y el eje y vertical ascendente axis('auto x') utiliza el escalado automtico slo en direccin x axis('auto xz') utiliza el escalado automtico slo en direcciones x, z axis(axis) mantiene los ejes en sus actuales valores, de cara a posibles nuevas grficas aadidas con hold on axis('tight') establece los mismos lmites para los ejes que para los datos axis('equal') el escalado es igual en ambos ejes axis('square') la ventana ser cuadrada
26
imagen que se desea representar en ella (por ejemplo la de una imagen bitmap que se desee importar) y el escalado de los ejes ser coherente con dicha imagen axis('normal') elimina las restricciones introducidas por 'equal' y 'square' axis('off') elimina las etiquetas, los nmeros y los ejes axis('on') restituye las etiquetas, los nmeros y los ejes XLim, YLim permiten modificar selectivamente los valores mximo y mnimo de los ejes en las direcciones x e y.
27
Si se llama a la funcin figure sin argumentos, se crea una nueva ventana grfica con el nmero consecutivo que le corresponda. El valor de retorno es dicho nmero. Por otra parte, el comando figure(n) hace que la ventana n pase a ser la ventana o figura activa. Si dicha ventana no existe, se crea una nueva ventana con el nmero consecutivo que le corresponda (que se puede obtener como valor de retorno del comando). La funcin close cierra la figura activa, mientras que close(n) cierra la ventana o figura nmero n. El comando clf elimina el contenido de la figura activa, es decir, la deja abierta pero vaca. La funcin gcf devuelve el nmero de la figura activa en ese momento.
28
close all; clear all clc; x=[-4*pi:pi/20:4*pi]; plot(x,sin(x),'r',x,cos(x),'g') title('Funcin seno(x) -en rojo- y funcin coseno(x) -en verde-') xlabel('ngulo en radianes') ylabel('valor de la funcin trigonomtrica') axis([-12,12,-1,1]), figure plot(x,sin(x),'r',x,cos(x),'g') axis('equal'), figure plot(x,sin(x),'r',x,cos(x),'g') axis('normal'), figure plot(x,sin(x),'r',x,cos(x),'g') axis('square'), figure plot(x,sin(x),'r',x,cos(x),'g') axis('off'), figure plot(x,sin(x),'r',x,cos(x),'g') axis('on'), figure(1) plot(x,sin(x),'r',x,cos(x),'g')
axis('on'), grid
29
La funcin ezplot puede dibujar funciones paramtricas x(t), y(t), como por ejemplo:
*
Desarrollado por: Ing. Juan Vsquez.
30
31
f = inline('cos(x)+2*sin(2*x)'); ezplot(f);
32
33
34
En el men Edit, adems de los comandos referentes a la copia de figuras, aparecen los comandos Figure Properties, Axes Properties, Current Object Properties y Colormap, que abren paso a los correspondientes editores de propiedades. Los tres primeros se muestran en las figuras siguientes
35
36
37
Quizs sea sta una de las caractersticas de MATLAB que ms admiracin despierta entre los usuarios no tcnicos.
38
La primera forma de grfico 3D es la funcin plot3, que es el anlogo tridimensional de la funcin plot. Esta funcin dibuja puntos cuyas coordenadas estn contenidas en 3 vectores.
39
40
Su forma ms sencilla es: >> plot3(x,y,z) que dibuja una lnea que une los puntos (x(1), y(1), z(1)), (x(2), y(2), z(2)), etc. y la proyecta sobre un plano para poderla representar en la pantalla. Al igual que en el caso plano, se puede incluir una cadena de 1, 2 3 caracteres para determinar el color, los markers, y el tipo de lnea: >> plot3(x,y,z,s)
41
>> plot3(X,Y,Z)
en cuyo caso se dibujan tantas lneas como columnas tienen estas 3 matrices, cada una de las cuales est definida por las 3 columnas homlogas de dichas matrices.
42
A continuacin se va a realizar un ejemplo sencillo consistente en dibujar un cubo. Para ello se crear un fichero llamado cubo.m que contenga las aristas correspondientes, definidas mediante los vrtices del cubo como una lnea poligonal continua (obsrvese que algunas aristas se dibujan dos veces). El fichero cubo.m define una matriz A cuyas columnas son las coordenadas de los vrtices, y cuyas filas son las coordenadas x, y y z de los mismos. A continuacin incluye la llamada a la funcin plot3:
43
*
Desarrollado por: Ing. Juan Vsquez.
44
45
Ahora se ver con detalle cmo se puede dibujar una funcin de dos variables (z=f(x,y)) sobre un dominio rectangular. Se ver que tambin se pueden dibujar los elementos de una matriz como funcin de los dos ndices.
46
Sean x e y dos vectores que contienen las coordenadas en una y otra direccin de la retcula (grid) sobre la que se va a dibujar la funcin. Despus hay que crear dos matrices X (cuyas filas son copias de x) e Y (cuyas columnas son copias de y). Estas matrices se crean con la funcin meshgrid.
47
Estas matrices representan respectivamente las coordenadas x e y de todos los puntos de la retcula. La matriz de valores Z se calcula a partir de las matrices de coordenadas X e Y. Finalmente hay que dibujar esta matriz Z con la funcin mesh, cuyos elementos son funcin elemento a elemento de los elementos de X e Y.
48
Vase como ejemplo el dibujo de la funcin sen(r)/r (siendo r=sqrt(x2+y2); para evitar dividir por 0 se suma al denominador el nmero pequeo eps). Ahora vamos a crear un fichero .m que contenga las siguientes lneas.
49
close all
x=-8:0.5:8; y=x; [X,Y]=meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R; mesh(Z)
*
Desarrollado por: Ing. Juan Vsquez.
50
51
Se habr podido comprobar que la funcin mesh dibuja en perspectiva una funcin en base a una retcula de lneas de colores, rodeando cuadrilteros del color de fondo, con eliminacin de lneas ocultas.
52
Ahora vamos a ver la funcin surf. surf(Z) En vez de lneas aparece ahora una superficie faceteada, tambin con eliminacin de lneas ocultas. El color de las facetas depende tambin del valor de la funcin.
53
54
Ahora se procede a graficar una funcin un poco ms compleja, Adems hacer que el programa cambie de mesh a surf despus de 5 segundos.
55
*
Desarrollado por: Ing. Juan Vsquez.
56
57
58