Está en la página 1de 27

UNIVERSIDAD NACIONAL FEDERICO VILLARREAL

Facultad de Ingeniería Geográfica, Ambiental y Ecoturismo


Escuela de Ingeniería Ambiental

INTRODUCCIÓN A LA
PROGRAMACIÓN USANDO
MATLAB

Lic. Fis. Nabilt Jill Moggiano Aburto


nmoggianoa@unmsm.edu.pe

Lima, 21 Setiembre 2015

1
SESIÓN II:
GRAFICAS EN 2D - 3D Y TRATAMIENTO
DE DATOS

2
ÍNDICE
 Tratamiento de archivos de datos
 Importación y exportación de datos (Excel, txt)
 Visualización de gráficas 2D.
 Visualización de gráficas 3D.

3
Funciones gráficas 2D y 3D elementales
• plot() crea un gráfico a partir de vectores con escalas lineales
sobre ambos ejes,
>> plot(X,Y,’opción’)
opción: permite elegir color y trazo de la curva)

>> x=[1 5 3 7 6]; >> x=1:1:1000;


>> plot(x) >> y=sqrt(x);
>> plot(x,y)
7 35

6 30

25
5

20
4
15

3
10

2
5

1 0
1 1.5 2 2.5 3 3.5 4 4.5 5 0 100 200 300 400 500 600 700 800 900 1000

4
• plotyy(): Dibuja dos funciones con dos escalas diferentes para
las ordenadas, una a la derecha y otra a la izquierda de la figura
>> x=0:pi/200:2*pi;
>> y=sin(x);
>> y1=sqrt(x);
>> plotyy(x,y,x,y1)

1 4

0 2

-1 0
0 1 2 3 4 5 6 7

5
• plot(X,Y,S) Grafica X vs Y con las opciones definidas en S. Usualmente, S
se compone de 3 caracteres entre tildas, el primero de los cuales fija el
color de línea del gráfico, el segundo fija la etiqueta o marca en el nodo y
el último fija el estilo de línea. Los colores, las marcas y los caracteres son
respectivamente, los siguientes:

6
Ejemplo:
>> x=0:pi/40:2*pi;
>> y=cos(x);
>> plot(x,y,'+') % dibuja la línea con el marcador (+)
>> plot(x,y, 'b+') % dibuja la línea de color azul con el marcador (+)
>> plot(x,y, 'g*:')' %dibuja la línea de color verde con marcador (* ) y estilo de
línea (:)

1 1

0.8 0.8

0.6 0.6

0.4 0.4

0.2 0.2

0 0

-0.2 -0.2

-0.4 -0.4

-0.6 -0.6

-0.8 -0.8

-1 -1
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

7
Existen además otras funciones orientadas a añadir títulos al gráfico, a cada uno
de los ejes, a dibujar una cuadrícula auxiliar, a introducir texto, etc. Estas
funciones son las siguientes:
title('título') añade un título al dibujo

xlabel('tal') añade una etiqueta al eje de abscisas. Con xlabel off desaparece.

ylabel('cual') añade 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


también un vector de cadenas de texto de la misma dimensión, cada elemento se
escribe en las coordenadas correspondientes.

gtext('texto') introduce texto con ayuda del mouse: el cursor cambia de forma y se
espera un clic para introducir el texto en esa posición.

legend() define rótulos para las distintas líneas o ejes utilizados en la figura.

grid activa la inclusión de una cuadrícula en el dibujo. Con grid off


desaparece la cuadrícula 8
Ejemplo:

x=0:pi/40:2*pi;
y=cos(x);
plot(x,y,'+')
title('la funcion coseno')
xlabel('eje x')
ylabel('eje y') 1 coseno
coseno
coseno
coseno
coseno
la funcion coseno
coseno
coseno
coseno
coseno
coseno
coseno coseno
text(x,y, 'coseno ') 0.8
coseno
coseno
coseno
coseno
coseno
coseno
coseno coseno
text(3.5,0.2, 'NABILT ') coseno
coseno
coseno
coseno
grid 0.6 coseno
coseno
coseno
coseno
coseno coseno
0.4 coseno coseno
coseno coseno
coseno coseno
0.2 NABILT
coseno coseno
coseno coseno
eje y

