Professional Documents
Culture Documents
en Matlab
http://www.mathworks.es/acade
mia/student_center/tutorials/ind
ex.html?s_tid=acmain_lrn_tut
TUTORIALES DE MATLAB
La ventana de grficos
Permite editar
un grfico y
retocar su
aspecto
Hacer zoom
Rotarlo (3D)
Realizar
cculos
Aadir titulos y
leyendas.
Etctera
Representacin grfica
La visualizacin difiere entre Matlab y Octave
>> x = linspace(0,pi,30);
>> y = sin(x);
>> plot(x,y);
>> grid on;
>> hold on;
>> plot(x,exp(-x),'r*')
matlab
GUIoctave
Representacin grfica
Figuras 2D
Representacin grfica
Figuras 3D
>> x = -2:1:2;
>> y = [4 1 0 3 -1];
>> plot (x,y)
Representacin grfica en 2D
Representacin grfica
(plot)
Ejemplos 2D
10
>>x=[0:0.1:2];
>>y=sin(x);
>>y2=cos(x);
>> plot(x,y,'r*-',x,y2,'go--');
1
Grfica: sin( )
1
0.9
0.8
0.5
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-0.5
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
>> plot([x,x],[y,y],'k');
>>%Se pueden poner letras griegas y smbolos
%Ver Grficos con Matlab.doc
Otros ejemplos:
axis(equal)
axis(square)
axis(normal)
axis(off)
1.5
Restablece los
ejes a los
valores por
defectos.
0.5
Quita el enmarcado.
-0.5
-1
-1.5
-2
-1
12
xlim([xmin xmax])
ylim([ymin ymax])
Comandos para modificar figuras:
1.5
1
0.5
funcin
>> x=0:.1:2*pi;
y=sin(x);
plot(x,y,'b',x,exp(-x),'r*')
grid on
>> axis([-1 7 -2 2])
>> title('sinusoide y exponencial')
xlabel('x (radianes)')
ylabel('funcin')
legend('sen(x)','exp(-x))
sinusoide y exponencial
0
-0.5
-1
-1.5
-2
-1
3
x (radianes)
13
3
Approximations of sin(t)
>> t=linspace(0,2*pi,100);
>> y1=sin(t); y2=t;
>> y3=t-(t.^3)/6+(t.^5)/120;
>> plot(t,y1,t,y2,'--',t,y3,'o')
>> axis([0 5 -1 5])
>> xlabel('t')
>> ylabel('Approximations of sin(t)')
>> title('Fun with sin(t)')
>> text(3.5,0,'sin(t)')
>> gtext('Linear approximation')
>> gtext('First 3 terms in Taylor series')
Linear approximation
-1
sin(t)
0.5
1.5
2.5
t
14
3.5
4.5
Representacin grfica
Ejemplos 2D con plot
15
>> x=rand(1,100);
>> y=rand(1,100);
>> plot(x,y,'+')
>> hold on
>> plot(y,x,'g>')
>> text(.5,.5,'punto
medio')
>> gtext('otro punto')
1
otro punto
0.9
0.8
0.7
0.6
0.5
punto medio
0.4
0.3
0.2
0.1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
16
1
0.8
x = -3*pi:pi/10:3*pi;
y=sin(x)./x
figure
hold on
plot(x,y,'r--','LineWidth',1)
0.6
0.4
0.2
-0.2
-0.4
-10
-8
-6
-4
-2
10
1
0.8
0.6
plot(x,y, 's','LineWidth',2)
0.4
0.2
0
-0.2
-0.4
-10
plot(x,y,'s','LineWidth',2,'MarkerFaceColor','g')
-8
-6
-4
-2
10
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-10
-8
-6
-4
-2
10
17
Representacin grfica
Subplot: varios grficos por figura
Subplot(m,n,p)
El comando subplot subdivide
el grafico en mxn (m-filas y ncolumnas) subventanas y inserta
el grafico en la ventana p.
p=1
p=2
p=3
p=4
p=5
p=6
p=7
p=8
18
Representacin grfica
Subplot: varios grficos por
n de filas
subplot(m,n,p) m: figura
p: m x n
n: n de columnas
El comando subplot subdivide el grfico en mxn (m-filas y ncolumnas) subventanas e inserta el grfico en la ventana p.
1
>> subplot(3,2,1)
>>
plot(1:10,rand(1,10),'b')
>> subplot(3,2,2)
>>
plot(1:10,rand(1,10),'r')
>> subplot(3,2,3)
>>
plot(1:10,rand(1,10),'g')
>> subplot(3,2,6)
>>
p=1
0.5
0
p=2
0.5
10
10
1
0.5
0
p=
3
5
p=4
10
1
p=5
p=6
0.5
0
10
19
Representacin grfica
(fplot y semilogx)
30
Funcin: fplot
Ejemplo: f(t)=t sin t, 0t10
20
10
-10
-20
-30
10
15
20
25
30
0 -3
10
-2
10
20
-1
10
10
Representacin grfica
(polar y loglog)
Funcin: loglog
Ejemplo: x=et, y=100+e2t, 0t2
10
10
>> t=linspace(0,2*pi,200);
>> x=exp(t);
>> y=100+exp(2*t);
>> loglog(x,y), grid
10
10
10 0
10
10
Funcin: polar
Ejemplo: r2=2 sin 5t, 0t2
10
90
10
1.5
120
60
1
>> t=linspace(0,2*pi,200);
>> r=sqrt(abs(2*sin(5*t)));
>> polar(t,r)
150
30
0.5
180
210
330
240
300
21
270
Representacin grfica
(stem)
Funcin: stem(X,Y)
Representa los datos Y con una lnea desde el eje x hasta cada punto Y
terminando en un crculo
0.5
0.4
>> x=0:.5:20;
>> y=sin(x)./(x+1);
>> stem(x,y)
0.3
0.2
0.1
0
-0.1
-0.2
10
12
14
16
18
20
22
>>x=[0:0.1:2];
>>y=sin(x);
>> plot(x,y,r-')
>> hold on; stem(x,y);
hold of
>>grid on
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
23
Representacin grfica
(Plotyy)
Permite representar dos grficos en la misma
figura. Los grficos poseen eje x comn y eje y
distinto. Uno a la derecha y otro a la izquierda.
>>
>>
>>
>>
>>
x1=[0:0.1:10];
y1=2*x1.^2+1;
x2=[1:0.2:12];
y2=-2*x2.^2-1;
plotyy(x1,y1,x2,y2)
300
200
-100
100
-200
24
10
-300
12
-8
-6
-4
-2
-1
10
>>[a]=plotyy(x,y,x,y2)
>> set(get(a(2),'Ylabel'),'String','Funcin seno')
>> set(get(a(1),'Ylabel'),'String','Sin(x)/x')
Sin(x)/x
0.5
0.5
-0.5
-0.5
-1
-10
-8
-6
sin(x)/x
-2
-1
10
-1
-10
-4
-8
-6
-4
-2
-1
10
sin(x)
>>
>>
>>
>>
>>
Funcin seno
-1
-10
25
Representacin grfica
(quiver)
>> x=0;
>> y=0;
>> vx=2;
>> vy=3;
>>
quiver(x,y,vx,vy,0)
Use s=0 to plot the arrows
without the automatic
scaling.
2.5
2
1.5
1
0.5
0
-0.5
-1
0.5
1.5
26
2.5
Representacin grfica
(errobar)
Permite aadir barras de error a un grfico
errorbar(x,y,e), representa grficamente los
valores del vector y frente a los del vector x y
aade barras de error de anchura (+e e) (e
debe tener el mismo tamao que x e y)
2
1.5
>>
>>
>>
>>
x = 1:10;
y = sin(x);
e =std(y)*ones(size(x));
errorbar(x,y,e)
0.5
0
-0.5
-1
ERRORBAR(X,Y,L,U)
-1.5
-2
27
10
12
Representacin grfica
(bar)
Funcin: bar
Ejemplo: r2=2 sin 5t, 0t2, y=r sin t
>> t=linspace(0,2*pi,200);
>> r=sqrt(abs(2*sin(5*t)));
>> y=r.*sin(t);
>> bar(t,y)
>> axis([0 pi 0 inf]);
1.4
1.2
0.8
0.6
0.4
0.2
0.5
1.5
28
2.5
Representacin grfica
(area)
Funcin: area
Ejemplo: y=sin(x)/x, -3 x 3
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-8
-6
-4
-2
0
x
0.4
0.2
0
sin(x)./x
sin(x)./x
>> x=linspace(-3*pi,3*pi,100);
>> y=-sin(x)./x;
>> area(x,y)
>> xlabel('x'), ylabel('sin(x)./x')
>> hold on
>> x1=x(46:55); y1=y(46:55);
>> area(x1,y1,'facecolor','y')
-0.2
-0.4
> area(x(35:46),y(35:46),'FaceColor','c')
-0.6
-0.8
-1
-8
-6
-4
-2
0
x
29
2
Histogramas
Se usan en Estadstica.
hist(x,m)
x=vector con los datos para los que se quiere calcular el histograma,
3000se divide el rango de valores de x (por
m=nmero de intervalos en que
defecto 10)
2500
>> z=randn(1,10000);
>>hist(z)
>> hist(z,20)
2000
1500
1000
500
0
-4
-3
-2
-1
301
LON
80
60
>>
>>
>>
>>
>>
LAT=-90:10:90;
LON=0:10:360;
[X,Y]=meshgrid(LON,LAT);
Z=sind(X).*cosd(Y);
contour(X,Y,Z)
40
20
0
-20
-40
-60
-80
0
50
100
150
200
250
30031
350
Representacin grfica
(contour)
Ejemplo:
z=-0.5 x2 +xy+y2, |x| 5, |y| 5
>> r=-5:.2:5;
>> [X,Y]=meshgrid(r,r);
>> Z=-.5*X.^2+X.*Y+Y.^2;
>> cs=contour(X,Y,Z);
>> clabel(cs)
35
30
25
20
15
10
5
2
1
-15
-10
-5
0
-1
-15
-2
-3
-4
-5
-5
35
30
-4
20
25
-3
-2
-1
32
-5
10
15
-10
>> r=-5:.2:5;
>> [X,Y]=meshgrid(r,r);
>> Z=-.5*X.^2+X.*Y+Y.^2;
>> [cs,h]=contour(X,Y,Z);
>> text_handle = clabel(cs,h)
>>
set(text_handle,'BackgroundColor','
y',...
5
'Edgecolor','k')
4
30
>> xlabel(X);ylabel(Y);
1
0
-1
-2
-3
-4
30
-5
-5
-4
-3
-2
-1
0
X
33 5
Resumen grficos 2D
34
Representacin grfica
Grabacin de figuras
35
Representacin grfica
Tipos de figuras (3D)
36
Representacin grfica en 3D
plot3
stem3
bar3
bar3h
pie3
comet3
fill3
contour3
quiver3
scatter3
mesh
meshc
meshz
surf
surfc
surfl
trimesh
trisurf
slice
waterfall
3
2
1
0
-1
-2
-3
3
2
1
0
-1
-2
-3
-3
-2
-1
37
Representacin grfica
(meshgrid)
Ya lo hemos visto.
Los dibujos de superficies se suelen representar
en MatLab utilizando los valores de la variable z
en una malla de puntos (x,y).
Para poder dibujar una superficie debemos, en
primer lugar, generar una malla de (x,y)
coordenadas y calcularnos la altura de la
superficie (es decir, el valor de z) por cada punto
de esta malla. En MatLab hay un comando
llamado meshgrid que permite de generar
una malla de puntos dentro de un rango
[X,Y]=meshgrid(x,y)
especfico de valores
(x,y).
38
-2
-4
0
>>[X,Y]=meshgrid(rx,ry);
%crea una red de 25 puntos y
almacena sus coordenadas en
XyY
39
[X,Y]=meshgrid(x,y)
40
Ejemplo 3D
Malla de 25 puntos en el plano x,y
>> rx=0:4;
%genera un vector rx=[0 1 2
3 4]
>> ry=-4:2:4; %crea un vector ry=[-4 -2 0
2 4]
>> [X,Y]=meshgrid(rx,ry);%crea una malla
de 25
%ptos y almacena en
%coordenadas en X e Y
-2
3
2
-4
0
1
0
-1
-2
>> x=linspace(-3,3,50);
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=X.*Y.*(X.^2-Y.^2)./
(X.^2+Y.^2);
>> mesh(X,Y,Z)
-3
3
2
1
0
-1
-2
-3
-3
-2
-1
Importante: X, Y,
Z son matrices
41
Representacin grfica
(surf)
Funcin: surf(X,Y,Z,C)
Dibuja una superficie
coloreada en 3-D
Si surf(X,Y,Z), C = Z y el
color de la supericie es
proporcional a la altura.
3
2
1
0
-1
-2
-3
4
X, Y, Z son matrices!!
2
0
-2
>> x=linspace(-3,3,50);
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=X.*Y.*(X.^2-Y.^2)./
(X.^2+Y.^2);
>> surf(X,Y,Z)
-4
-4
-2
42
43
>> x=linspace(-3,3,50);
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=X.*Y.*(X.^2-Y.^2)./
(X.^2+Y.^2);
>> surf(X,Y,Z)
2
1
0
-1
-2
-3
4
2
0
-2
-4
>> x=linspace(-3,3,50);
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=X.*Y.*(X.^2-Y.^2)./
(X.^2+Y.^2);
>> C=X.^2+Y.^2-Z.^2;
>> surf(X,Y,Z,C)
-4
-2
3
2
1
0
-1
-2
-3
4
2
0
-2
44
Representacin grfica
(surfc)
>> u=-5:.2:5;
puntos de continuacin
>> [X,Y]=meshgrid(u,u);
>> Z=cos(X).*cos(Y).*...
exp(-sqrt(X.^2+Y.^2)/4);
>> surfc(Z)
>> view(-37.5,20)
>> axis('of')
45
46
Representacin grfica
(plot3)
15
>> t=linspace(0,6*pi,100);
>> x=cos(t);
>> y=sin(t);
>> z=t;
>> plot3(x,y,z)
20
10
0
1
1
0.5
sin
(t)
0.5
-0.5
cos(t)
-0.5
-1
-1
1
0.8
view(azimuth, elevation)
0.4
sin(t)
>> view(0,90)
0.6
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
-0.8
-0.6
-0.4
-0.2
0.2
cos(t)
0.4
0.6
0.8
47
Funcin: plot3
Ejemplo:
sin(t), cos(t)
35
30
>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> grid on
>> axis square
25
20
15
10
5
0
1
0.5
1
0.5
-0.5
-0.5
-1
-1
48
>> %Muelle
>> x = -500:500;
>> y = sind(x); %seno en grados
>> z = cosd(x);
>> plot3(x,y,z)
49
Representacin grfica
(fill3)
>>
>>
>>
>>
>>
>>
X=[0 0 0 0; 1 1 -1 1; 1 -1 -1 -1];
Y=[0 0 0 0; 4 4 4 4; 4 4 4 4];
Z=[0 0 0 0; 1 1 -1 -1; -1 1 1 -1];
fillcolor=rand(3,4);
fill3(X,Y,Z,fillcolor)
view(120,30)
1
0.5
-0.5
-1
-1
0
-0.5
0.5
0
1.5
2.5
0.5
3.5
50
Representacin grfica
(contour)
Lneas de contorno (Ya visto antes)
51
Representacin grfica
(pie3)
>> % popdata: Af,As, Eu, Na,SA
>> pop=[807; 3701; 731; 481; 349];
>> continentes={'Africa','Asia',...
'Europe','N.America','S.America'};
>> pie3(pop,continentes)
>> title({'World Population','(2003)'})
52
Representacin grfica
(stem3)
>>
>>
>>
>>
t=linspace(0,6*pi,200);
x=t; y=t.*sin(t);
z=exp(t/10)-1;
stem3(x,y,z,'filled')
53
Interpolacin: griddata
[Xi, Yi, Zi]=griddata(x,y,z,xi,yi,
method)
2.5
1.5
1
1
1
0.5
0.5
-0.5
scatter3(xv,yv,zv)
xi=linspace(-1,1,30);
yi=xi;
-0.5
-1
-1
[Xi,Yi,Zi]=griddata(xv,yv,zv,xi,yi,v4);
surf(Xi,Yi,Zi)
2.5
1.5
0.5
1
1
0.5
0.5
0
-0.5
54
-1
-0.5
-1
55
Animaciones con
drawnow
%script for animating the circular motion
of a bead.
%As the bead moves, it leaves a trail
behind it.
clf
theta=linspace(0,2*pi,1000);
x=cos(theta); y=sin(theta);
hbead=line(x(1),y(1),'marker','o','marker
size',8,'erase','xor');
htrail=line(x(1),y(1),'marker','.','color','r',
'erase','none');
axis([-1 1 -1 1]);
axis('square')
for k=2:length(theta)
set(hbead,'xdata',x(k),'ydata',y(k));
set(htrail,'xdata',x(k),'ydata',y(k));
drawnow
end
56
Animaciones
Hay dos maneras de crear animaciones:
Ofine: generar una pelcula para verla luego
On-Line: ir repintando la grfica desde Matlab
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
-0.5
0.5
57