Sunteți pe pagina 1din 58

GRAFICOS Y GENERACIN DE REPORTES

Desarrollado por: Ing. Juan Vsquez.

Al realizar un grfico en MATLAB obviamente es la representacin de un vector o matriz.

En MATLAB se pueden obtener grficos:

2 Dimensiones . 3 Dimensiones.

Desarrollado por: Ing. Juan Vsquez.

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:

Desarrollado por: Ing. Juan Vsquez.

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.

Desarrollado por: Ing. Juan Vsquez.

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

Desarrollado por: Ing. Juan Vsquez.

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.

Desarrollado por: Ing. Juan Vsquez.

Realizar un programa .m que permita graficar la funcin seno(x).

Desarrollado por: Ing. Juan Vsquez.

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

Desarrollado por: Ing. Juan Vsquez.

Desarrollado por: Ing. Juan Vsquez.

Desarrollado por: Ing. Juan Vsquez.

10

Desarrollado por: Ing. Juan Vsquez.

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.

Desarrollado por: Ing. Juan Vsquez.

12

plot(A) dibuja una lnea por cada columna de A en ordenadas, frente al ndice de los elementos en abscisas. Ejemplo:

Desarrollado por: Ing. Juan Vsquez.

13

Desarrollado por: Ing. Juan Vsquez.

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

Desarrollado por: Ing. Juan Vsquez.

15

Nos permite usar colores, formas y estilos de lneas cuando graficamos usando la funcin plot.

Ejemplo:
plot(x,y,'--','color','g')

Desarrollado por: Ing. Juan Vsquez.

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)

Desarrollado por: Ing. Juan Vsquez.

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

Desarrollado por: Ing. Juan Vsquez.

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)

Desarrollado por: Ing. Juan Vsquez.

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:

Desarrollado por: Ing. Juan Vsquez.

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)

Desarrollado por: Ing. Juan Vsquez.

22

Desarrollado por: Ing. Juan Vsquez.

23

Crear una grfica y=f(x) que represente el:

Seno Coseno Tangente Cotangente


Ingresar en cada uno los ejes, ttulos y tipos de lnea.

Desarrollado por: Ing. Juan Vsquez.

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

v=axis devuelve un vector v con los valores [xmin, xmax,

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

Desarrollado por: Ing. Juan Vsquez.

26

axis('image') la ventana tendr las proporciones de la

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.

Desarrollado por: Ing. Juan Vsquez.

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.

Desarrollado por: Ing. Juan Vsquez.

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

Desarrollado por: Ing. Juan Vsquez.

29

La funcin ezplot puede dibujar funciones paramtricas x(t), y(t), como por ejemplo:

>> ezplot('sin(t)','cos(t)'); % dibuja para 0<t<2*pi


>> ezplot('sin(t)','cos(t)', [t1,t2]); % dibuja para t1<t<t2

*
Desarrollado por: Ing. Juan Vsquez.

30

Desarrollado por: Ing. Juan Vsquez.

31

f = inline('cos(x)+2*sin(2*x)'); ezplot(f);

Desarrollado por: Ing. Juan Vsquez.

32

Tambin se puede graficar como funciones polares. ezpolar('sin(2*t).*cos(3*t)',[0 pi])

Desarrollado por: Ing. Juan Vsquez.

33

Desarrollado por: Ing. Juan Vsquez.

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

Desarrollado por: Ing. Juan Vsquez.

35

Desarrollado por: Ing. Juan Vsquez.

36

Desarrollado por: Ing. Juan Vsquez.

37

Quizs sea sta una de las caractersticas de MATLAB que ms admiracin despierta entre los usuarios no tcnicos.

Desarrollado por: Ing. Juan Vsquez.

38

MATLAB tiene posibilidades de realizar varios tipos de grficos 3D.

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.

Desarrollado por: Ing. Juan Vsquez.

39

Ejemplo realizar el grfico correspondiente a una lice. fi=[0:pi/20:6*pi]; plot3(cos(fi),sin(fi),fi,'r'), grid

Desarrollado por: Ing. Juan Vsquez.

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)

Desarrollado por: Ing. Juan Vsquez.

41

Tambin se pueden utilizar tres matrices X, Y y Z del mismo tamao:

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

Desarrollado por: Ing. Juan Vsquez.

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:

Desarrollado por: Ing. Juan Vsquez.

43

% fichero cubo.m close all

A=[0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 1 0 0;0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1;0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 0];


>> plot3(A(1,:)',A(2,:)',A(3,:)')

*
Desarrollado por: Ing. Juan Vsquez.

44

Desarrollado por: Ing. Juan Vsquez.

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.

Desarrollado por: Ing. Juan Vsquez.

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.

Desarrollado por: Ing. Juan Vsquez.

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.

Desarrollado por: Ing. Juan Vsquez.

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.

Desarrollado por: Ing. Juan Vsquez.

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

Desarrollado por: Ing. Juan Vsquez.

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.

Desarrollado por: Ing. Juan Vsquez.

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.

Desarrollado por: Ing. Juan Vsquez.

53

Desarrollado por: Ing. Juan Vsquez.

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.

Desarrollado por: Ing. Juan Vsquez.

55

x=[-3:0.2:3]; y=x; [X,Y]=meshgrid(x,y);

Z = 3*(1-X).^2.*exp(-(X.^2) - (Y+1).^2) ...


- 10*(X/5 - X.^3 - Y.^5).*exp(-X.^2-Y.^2) ... - 1/3*exp(-(X+1).^2 - Y.^2);

figure(gcf), mesh(Z), pause(5), surf(Z)

*
Desarrollado por: Ing. Juan Vsquez.

56

Desarrollado por: Ing. Juan Vsquez.

57

Desarrollado por: Ing. Juan Vsquez.

58

S-ar putea să vă placă și