0 coseno coseno
coseno coseno
coseno coseno
-0.2
coseno coseno
coseno coseno
-0.4 coseno coseno
coseno coseno
coseno coseno
-0.6 coseno coseno
coseno coseno
coseno coseno
coseno coseno
-0.8 coseno coseno
coseno coseno
coseno coseno
coseno
coseno coseno
coseno
cosenocoseno
coseno
coseno
coseno
coseno
-1 coseno
0 1 2 3 4 5 6 7
eje x

9
>> x = 0:.2:12;
>> plot(x,besselj(1,x),x,besselj(2,x),x,besselj(3,x));
>> legend('primero','Secundo','tercero');

0.6
primero
Secundo
0.5
tercero

0.4

0.3

0.2

0.1

-0.1

-0.2

-0.3

-0.4
0 2 4 6 8 10 12

10
ANADIR LÌNEAS A UN GRAFICO YA EXISTENTE

Existe la posibilidad de añadir líneas a un gráfico ya existente. Se utilizan


para ello los comandos hold on y hold off. El primero de ellos hace que los
gráficos 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
2
x=0:pi/40:2*pi; y=cos(x);
plot(x,y) 1.5

x1=0:pi/40:2*pi;
y1=sin(x1); 1

x2=0.3:pi/40:2*pi; 0.5
y2=log(x2);
hold on 0

plot(x1,y1,'k--')
plot(x2,y2,'r-.') -0.5

hold off
-1

-1.5
0 1 2 3 4 5 6 7

11
• subplot() Una ventana de gráfica se puede dividir en m particiones
horizontales y n particiones verticales, con objeto de representar múltiples
gráficos en ella. Cada una de estas subventanas tiene sus propios ejes y sus
propiedades propias. La forma general de este comando es: subplot(m,n,i)
Donde m y n son el número de subdivisiones en filas y columnas, e i es la
subdivisión que se convierte en activa. Las subdivisiones se numeran
consecutivamente empezando por la primera fila, siguiendo por la segunda
fila, etc.
>> subplot(2,2,3) >> subplot(2,2,2)

12
1 1
Ejemplo, escribir en el editor
0.5 0.5

x=0:pi/40:2*pi; 0 0

y=sin(x); -0.5 -0.5

z=cos(x); -1 -1
0 2 4 6 8 0 2 4 6 8
w=exp(-x*0.1).*y;
v=y.*z; 1 0.5
subplot(2,2,1), plot(x,y) 0.5
subplot(2,2,2), plot(x,z)
0 0
subplot(2,2,3), plot(x,w)
subplot(2,2,4), plot(x,v) -0.5

-1 -0.5
0 2 4 6 8 0 2 4 6 8

Se puede practicar con este ejemplo añadiendo títulos a cada subplot, así
como rótulos para los ejes. Se puede intentar también cambiar los tipos de
línea. Para volver a la opción por defecto basta teclear el comando:
>> subplot(1,1,1)

13
Elección de la escala de los ejes

 axis([x0 x1 y0 y1]) (2D), axis([x0 x1 y0 y1 z0 z1]) (3D)

 axis auto: devuelve la escala a la que está por defecto

 axis off: desactiva los etiquetados de los ejes desapareciendo los ejes, sus
etiquetas y la malla, axis on: lo activa de nuevo

 axis equal: los mismos factores de escala para los dos ejes

 axis square: cierra con un cuadrado la región delimitada por los ejes de
