Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 2 Graficos en Matlab-5150
Tema 2 Graficos en Matlab-5150
Grficos en MATLAB
TEMA 2
Grficos en MATLAB
1. Introduccin ............................................................................................................... 1
2. Objetos grficos ......................................................................................................... 3
2.1 Objetos LINE ......................................................................................................... 4
2.2 Objetos TEXT ........................................................................................................ 9
2.3 Objetos PATCH ................................................................................................... 10
2.4 Objetos SURFACE .............................................................................................. 11
2.5 Objetos LIGHT .................................................................................................... 14
2.6 Objetos IMAGE ................................................................................................... 14
3. Grficos especficos ................................................................................................. 17
3.1 Grficos para presentaciones.............................................................................. 17
3.2 Probabilidad y estadstica ................................................................................... 19
3.3 Respuesta frecuencial de sistemas lineales ......................................................... 25
3.4 Respuesta temporal de sistemas lineales ............................................................. 25
3.5 Otras funciones relacionadas con la teora de sistemas ..................................... 26
4. Animaciones ............................................................................................................. 27
1. Introduccin
El objetivo de este tema es presentar una panormica de las capacidades grficas del
programa MATLAB.
Para ver las funciones relacionadas con los objetos grficos de MATLAB, teclear:
>> help graph2d
>> help graph3d
>> help specgraph
2. Objetos grficos
Los objetos grficos de MATLAB presentan la siguiente jerarqua bsica:
root
figure
ui objects
line
surface
patch
axes
annotation
image
text
light
(Nota: Hay ms objetos y grupos de objetos pero aqu no se muestran a fin de dar ms
claridad a la exposicin. Para ms detalles consultar graphics objects en el help de
MATLAB)
El objeto root es la ventana de comandos. Ningn objeto de los mostrados en el
esquema anterior puede existir si no existe root (es otras palabras, si no est abierto el
programa MATLAB no podemos tener ni figures, ni axes, etc.).
Cuando en root hacemos >>plot(t,y) se crean todos los objetos necesarios para la
representacin (figure axes line), si es que antes no existan.
>> x=0:10;
>> plot(x,x)
Handle: Todos los objetos grficos tienen un handle (nmero que lo identifica) y un
conjunto de propiedades (Color, Position, etc.). Algunas de las propiedades
pueden modificarse pero otras no. El handle del objeto root es 0.
Para obtener el handle de un objeto figure se usa la funcin gcf (get current figure).
>> gcf
ans =
1
Para obtener el handle de un objeto axes se usa la funcin gca (get current axes).
>> gca
ans =
158.0017
ZTickMode = auto
BeingDeleted = off
Visible = on
Todas estas opciones tambin pueden consultarse y modificarse desde la barra de mens
de las figuras. Por ejemplo, desde Edit Figure Properties.
o bien
>>x=linspace(0,12,200);
Paso 2) Eje y: Crear un vector con los valores correspondientes al eje de ordenadas.
Las dimensiones de los vectores x e y deben ser iguales. De hecho, y en general, y
se calcula a partir de x, con lo cual la compatibilidad de dimensiones est
garantizada.
Por ejemplo,
>>y1=bessel(1,x);
>>y2=bessel(2,x);
>>y3=bessel(3,x);
Por otro lado, si quisiramos representar un valor constante a lo largo del eje x, lo
que podemos hacer es >>plot(x,2*ones(size(x))) ya que la funcin ones crea
un vector con las mismas dimensiones que x pero cuyas componentes son todo
unos. Otra opcin sera >>plot(x,x*0+2).
Tambin es posible:
>>axis square
>>axis normal
La funcin axis tiene muchas opciones (auto, manual, normal, square, ij, xy, tight, on,
off)
Paso 5) Rejilla: Para poner una rejilla la instruccin es grid (tambin grid on y grid
off). Se pueden poner o quitar las lneas superior y derecha (box on, off) e incluso
los ejes (axis on, off)
>>
>>
>>
>>
>>
>>
>>
th=linspace(0,2*pi,101);
x=sin(th);
y=sin(2*th+pi/4);
plot(x,y,'k-')
grid on
box off
axis off
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
-0.2
-0.2
-0.4
-0.4
-0.6
-0.6
-0.8
-0.8
-1
-1
-0.5
0.5
-1
-1
-0.5
0.5
O bien
>>plot(t,y1),hold on
>>plot(t,y2)
>>plot(t,y3),hold off
Paso 8)
Dos grficas:
>> subplot(212),plot(x,y2)
>> subplot(211),plot(n,'og')
Cuatro grficas:
>>
>>
>>
>>
>>
x=linspace(0,12);y1=bessel(1,x);y2=bessel(2,x);y3=bessel(3,x);
subplot(221),plot(x,y1)
subplot(222),plot(x,y2)
subplot(223),plot(x,y3)
subplot(224),plot(x,x)
con lo que aparece un cursor sobre la grfica actual. Con el ratn se van
capturando puntos y cuando se tienen los suficientes se pulsa <Enter> para volver a
la ventana de comandos y ver las coordenadas capturadas.
Paso 10) Salvar y recuperar figuras: Para guardar un objeto figure seleccionar, en
la barra de mens las opciones File Save. La figura se guardar en un fichero de
extensin *.fig, por ejemplo, figu.fig. Para recuperar la figura, basta con teclear
>> openfig('figu')
xlabel('x')
ylabel('y_1 , y_2 , y_3')
title('Funciones de Bessel de primera especie')
legend('1^e^r orden','2^o orden','3^{er} orden',-1)
text(6,0.5,'hoolaaa')
La funcin gtext (graphics text) hace lo mismo que text pero inserta el texto all
donde se clica con el ratn, en vez de indicarle las coordenadas. Si se quiere escribir
varias lneas en un gtext, se hace as:
>> gtext({'y_1: 1^e^r orden','y_2: 2^o orden','y_3: 3^e^r orden'});
Tambin es posible usar letras del alfabeto griego. Basta con poner el nombre de la
letra detrs del smbolo \: \alpha, \beta,...
>> title('y_1(\phi)=(\phi-sin(\phi))/2');
Se recomienda hacer >>help TeX. Esta utilidad permite tambin escribir expresiones
matemticas (fracciones, races cuadradas,).
Finalmente, tambin es posible insertar otros smbolos, como por ejemplo flechas:
>> text(0.3,0.4,'\downarrow','FontSize',10)
Otra funcin til para usar dentro de un objeto text es num2str (number to string):
>> r=2.5;
>> text(0.4,0.3,['radio = ',num2str(r)])
x=[3 3 7 7];
y=[5 6.5 6.5 5];
fill(x,y,'r')
axis([0 10 4 7.5])
>>
>>
>>
>>
x=[3 3 7 7];
y=[5 6.5 5 6.5];
fill(x,y,'r')
axis([0 10 4 7.5])
Verde = [0 1 0]
10
Azul = [0 0 1]
Magenta = [1 0 1]
Negro = [0 0 0]
b
m
k
Cyan = [0 1 1]
Amarillo = [1 1 0]
Blanco = [1 1 1]
c
y
w
Tambin existen mapas de colores (colormap) hsv, hot, cool, summer, gray, jet.
x=linspace(0,6,100);
plot(x,cos(x),'k-',x,1./cosh(x),'k--',[4.73 4.73],[-1 1],'k')
hold on
xn=linspace(0,4.73,50);
fill([xn,fliplr(xn)],[1./cosh(xn),fliplr(cos(xn))],'c')
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
-0.2
-0.2
-0.4
-0.4
-0.6
-0.6
-0.8
-0.8
-1
>>
>>
>>
>>
>>
-1
x=linspace(0,6,100);
plot(x,cos(x),'k-',x,1./cosh(x),'k--',[4.73 4.73],[-1 1],'k')
hold on
xx=linspace(0,4.73,20);
plot([xx;xx],[cos(xx);1./cosh(xx)],'k-')
11
Tambin se pueden obtener curvas de nivel con contour o meshc (que combina la
superficie con las curvas de nivel). Los diagramas de contorno se rotulan con clabel.
Se puede cambiar el color de la representacin con colormap (por ejemplo >>colormap
gray), shading, hidden, brighten. Tambin se puede cambiar desde la barra de
mens (Edit Colormap)
12
Se pueden controlar los ejes con axis, zoom, grid, box, hold, axes, subplot. Se
puede rotar la representacin con rotate3d, viewmtx o view (o con ayuda de View
Camera Toolbar.) Se sugiere explorar las posibilidades del men de la ventana de
Figura.
>> z=peaks;surf(z)
13
1
0.5
1
0.8
0.6
-0.5
0.4
0.2
-1
1
0
2
0.5
1
2
1
-1
1
0
-0.5
-1
-2
0
-1
-2
-1
14
>>X=imread('earth1','gif');
>>X=imread('earth1.gif');
>>imfinfo('earth1.gif')
ans =
Filename: 'earth1.gif'
FileModDate: '17-May-2000 01:49:46'
FileSize: 58178
Format: 'GIF'
FormatVersion: '87a'
Width: 601
Height: 353
BitDepth: 7
ColorType: 'indexed'
FormatSignature: 'GIF87a'
BackgroundColor: 0
AspectRatio: 0
ColorTable: [128x3 double]
Interlaced: 'no'
El display de la imagen se hace con 2 posibles tipos de datos: double (doble precisin
coma flotante, 64 bits) y uint8 (entero sin signo, 8bit). Las funciones son image y
imagesc. Es posible poner una barra con los colores presentes, colorbar.
Una imagen consiste en una matriz de datos X (formada por pxeles) y una matriz con
los colores que pueden tomar cada uno de los pxeles. Hay cuatro tipos de imgenes:
indexada, de intensidad, binaria y truecolor.
Imagen indexada: Los elementos de la matriz de pxeles X son los ndices de las filas
de la matriz de color (sta tiene 3 columnas R,G,B y tantas filas como colores presentes
en la imagen).
>> load earth
>> image(X),colormap(map),colorbar('vert')
15
>> Y=X/64;
>> imagesc(Y,[0 1]),colormap(gray),colorbar('vert')
>> rgb=imread('ngc6543a.jpg');
>> size(rgb)
ans =
650
600
3
>> image(rgb)
Hay toolboxes especficas que hacen un uso ms intensivo de las imgenes. Ver por
ejemplo, las demos de las Image Processing Toolbox, Mapping Toolbox, Virtual Reality
Toolbox.
16
3. Grficos especficos
Segn sean las aplicaciones, existen tipos de representacin especficos. Por ejemplo,
en estadstica es comn representar la informacin por medio de histogramas, diagramas
de dispersin, barras de error, etc. A medida que han ido apareciendo ms toolboxes,
MATLAB ha ido incorporando funciones para la representacin de diferentes tipos de
grficos especiales.
0.2778
0.2222
19%
19%
41%
22%
22%
41%
11%
22%
22%
11%
28%
33%
33%
6%
28%
6%
17
3500
25
3000
2500
20
2500
2000
15
2000
1500
1500
10
1000
1000
5
500
0
-4
500
-3
-2
-1
0
-5
-4
-3
-2
-1
10
11
12
13
14
Pila
10
20
15
6
10
4
5
2
0
Pila horizontal
Grosor 1.5
10
3
4
1
0
10
15
20
18
u=-2.9:0.1:2.9;
e=0.1*rand(size(u));
y=exp(-u.*u);
errorbar(u,y,e)
19
Diagramas de dispersin:
load carsmall
figure,scatter(Weight,MPG),xlabel('Weight'),ylabel('MPG')
figure,gscatter(Weight,MPG,Model_Year,'bgr','xos')
45
45
70
76
82
40
40
35
35
30
25
MPG
MPG
30
20
25
20
15
15
10
10
5
1500
2000
2500
3000
3500
Weight
4000
4500
5000
5
1500
2000
2500
3000
3500
Weight
4000
4500
5000
El fichero carsmall.mat contiene los siguientes datos sobre 100 coches: Acceleration,
Cylinders, Displacement, Horsepower, MPG (consumo: miles-per-gallon), Model,
Model_Year, Origin, Weight.
Diagramas de caja:
boxplot(MPG, Origin)
45
40
35
Values
30
25
20
15
10
USA
France
Japan
Germany
Sweden
Italy
Hay un outlier. Se trata de un coche para el cual MPG>40. Para identificar cul es, se
puede hacer:
20
>> find(MPG>40)
ans =
97
Diagramas de distribucin:
Diagrama de probabilidad normal: Sirve para determinar si un conjunto de datos est
distribuido de forma Gaussiana. La lnea continua conecta los percentiles 25 y 75.
x=normrnd(10,3,100,1);
figure,normplot(x)
x=exprnd(10,100,1);
figure,normplot(x)
Normal Probability Plot
0.997
0.99
0.98
0.99
0.98
0.95
0.95
0.90
0.90
0.75
0.75
Probability
Probability
0.50
0.50
0.25
0.25
0.10
0.10
0.05
0.05
0.02
0.01
0.02
0.01
0.003
0.003
2
10
Data
12
14
16
10
15
20
Data
25
30
35
40
21
h =
1
Puesto que de nuevo h=1, se puede rechazar la hiptesis nula de que la muestra est
distribuida como N(m,). Nos quedamos pues con la hiptesis alternativa (que dice que
la muestra NO est distribuida como N(m,)).
La funcin kstest, por defecto, rechaza la hiptesis nula (h=1) si el nivel de
significancia es del 5%, esto es, si el valor de p es menor que 0.05, cosa que ocurre en
nuestro caso. (Si el valor de p hubiera sido mayor que 0.05, h hubiera dado 0).
Probability
0.5
0.25
0.1
0.05
0.01
0.005
10
Data
22
x=normrnd(5,1,100,1);
y=wblrnd(2,0.5,100,1);
figure,qqplot(x,y)
35
14
30
12
25
Y Quantiles
Y Quantiles
10
20
15
10
10
12
X Quantiles
14
16
-5
18
3.5
4.5
5
5.5
X Quantiles
6.5
7.5
F(x)
0.6
0.5
0.4
0.3
0.2
0.1
0
-20
-15
-10
-5
x
10
23
0.14
0.2
0.18
0.12
0.16
0.1
0.14
0.12
0.08
0.1
0.06
0.08
0.06
0.04
0.04
0.02
0.02
0
-10
-5
10
10
15
Otras funciones son: betapdf (Beta), binopdf (binomial), exppdf (exponencial), unifpdf
(uniforme), etc
0.4
2
0.3
1
0.2
y
0.1
-1
0
4
2
4
2
0
-2
y
-2
0
-2
-4
-4
-3
-3
-2
-1
0
x
bar3(F)
0.4
0.3
0.2
0.1
0
0
10
30
20
20
30
10
40
24
Funciones: Las funciones son bode (para representar diagramas de Bode), nyquist
(para representar diagramas polares), nichols (para representar diagramas faseganancia) y freqs (para obtener los valores de la representacin en cartesianas). Se
sugiere hacer >>help nombre_funcion.
Sintaxis: Hay varios niveles:
El ms sencillo (ver Fig. a) es:
>> bode(num,den)
(a)
(b)
(c)
El sistema H ( s )
2
se entra igual que en el apartado anterior.
s 0.5s 1
2
25
Funciones: Las funciones son impulse (para la respuesta a impulso), step (para la
respuesta indicial, a escaln unitario) y lsim (linear simulation, para excitaciones
arbitrarias tales como rampas, sinusoides, combinaciones de seales,...). Se sugiere
hacer >>help nombre_funcion.
Sintaxis: Hay varios niveles (notar el uso del punto y coma):
El ms sencillo (ver Fig. a) es:
>> step(num,den)
(a)
(b)
(c)
Para simular excitaciones generales, primero hay que definir cules son stas:
>>
>>
>>
>>
>>
>>
t=linspace(0,60,100);
u=sin(0.2*t);
y=lsim(num,den,u,t);
plot(t,u,t,y)
legend('u','y'),
xlabel('Tiempo [s]')
(d)
26
Root Locus
6
2
Imaginary Axis
>> num=1;
>> den=conv([1 3 0],[1 2]);
>> rlocus(num,den)
-2
-4
-6
-10
-8
-6
-4
-2
Real Axis
4. Animaciones
Animaciones: Las animaciones se consiguen con ayuda de las funciones moviein (de
inicializacin), getframe (captura de cada uno de los fotogramas o frames) y movie
(animacin propiamente dicha). (Nota: moviein no es necesaria en las versiones ms
recientes)
Ejemplo 8. Movimiento Browniano
n=300;s=0.02;
n_tr=50;
x=rand(n,1)-0.5;
y=rand(n,1)-0.5;
h=plot(x,y,'.')
set(h,'MarkerSize',18)
axis([-1 1 -1 1])
axis square
grid off
M=moviein(n_tr);
for k=1:n_tr
x=x+s*randn(n,1);
y=y+s*randn(n,1);
set(h,'XData',x,'YData',y)
M(:,k)=getframe;
end
movie(M,5)
27
Vdeos: Para crear vdeos se puede utilizar, por ejemplo, la funcin avifile. Las
tramas van aadindose al vdeo por medio de la funcin addframe. Finalmente, se
cierra el vdeo con close.
El siguiente ejemplo muestra la creacin de un fichero de vdeo (de nombre soroll.avi)
basado en el movimiento browniano del apartado anterior.
28
mov=close(mov);
El fichero de vdeo creado puede insertarse luego en otras aplicaciones, tales como el
Power Point (Insertar Pelculas y sonidos Pelcula de archivo). Ello resulta muy
til a la hora de presentar trabajos o proyectos fin de carrera.
Imgenes animadas: Para ver imagnes animadas (ficheros multi-trama, etc.) se puede
usar la funcin immovie. Para ilustrarlo, ver el siguiente ejemplo de MATLAB:
>> load mri
>> mov=immovie(D,map);
>> movie(mov)
o bien
[x,map]=imread('nombre_fichero.extensin','frames','all');
Tambin es posible crear una imagen multiframe tomando los fotogramas por separado
y juntndolos con ayuda de la funcin cat:
A = cat(4,A1,A2)
Aqu A1 y A2 seran las dos imgenes que forman la animacin. El 4 est porque este
tipo de variable es un array de 4 dimensiones m x n x 3 x 2, donde m x n son los pixels
de la imagen, el 3 es corresponde a una imagen true-color (contiene una matriz de tres
columnas correspondiendes a rgb, y cada pixel va referido a uno de estos 256 colores) y
el 2 es el nmero de fotogramas.
29