Professional Documents
Culture Documents
BIDIMENSIONALES Y
TRIDIMENSIONAL,
INTERFAZ GRAFICO EN
MATLAB. EJERCICIOS
Grficos Bidimensionales
El comando bsico para la representacin de grficos 2D es el comando plot.
Su sintaxis es:
plot(x,y): dibuja el conjunto de puntos (x,y) donde las abscisas de los puntos
se encuentran en el vector x y las ordenadas en el y.
Para representar una funcin f(x) es necesario conocer los valores de puntos
de la forma (x,f(x)). Para hacerlo se tiene que:
- Definir un vector x con el rango de variacin donde se desea pintar la
funcin. Para ello puede ser muy til el comando linspace(xmin,xmax,n).
Crear el vector y evaluando f en x. Por ejemplo:
>> x=linspace(0,10,100);
>> y=sin(x);
>> plot(x,y)
>> fplot(sin(x)',[-3*pi,3*pi,-1,1])
>> y=sin(x);z=cos(x);t=exp(-x);v=x.^2;
>> subplot(2,2,1), plot(x,y)
>> subplot(2,2,2), plot(x,z)
>> subplot(2,2,3), plot(x,t)
>> subplot(2,2,4), plot(x,v)
Opciones de dibujo
Hemos visto que el comando plot(x,y) dibuja los grficos con
unas caractersticas predefinidas en el programa, es posible
alterarlas a partir de plot(x,y,s) donde s se compone de dos
dgitos entre comillas. Uno fija el color de la lnea y otro el
carcter a usar en el grfico.
plot(x,y,'-*g')
dibuja los puntos unidos con una lnea
continua, marcando los puntos con *, y en
verde. Otros tipos de marcadores son: . * x
o + (marcan los puntos en el grfico).
- (lnea continua)
- - (lnea formada por trazos discontinuos)
-. (lnea formada por puntos y trazos)
: (lnea formada por puntos)
Los colores vienen dados por: y: amarillo, g: verde, m: magenta, b: azul,
c:can, w: blanco, r: rojo, k: negro.
Se puede modificar el grosor de lnea incluyendo la cadena: Linewidth,
Ttulos y etiquetas
Matlab permite manejar correctamente anotaciones sobre los grficos y los
ejes mediante la colocacin adecuada de ttulos y etiquetas, rejillas o
leyendas. Los comandos ms usados son:
title (texto): aade el texto entre comillas como ttulo del grfico.
xlabel(texto): aade el texto entre comillas como texto al lado del eje x.
ylabel(texto): aade el texto entre comillas como texto al lado del eje y.
Control de ejes
En el control de los ejers Matlab tiene opciones por defecto, pero muchas ocasiones es
interesante alterarlas. Ya hemos visto que la variacin en el eje x se elige al fijar las
coordenadas x de los puntos. Por defecto el programa ajusta la escala de cada uno de
los ejes de modo que vare entre un mximo y el mnimo valor a representar (es el modo auto).
Para definirlos se utiliza el comando axis cuya sintaxis es: axis ([xmin,xmax,ymin,ymax]).
axis(auto) devuelve la escala al valor por defecto.
Cabe destatar que: axis off elimina los ejes del dibujo y axis on los incorpora.
En el men edit aparecen entre otros los comandos Figure Properties, axes
Properties y Current Object Properties, con ellos se abre paso a los
editores correspondientes donde se nos da la posibilidad de cambiar las
opciones de dibujo.
El editor de ejes
Las pestaas x,y,z nos permiten actuar sobre cada uno de los ejes, poniendo etiquetas (Label),
cambiando el color (Color), cambiando los lmites (Limit),...
x=[0:0.001:2*pi];
plot(x,cos(3*x), x, sin(3*x));
xlabel('x');
legend('cos(3x)','sin(3x)')
ylabel('Amplitud')
title('plot bidimensional')
axis([0 2*pi -1.1 1.1])
Grafico 2
x=[0:0.001:2*pi];
plot(x,cos(3*x), x, sin(3*x));
xlabel('x');
legend('cos(3x)','sin(3x)')
ylabel('Amplitud')
title('plot bidimensional')
axis([0 2*pi -1.1 1.1])
set(gca, 'ytick',[-1 -0.5 0 0.5 1])
set(gca, 'xtick',[0 pi/2 pi 3*pi/2 2*pi])
set(gca, 'XTickLabel',{'0'; 'pi/2'; 'pi'; '3*pi/2'; '2*pi'})
Grfico 3
x1=[0:0.001:2*pi];
x2=[0:pi/30:2*pi];
plot(x1, cos(3*1),'r:', x2, cos(3*x2),'bo')
grid
handle_arrow=annotation('arrow', 0.13+[1/7 2/14], [4/10
5/10],'Color',[1 0 0])
text(0.6,0.1, 'cero de la funcion')
set(handle_arrow, 'HeadStyle', 'plain')
Grafico 4
x=[0:0.001:2*pi];
y=[cos(x); cos(2*x); cos(3*x);
cos(4*x)];
plot(x,y)
Grafico 5
x= logspace(-1,2);
loglog(x,exp(x),'-s')
grid
Grafico 6
Grafico 7
x1=[0:0.001:2*pi];
x2= [0:pi/30:2*pi];
plot(x1, cos(x1));
hold
%current plot held
plot(x2,cos(x2), 'ro');
Grafico 8
x1=[0:0.001:2*pi];
plot(x1,sin(x1))
figure
plot(x1, cos(x1))
figure(1)
gtext('esto es seno(x)')
[x,y]=ginput
Grafico 9
x=-2.9:0.2:2.9;
bar(x,exp(-x.*x),'r')
Grafico 10
Z=peaks;
[C h] = contour(Z,10);
clabel(C,h)
title({'Contour Labeled
Using','clavel(C,h)'})
Grafico 11
Y= round(rand(5,3)*10);
subplot(2,2,1)
bar(Y,'group')
title 'Group'
subplot(2,2,2)
bar(Y,'stack')
title 'stack'
subplot(2,2,3)
barh(Y,'stack')
title 'stack'
subplot(2,2,4)
bar(Y,1.5)
title 'with = 1.5'
Grfico 12
Y=randn(3,5);
h=bar(Y);
set(get(h(1),
'baseline'),'LineWidth',2,'LineStyle',':')
colormap summer%Change the color scheme
Grficos tridimensionales
La representacin de funciones 3D ( es decir, funciones f: R2 R) se puede realizar
en MATLAB de forma directa, utilizando alguna de las utilidades predefinidas en
dicho lenguaje. Para ello, en cualquier caso, es necesario que, previamente, se
definan todos los puntos (x, y) sobre los cuales va a tomar valores la funcin f.
Esta tarea se realiza discretizando, en primer lugar, los ejes x e y que definen el
plano y, a partir de esta discretizacin inicial, se calculan todos los pares de
puntos (x, y).
En Matlab existen muchas funciones para representar las grficas en 3D.
Grficos tridimensionales
figura 13
[X,Y,Z]= peaks;
contour3(X,Y,Z,20)
h=findobj('Type','patch');
set(h,'LineWidth',2)
title('Twenty Contours of the peaks
Function')
Grafico 14
for k= 1:16
plot(fft(eye(k+16)))
axis equal
M(k) = getframe;
end
movie(M,30)
movie2avi(M,'movie.avi');
figura15
RGB=imread('imagen1.jpg');
figure('position',[100 100 size(RGB,2)
size(RGB,1)]);
image(RGB); set(gca,'Position',[0 0 1 1])
Figura 16
t=0:pi/50:10*pi;
plot3(sin(t), cos(t), t)
axis square; grid on
Figura 17
[X,Y]=meshgrid([-2:0.1:2]);
Z=X.*exp(-X.^2-Y.^2);
plot3(X,Y,Z)
grid on
Grafico 18
[X, Y]= meshgrid(-8:.5:8);
R= sqrt(X.^2+Y.^2) + eps;
Z= sin(R)./R;
mesh(X,Y,Z)
Interfaces
Una GUI debe ser consistente y fcilmente entendida por el
usuario
- Componentes
Grficos
DESCRIPCIN
Push Button
Slider
Radio Button
Check Box
Edit Text
Static text
Pop-up Menu
Listbox
Lista deslizable
Toggle Button
Axes
Para graficar
Panel
Button Grup
ActiveX Control
3 cuadros de texto
5 botones
% hObject
% eventdata
MATLAB
% handles
GUIDATA)
% Adicionamos
% Para leer el dato colocado en celsius
celsius1=eval(get(handles.celsius,'string'));
%Para convertir celsius a kelvin y fehrenheit
kelvin1=celsius1 + 273.15;
fahrenheit1=1.8*celsius1 + 32;
%Para escribir datos en los Edit Text
set(handles.kelvin,'string',kelvin1);
set(handles.fahrenheit,'string',fahrenheit1);
kelvin1=eval(get(handles.kelvin,'string'));
%Para convertir kelvin a celsius y fehrenheit
celsius1=kelvin1 - 273.15;
fahrenheit1=(kelvin1-273.15)*1.8 + 32;
%Para escribir datos en los Edit Text
set(handles.celsius,'string',celsius1);
set(handles.fahrenheit,'string',fahrenheit1);
% eventdata
MATLAB
% handles
GUIDATA)
close(gcbf)
% eventdata
MATLAB
% handles
GUIDATA)
limpia=' ';
set(handles.celsius,'string',limpia);
set(handles.kelvin,'string',limpia);
set(handles.fahrenheit,'string',limpia);
Ejemplo 2
Para este ejemplo realizaremos una serie de grficos, utilizando figuras y un
men desplegable.
Por lo cual necesitaremos los siguientes componentes:
Popmenu
Boton
axes
En el inspector de propiedades,
poner en String del pop-up menu
los siguiente
% hObject
handle to figure
if strcmp(get(hObject,'Visible'),'off')
plot(rand(5));
end
% hObject
% eventdata
% handles
axes(handles.axes1);
%cla;
switch popup_sel_index
case 1
plot(rand(5));
case 2
plot(sin(1:0.01:25.99));
case 3
bar(1:.5:10);
case 4
plot(membrane);
case 5
surf(peaks);
end
% hObject
% eventdata
% handles
% eventdata
% handles
file = uigetfile('*.fig');
if ~isequal(file, 0)
open(file);
end
% eventdata
% handles
printdlg(handles.figure1)
% eventdata
% handles
return;
end
delete(handles.figure1)
Ejemplo 3
Realizaremos una serie de mensajes, que son de mucha ayuda cuando queramos
programar algn proyecto.
Para lo cual, necesitaremos los siguientes componentes:
Un panel
5 botones
Anexaremos en el callback el
siguiente cdigo..
% hObject
% eventdata
MATLAB
% handles
GUIDATA)
warndlg('Esto es un aviso','Curso_GUIDE');
% hObject
% eventdata
MATLAB
% handles
GUIDATA)
% hObject
% eventdata
MATLAB
% handles
GUIDATA)
% hObject
% eventdata
MATLAB
% handles
GUIDATA)