coordenadas actuales.

 Para elegir las etiquetas que aparecen en los ejes:

 set(gca, ‘XTick’,-pi:pi/2,pi) %gca:get current axis


 set(gca, ‘XTicklabel’,({‘-pi’,’-pi/2’,0,’pi/2’,’pi’})

14
GRAFICAS EN 3D
• plot3(x,y,z) ._Que dibuja una línea 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.

Ejemplo:

>> x=0:0.5:4, y=1+x.^2, z=log(1+x)


>> plot3(x,y,z,'r')
>> grid

1.5

0.5

0
20
15 4
10 3
2
5 1
0 0

15
Gráficos de superficies en 3D

[X, Y]=meshgrid(x,y): Creación de una malla a partir de vectores

x =[1 2 3]; Observación:


y =[4 5 6 7]; El vector x=[1 2 3] representa el Eje X y el
[X,Y]=meshgrid(x,y) vector y=[4 5 6 7] representa el Eje Y.

mesh(X,Y,Z,C): Representa el gráfico de malla de la función z=f(x,y),


dibujando las líneas de la rejilla que componen la malla con los colores
especificados en C. El argumento C se puedo ignorar.
x=-4:0.25:4; y=-6:0.25:6; 60

[X,Y]=meshgrid(x,y); 50

40
Z=X.^2+Y.^2; 30
mesh(X,Y,Z) 20

10

0
10
5 4
0 2
0
-5 -2

Ejemplo: superficie.m y ver en Demos: Graphics


-10 -4

16
• meshz(X,Y,Z,C) Representa el gráfico de malla de la función z= f(x,y) con
una especie de cortina o telón en la parte inferior.
60

x=-4:0.25:4; y=-6:0.25:6; 50

[X,Y]=meshgrid(x,y);
40

30

Z=X.^2+Y.^2; 20

meshz(X,Y,Z) 10

0
10
5 4
0 2
0
-5 -2
-10 -4

• meshc(X,Y,Z,C) Representa el gráfico de malla de la función z=f(x,y)


con el grafico de contorno correspondiente (curvas de nivel
proyectadas sobre el plano XY).
60

50
x=-4:0.25:4; y=-6:0.25:6; 40

[X,Y]=meshgrid(x,y); 30

Z=X.^2+Y.^2;
20

10

meshc(X,Y,Z) 0
10
5 4
0 2
0
-5 -2
-10 -4

17
• surf(X,Y,Z)._Representa el grafico de superficie de la función z=f(x,y),
realizando el dibujo con los colores especificados en C. El argumento en C
se puede ignorar.
60

50

x=-4:0.25:4; y=-6:0.25:6; 40

[X,Y]=meshgrid(x,y); 30

Z=X.^2+Y.^2;
20

10

surf(X,Y,Z) 0
10
5 4
0 2
0
-5 -2
-10 -4

• surfl(X,Y,Z,C)._Representa el grafico de superficie de la función


z=f(x,y), realizando el dibujo sombreado.
60

x=-4:0.25:4; y=-6:0.25:6; 50

40
[X,Y]=meshgrid(x,y); 30

Z=X.^2+Y.^2; 20

surfl(X,Y,Z) 10

0
10
5 4
0 2
0
-5 -2
-10 -4

18
CURVAS DE NIVEL

• contour(X,Y,Z) Dibuja el gráfico de contorno (curvas de nivel) para la


matriz (X,Y,Z),. El número de líneas de contorno a utilizar es automático.
6

x=-4:0.25:4; y=-6:0.25:6;
4

[X,Y]=meshgrid(x,y); 2

Z=X.^2+Y.^2; 0

contour(X,Y,Z) -2

-4

-6
-4 -3 -2 -1 0 1 2 3 4

• contuor(X,Y,Z,n) Dibuja el gráfico de contorno (curvas de nivel)


para las coordenadas (X,Y,Z). Usando n líneas de contorno.
6

x=-4:0.25:4; y=-6:0.25:6;
4

[X,Y]=meshgrid(x,y); 2

Z=X.^2+Y.^2; 0

contour(X,Y,Z,4) -2

-4

-6
-4 -3 -2 -1 0 1 2 3 4

19
• contuor3(X,Y,Z,n) Dibuja los gráficos de contorno en 3 dimensiones, con
n curvas

x=-4:0.25:4; y=-6:0.25:6; 50

[X,Y]=meshgrid(x,y); 40

30
Z=X.^2+Y.^2; 20

contour3(X,Y,Z,20) 10

0
5
4
0 2
0
-2
• pcolor(X,Y,Z)._Dibuja un gráfico de contorno (curvas de nivel) para la
-5
-4

matriz (X,Y,Z) utilizando una representación basada en densidades de


colores. Suele denominarse gráfico de densidad.
6

x=-4:0.25:4; y=-6:0.25:6; 2

[X,Y]=meshgrid(x,y);
Z=X.^2+Y.^2; 0

pcolor(X,Y,Z) -2

-4

-6
-4 -3 -2 -1 0 1 2 3 4

20
Creación de películas

 Una película se compone de varias imágenes (frames)

 getframe se emplea para guardar todas esas imágenes. Devuelve


un vector columna con la información necesaria para reproducir la
imagen que se acaba de representar, por ejemplo con la función
plot. Esos vectores se almacenan en una matriz M.

 movie(M,n,fps) representa n veces la película almacenada en M a


una velocidad de fps imágenes por segundo

x=0:0.01:2*pi;
for j=1:10
plot(x,sin(j*x)/2)
M(j)=getframe;
end
movie(M,4,6)

 Ejemplo: pelicula.m
21
TRATAMIENTO DE DATOS

22
Para importar un archivo de texto

Este ejemplo muestra como importar dato desde un archivo de texto con encabezados de
columnas y datos numericos, usando la herramienta Import data. Guarde la siguiente
tabla con encabezados con el nombre de archivo tabla.txt:

John Ann Mark Rob


88.4 91.5 89.2 77.3
83.2 88.0 67.8 91.0
77.8 76.3 92.5
92.1 96.4 81.2 84.6

Si se usa la funcion Import data del menu File para importar los datos, se visualiza la
ventana de Import Wizard que se muestra en la figura:

Ventana de Import Wizard.

23
IMPORTACIÓN Y EXPORTACIÓN DE DATOS EXCEL

Veamos cómo transferir datos desde/hacia hojas de cálculo Excel. Microsoft Excel es
una herramienta muy utilizada para la gestión de datos, además los datos que maneja
esta aplicación son altamente compatibles con bastantes tipos de dispositivos y
aplicaciones convencionales.

Importación de datos (xlsread)

Para llevar a cabo la importación de datos desde Excel se utiliza el comando xlsread.
Este comando importa los datos de una hoja de cálculo Excel a una variable de tipo
array. La forma mas simple de utilizar este comando es:

nombre_variable = xlsread('nombre_archivo')

La ubicación del archivo debe ser el directorio de trabajo actual o bien estar en la ruta de
búsqueda.

Si el archivo Excel importado tiene mas de una hoja de calculo sólo se importan los
datos de la primera de las hojas.

24
Si un archivo Excel contiene mas de una hoja, se puede utilizar otra versión del
comando xlsread para decidir cual de ellas importar:

nombre_variable=xlsread('nombre_archivo','nombre_hoja')

El nombre de la hoja debe introducirse como cadena. Otra opción permite importar sólo
una región de una hoja de cálculo determinada a partir de un archivo Excel:

nombre_variable=xlsread('nombre_archivo','nombre_hoja','rango’)

El 'rango‘, es una región rectangular de la hoja definida por la dirección de las celdas con
respecto a las esquinas opuestas (sup-izq:inf-der) p/e ‘C2:E5’

Ejemplo: importacion.m

datos_aleatorios=xlsread('ejemplo1.xlsx');
datos_aleatorios2=xlsread('ejemplo2.xlsx');
concentracion_pacientes=xlsread('ejemplo2.xlsx','Hoja2');
calificaciones_finales=xlsread('ejemplo2.xlsx','Hoja3','P2:R9');

También se puede importar datos tecleando el comando uiimport desde la propia


Ventana de Comandos.

25
Exportación de datos (xlswrite)

El proceso inverso, es decir, la exportación de datos MATLAB a una hoja Excel, se lleva a
cabo mediante el comando xlswrite, cuya sintaxis en su versión reducida es:

xlswrite('nombre_archivo',nombre_variable)

'nombre_archivo', introducido como cadena, es el nombre del archivo Excel al cual se


quieren exportar los datos. El archivo debe estar en el directorio actual. Si el archivo no
existe se crea con el nombre especificado.

Ejemplo: exportacion.m

x=rand(12,20);
y=ones(12,22);
z=eye(11);
xlswrite('ejemplo3.xlsx',x);
xlswrite('ejemplo3.xlsx', y, 'Hoja2');
xlswrite('ejemplo3.xlsx', y, 'Hoja3','B2:W13');

26
Fin de la Sesión II

Lima, 21 Setiembre 2015

27