graficas matlab

58
SOFTWARE DE SIMULACIÓN MATLAB Byron Carrión 547

Upload: byron-carrion

Post on 21-Jul-2015

450 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Graficas matlab

SOFTWARE DE SIMULACIÓN

MATLAB

Byron Carrión

547

Page 2: Graficas matlab

INTERFAZ GRÁFICA DE USUARIO EN MATLAB

2

Page 3: Graficas matlab

GUIDE • La interfaz gráfica de usuario (GUI - Graphical UserInterface), es la forma en que el usuario interactúa con elprograma o el sistema operativo de una computadora.

• Una GUI contiene diferentes elementos gráficos talescomo: botones, campos de texto, menús, gráficos, etc.

• MatLab nos permite realizar GUIs de una manera muysencilla usando GUIDE (Graphical User InterfaceDevelopment Enviroment).

• GUIDE es un entorno de programación visual disponibleen MatLab para realizar y ejecutar programas quenecesiten ingreso continuo de datos. Tiene lascaracterísticas básicas de todos los programas visualescomo Visual Basic o Visual C++.

3

Page 4: Graficas matlab

CARACTERÍSTICAS GENERALES DE UNA GUI EN MATLAB

• Una de las tantas herramientas con la que cuentaMatLab, es la creación de GUIs, que son muy útiles parapresentar un desarrollo final y adhieren usabilidad alajuste de parámetros y visualización de un programa

• La forma de implementar las GUI con MatLab es crear losobjetos y definir las acciones que cada uno va a realizar.Al usar GUIDE obtendremos dos archivos:

Un archivo .FIG: Contiene la descripción de loscomponentes que contiene la interfaz.

Un archivo .M: Contiene las funciones y los controlesdel GUI así como el callback.

• Un callback se define como la acción que llevará a caboun objeto de la GUI cuando el usuario lo active. Porejemplo, suponga que en una ventana existe un botón elcual al presionarlo ejecutará una serie de acciones, a esose le conoce como la función del callback.

4

Page 5: Graficas matlab

INICIANDO GUIDE

Para crear una GUI en MatLab usamos GUIDE, lopodemos hacer de tres formas:

Ejecutando el comando guide en la ventana de

comandos:

>> guide

Haciendo un clic en el ícono GUIDE que muestra

la figura:

Ejecutando del menú principal: File – New

GUI

5

GUIDE

Page 6: Graficas matlab

VENTANA DE INICIO DE GUI

6

Page 7: Graficas matlab

VENTANA DE INICIO DE GUIOPCIONES:

7

Blank GUI

(Default)

La opción de interfaz gráfica de usuario en blanco (viene

predeterminada), nos presenta un formulario nuevo, en el

cual podemos diseñar nuestro programa.

GUI with

Uicontrols

Esta opción presenta un ejemplo en el cual se calcula la

masa, dada la densidad y el volumen, en alguno de los dos

sistemas de unidades. Podemos ejecutar este ejemplo y

obtener resultados.

GUI with Axes

and Menu

Esta opción es otro ejemplo el cual contiene el menú File

con las opciones Open, Print y Close. En el formulario tiene

un Popup menu, un push button y un objeto Axes, podemos

ejecutar el programa eligiendo alguna de las seis opciones

que se encuentran en el menú despegable y haciendo clic en

el botón de comando.

Modal

Question

Dialog

Con esta opción se muestra en la pantalla un cuadro de

diálogo común, el cual consta de una pequeña imagen, una

etiqueta y dos botones Yes y No, dependiendo del botón que

se presione, el GUI retorna el texto seleccionado (la cadena

de caracteres ‘Yes’ o ‘No’).

Page 8: Graficas matlab

INTERFAZ GRÁFICA DE USUARIO EN BLANCO

8

ÁREA DE DISEÑO

PALETA DE COMPONENTES

BARRA DE MENÚS

BARRA DE

HERRAMIENTAS

Page 9: Graficas matlab

INTERFAZ GRÁFICA DE USUARIO

9

BARRA DE HERRAMIENTAS:

Page 10: Graficas matlab

INTERFAZ GRÁFICA DE USUARIO

10

• Para obtener la etiqueta de cada elemento de la paleta de

componentes ejecutamos: File Preferences y seleccionamos

Show names in component palette.

Page 11: Graficas matlab

INTERFAZ GRÁFICA DE USUARIO

11

• La siguiente tabla muestra una descripción de los

componentes de la paleta de componentes:

Page 12: Graficas matlab

PROPIEDADES DE LOS COMPONENTES DE UNA GUI

12

• Cada uno de los elementos de GUI, tiene un conjunto de

opciones que podemos acceder con clic derecho.

Page 13: Graficas matlab

INSPECTOR DE PROPIEDADES

13

• La opción Property Inspector nos

permite personalizar cada elemento.

• Cuando se le da doble clic a un

control, muestra una ventana listando

todas las propiedades de ese control

(fuente, posición, tamaño, etc.).

• Tag: es el nombre del control en el

código, es mejor renombrarlo por algo

identificable.

• String: es el texto que aparece en el

control.

• ForegroundColor: color del texto.

• BackgroundColor: color del control.

Page 14: Graficas matlab

VIEW CALLBACKS

14

• Al hacer clic derecho enel elemento ubicado enel área de diseño, una delas opciones másimportantes es ViewCallbacks, la cual, al

ejecutarla, abre elarchivo .m asociado aldiseño y nos posiciona enla parte del programaque corresponde a lasubrutina que se

ejecutará cuando serealice una determinadaacción sobre el elementoque se está editando.% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

Se pueden borrar los comentarios.

Page 15: Graficas matlab

CARACTERÍSTICAS GENERALES DE UNA GUI EN MATLAB

• Una aplicación GUIDE consta de dos archivos: .m y .fig. Elarchivo .m es el que contiene el código con lascorrespondencias de los botones de control de la interfazy el archivo .fig contiene los elementos gráficos.

• Cada vez que se adicione un nuevo elemento en lainterfaz gráfica, se genera automáticamente código enel archivo .m.

• Para ejecutar una interfaz gráfica, si la hemos etiquetadocon el nombre interfaz.fig, tenemos 3 opciones:

Ejecutando en la ventana de comandos:

>>interfaz.

Haciendo clic derecho en el m-file y seleccionando laopción RUN.

Presionando la flecha verde en la parte superior deleditor GUI se grabará el trabajo actual y correrá elprograma (La primera vez que se lo corra preguntaráel nombre del programa),

15

Page 16: Graficas matlab

CARACTERÍSTICAS GENERALES DE UNA GUI EN MATLAB

16

Entonces, ahora ya tenemos un archivo (interfaz.fig) y otro archivo

(interfaz.m)

Page 17: Graficas matlab

SENTENCIA HANDLES

• Todos los valores de las propiedades de los elementos(color, valor, posición, string, etc.) y los valores de lasvariables transitorias del programa se almacenan enuna estructura, los cuales son accedidos mediante unúnico y mismo identificador para todos éstos. Elidentificador se asigna en:

% Choose default command line output for interfaz

handles.output = hObject;

• Cada uno de los objetos de MatLab tiene unidentificador único (handles), a los cuales se lesllamará handles o id.

• handles, es el identificador a los datos de laaplicación. Esta definición de identificador es salvadacon la siguiente instrucción:

% Update handles structure

guidata(hObject, handles);

• guidata, es la sentencia para salvar los datos de laaplicación. 17

Page 18: Graficas matlab

SENTENCIA GUIDATA

• guidata es la función que guarda las variables ypropiedades de los elementos en la estructura dedatos de la aplicación, por lo tanto, como reglageneral, en cada subrutina se debe escribir en laúltima línea lo siguiente:

guidata(hObject,handles);

• Esta sentencia nos garantiza que cualquier cambio oasignación de propiedades o variables quedealmacenado.

• Por ejemplo, si dentro de una subrutina o de unaoperación dio como resultado una variable resultadopara poder utilizarla desde el programa u otrasubrutina debemos salvarla de la siguiente manera:

handles.resultado=resultado;

guidata(hObject,handles);

• La primera línea crea la variable resultado a laestructura de datos de la aplicación apuntada porhandles y la segunda graba el valor.18

Page 19: Graficas matlab

SENTENCIAS GET Y SET• Cómo recuperamos el valor de una propiedad de un

control?

valor = get (handles.control, ‘propiedad’)

• La asignación u obtención de valores de los componentes se realizamediante las sentencias get y set. Por ejemplo si queremos que lavariable salida tenga el valor del slider1 escribimos:

salida= get(handles.slider1,'Value');

• Los datos siempre se obtienen a través de los identificadoreshandles.

• Cómo asignamos valor a las propiedades de los controles?

set (handles.control, ‘propiedad’, valor)

handles es una estructura que, por medio de un puntero, asigna el valor de la propiedad al control.

• Para asignar el valor de la variable salida al statictext etiquetadacomo text1escribimos:

set(handles.text1,'String',salida);%Escribe el valor del Slider1

%en static-text

Cuando se modifica el código del m-file no se tiene que volver acorrer la GUI (solo se ha modificado la funcionalidad).

19

Page 20: Graficas matlab

ESTRUCTURA DE LOS GRÁFICOS DE MATLAB

• Los gráficos de MatLab tienen una estructurajerárquica formada por objetos de distintos tipos.

• Esta jerarquía tiene forma de árbol.

20

Page 21: Graficas matlab

ESTRUCTURA DE LOS GRÁFICOS DE MATLAB

• Según se muestra en la figura anterior, el objeto más generales la pantalla (screen). Este objeto es la raíz de todos losdemás y sólo puede haber un objeto pantalla. Una pantallapuede contener una o más ventanas (figures). A su vez cadauna de las ventanas puede tener uno o más ejes decoordenadas (axes) en los que representar otros objetos demás bajo nivel. Una ventana puede tener también controles(uicontrol) tales como botones, barras dedesplazamiento, botones de selección o de opción, etc.) ymenús (uimenu). Finalmente, los ejes pueden contener loscinco tipos de elementos gráficos que permite MATLAB:líneas (line), polígonos (patches), superficies(surface), imágenes bitmap (image) y texto (text).

• La jerarquía de objetos mostrada indica que en MatLab hay objetos padres e hijos. Por ejemplo, todos los objetos ventana son hijos de pantalla, y cada ventana es padre de los objetos ejes, controles o menús que están por debajo. A su vez los elementos gráficos (líneas, polígonos, etc.) son hijos de un objeto ejes, y no tienen otros objetos que sean sus hijos.

• Cuando se borra un objeto de MatLab automáticamente se borran todos los objetos que son sus descendientes. Por ejemplo, al borrar unos ejes, se borran todas las líneas y polígonos que son hijos suyos. 21

Page 22: Graficas matlab

COMANDO UICONTROL

El comando uicontrol permite definir los controles gráficosde MatLab.

MATLAB permite desarrollar programas con el aspectotípico de las aplicaciones de Windows. Estudiaremoscómo crear algunos de los controles más utilizados. Paratodos los controles, se utilizará la función uicontrol, quepermite desarrollar dichos controles. La forma general delcomando uicontrol es la siguiente:

id_control = uicontrol(id_parent,'Propiedad1',valor1,...

'Propiedad2',valor2, (otraspropiedades),'callback','sentencias')

22

Page 23: Graficas matlab

COMANDO UICONTROL

El comando uicontrol permite definir loscontroles gráficos de MATLAB descritos en lossiguientes apartados. Estos controles reciben lasacciones de los usuarios, que se denominaneventos (por ejemplo, clicar en un botón,cambiar el valor de una barra dedesplazamiento, ...). A continuación se explicanalgunas de las propiedades de uicontrol.

23

Page 24: Graficas matlab

OPCIONES DEL COMANDO UICONTROL

• El comando uicontrol permite definir los controlesgráficos de MatLab.

24

COLOR DEL

OBJETO (BACKGROUNDCOLOR)

Controla el color del objeto. Por defecto éste suele

ser gris claro, aunque puede tomar distintos valores:green, red, white, etc. Éstos irán definidos entrecomillas (por ejemplo 'green')

ACCIÓN A

EFECTUAR POR EL

COMANDO

(CALLBACK)

Este comando especifica la acción a efectuar porMATLAB al actuar sobre el control. Se trata de unaexpresión u orden, almacenada en una cadena de

caracteres, que se ejecutará al activar el control.Esta instrucción es equivalente a realizareval(‘expresión’)

CONTROL

ACTIVADO/DESACTIVADO

(ENABLE)

Este comando permite desactivar un control, de talforma que una acción sobre el mismo (por ejemplo,apretar sobre el mismo con el ratón) no produce

ningún efecto. Los valores que puede tomar estavariable son on u off

ALINEAMIENTO

HORIZONTAL DEL

TITULO

(HORIZONTALALIGNMENT)

Esta opción determina la posición del título delcontrol en el mismo. Los valores que puede tomarson: left, center o right

Page 25: Graficas matlab

OPCIONES DEL COMANDO UICONTROL

25

VALOR MÁXIMO

(MAX)

Esta opción determina el máximo valor que puedetomar un valor cuando se utilizan cajas de textos obotones de opción. En caso de botones tipo on/off,

que solamente admiten las dos posiciones deabierto y cerrado, esta variable corresponde al valordel mismo cuando está activado

VALOR MÍNIMO

(MIN)Análogo a la opción anterior para el valor mínimo

CONTROL DEL

OBJETO PADRE

(PARENT)

Esta opción especifica el id del objeto padre. Debeir siempre en primer lugar

POSICIÓN DEL

OBJETO

(POSITION)

En esta opción se determina la posición y el tamañodel control dentro del objeto padre. Para ello sedefine un vector de cuatro elementos, cuyos valoressiguen el siguiente orden: [izquierda, abajo, longitud,

altura]. Aquí izquierda y abajo son la distancia a laesquina inferior izquierda de la figura y longitud yaltura las dimensiones del control

VISIBLE

(VISIBLE)

Puede tomar dos valores: on/off. Indica si el controles visible en la ventana o no. Este comando es

similar al Enable, si bien éste además de quedarinhabilitado el control éste desaparece de lapantalla

Page 26: Graficas matlab

OPCIONES DEL COMANDO UICONTROL

26

NOMBRE DEL

OBJETO

(STRING)

Esta opción define el nombre que aparecerá en elcontrol. Cuando el control sea una opción de menú

desplegable (popup menu), los nombres se sitúan enorden dentro del string, separados por un carácterbarra vertical (|)

TIPO DE CONTROL

(STYLE)

Esta opción puede tomar los siguientes valores:pushbutton, radiobutton, checkbox, slider, edit,

popupmenu y text, según el tipo de control que sedesee (pueden usarse nombres abreviados: así,pushbutton puede abreviarse en push)

UNIDADES

(UNITS)

Unidades de medida en las que se interpretará elcomando Position. Los valores que puede tomarUnits son: pixels (puntos de pantalla), normalized

(coordenadas de 0 a 1), inches (pulgadas), cent(centímetros), points (equivalente a 1/72 parte deuna pulgada). La opción por defecto es pixels

VALOR

(VALUE)

Permite utilizar el valor que tiene del control en unmomento dado. Por ejemplo, un botón de chequeo(check button) puede tener dos tipos de valores,

definidos por las variables Max y Min. Según sea unou otro el programa ejecutará una acción. La

Page 27: Graficas matlab

COMANDO UICONTROL

MATLAB puede tener varias ventanas abiertas, pero siempre hayuna y sólo una que es la ventana activa. A su vez una ventanapuede tener varios ejes (axes), pero sólo unos son los ejes activos.MATLAB dibuja en los ejes activos de la ventana activa. Losidentificadores de la ventana activa, de los ejes activos y del objetoactivo se pueden obtener respectivamente con los comandosgcf (get current figure), gca (get current axes) y gco (get currentobject):gcf devuelve un entero, que es el handle de la ventana activa

gca devuelve el handle de los ejes activosgco devuelve el handle del objeto activoLos objetos se pueden borrar con el comando delete:delete(handle) borra el objeto correspondiente y todos sus hijos

27

Page 28: Graficas matlab

COMANDO UICONTROL

CHECK BOXESLos botones de selección permiten al usuario seleccionarentre dos

opciones. Los botones de selección actúan comointerruptores, indicando un estado on (si el botón estáactivado) u off

(si el botón está desactivado). El valor de ambos estadosviene definido por las opciones Max y Min,respectivamente. Los botones de selección deben serindependientes unos de otros.

Ejemplo: El siguiente conjunto de instrucciones crea unacaja con una opción, que permite visualizar ejes de unafigura dentro de una función plot:

28

Page 29: Graficas matlab

COMANDO UICONTROL

% Definir un texto fijo como título para los botones de selección

txt_axes = uicontrol(gcf,...

'Style','text',...

'Units','normalized','Position',[0.4 0.55 0.25 0.1],...

'String','Seleccione la opcion');

% Definir la checkbox para la propiedad Box de los ejes

cb_box = uicontrol(gcf,...

'Style','checkbox',...

'Units','normalized','Position',[0.4 0.475 0.25 0.1],...

'String','Box=on',...

'CallBack',['set(gca,''Box'',''off''),',...

'if get(cb_box,''value'')==1,',...

'set(gca,''Visible'',''on''),',...

'set(gca,''Box'',''on''),',...

'else,',...

'set(gca,''Visible'',''off''),',...

'end']);

29

Page 30: Graficas matlab

COMANDO UICONTROL

30

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Page 31: Graficas matlab

COMANDO UICONTROL

BARRAS DE DESPLAZAMIENTO (SCROLLING BARS

O SLIDERS)

Las barras de desplazamiento permiten al

usuario introducir un valor entre un rango de

valores. El usuario puede cambiar el valor

clicando sobre la barra, clicando en las flechas

laterales o bien arrastrando el elemento central

con el ratón.

Ejemplo: El siguiente ejemplo muestra como se

utilizan las barras de desplazamiento para

mover un sistema de referencia espacial:

31

Page 32: Graficas matlab

COMANDO UICONTROL

% Obtener un id de la ventana activa y borrar su contenido

fig = gcf; clf

% Los callbacks definen la propiedad View de los ejes

% a partir de os valores de las barras de desplaz. (Value property)

% y escriben sus valores en los controles text

%

% Definir la barra para el ángulo de azimut

sli_azm = uicontrol(fig,'Style','slider','Position',[50 50 120 20],...

'Min',-90,'Max',90,'Value',30,...

'CallBack',[...

'set(azm_cur,''String'','...

'num2str(get(sli_azm,''Val''))),',...

'set(gca,''View'',',...

'[get(sli_azm,''Val''),get(sli_elv,''Val'')])']);

% Definir la barra para el ángulo de elevación

sli_elv = uicontrol(fig,...

'Style','slider',...

'Position',[240 50 120 20],...

'Min',-90,'Max',90,'Value',30,...

'CallBack',[...

'set(elv_cur,''String'',',...

'num2str(get(sli_elv,''Val''))),',...

'set(gca,''View'',',...

'[get(sli_azm,''Val''),get(sli_elv,''Val'')])']);

% Definir los controles de texto para los valores mínimos

32

Page 33: Graficas matlab

COMANDO UICONTROL

azm_min = uicontrol(fig,...'Style','text',...'Pos',[20 50 30 20],...'String',num2str(get(sli_azm,'Min')));elv_min = uicontrol(fig,...'Style','text',...'Pos',[210 50 30 20],...

'String',num2str(get(sli_elv,'Min')));% Definir los controles de texto para los valores máximosazm_max = uicontrol(fig,...'Style','text',...'Pos',[170 50 30 20],...'String',num2str(get(sli_azm,'Max')),...'Horiz','right');elv_max = uicontrol(fig,...'Style','text',...

'Pos',[360 50 30 20],...'String',num2str(get(sli_elv,'Max')),...'Horiz','right');% Definir las etiquetas de las barrasazm_label = uicontrol(fig,...'Style','text',...'Pos',[50 80 65 20],...'String','Azimuth');elv_label = uicontrol(fig,...

'Style','text',...'Pos',[240 80 65 20],...'String','Elevación');

33

Page 34: Graficas matlab

COMANDO UICONTROL

% Definir los controles de texto para los valoresactuales

% Los valores son inicializados aquí y sonmodificados por los callbacks

% de las barras cuando el usuario cambia susvalores

azm_cur = uicontrol(fig,...

'Style','text',...

'Pos',[120 80 50 20],...

'String',num2str(get(sli_azm,'Value')));

elv_cur = uicontrol(fig,...

'Style','text',...

'Pos',[310 80 50 20],...

'String',num2str(get(sli_elv,'Value')));

34

Page 35: Graficas matlab

COMANDO UICONTROL

35

1. La siguiente instrucción dibujará en la pantalla del gráfico un PUSH BUTTON, que tiene como nombre Start Plot. Al pulsarlo se ejecutarán las instrucciones contenidas en el fichero mifunc.m:

pbstart = uicontrol(gcf, 'Style', 'push', 'Position',[10 10 100 25], 'String', 'Start Plot', 'CallBack', 'mifunc');

donde es necesario crear un fichero llamado mifunc.m, que será ejecutado al

pulsar sobre el botón. En lugar de este fichero también puede ponerse unacadena de caracteres conteniendo distintos comandos, que será evaluada comosi se tratase de un fichero *.m.% fichero .m

[x,y]=meshgrid(-1:.1:1); n=20;

for j = 1:n

t=(2*pi/19)*(j-1);

z=2*sin(t)*exp(-x.^2-y.^2);

surf(x,y,z),axis([-1 1 -1 1 -2 2])

F(j) = getframe;

end

movie(F,6)

La siguiente instrucción dibujará en la pantalla del gráfico una caja de selección(POP-UP MENUS) desplegable que permite elegir una opción entre varias mostradas en

una lista. Eligiendo una de las opciones, MatLab realizará la opción elegida. El menúse despliega pulsando sobre la flecha de la derecha. La opción sobre la que pase elratón aparecerá de otro color.

%Definir el menú pop-uppopcol = uicontrol(gcf, 'Style', 'popup', 'String', 'red|blue|green|yellow', 'Position',[400 50 120 20],'CallBack',['cb_col = [''R'',''B'',''G'',''Y''];', 'set(gcf,''Color'',cb_col(get(popcol,''Value'')))']);

Page 36: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

36

• Los controles son objetos que se ubican dentro de GUI y

permiten mostrar, aceptar o validar datos.

• Éstos componentes son los uicontrol de MatLab y es por lo tanto

programable en sus diferentes propiedades.

PUSH BUTTON

El control push button genera una acción cuando el usuario hace

un clic sobre él (por ejemplo, un botón OK puede cerrar una caja

de diálogo).

Programando el Callback: cuando el usuario pulsa el botón

pushbutton, su callback se ejecuta y no devuelve un valor ni

mantiene un estado.function pushbutton1_Callback(hObject, eventdata, handles)

x=linspace(0,2*pi,200);

y=sin(x);

z=cos(x);

plot(x,y, '--',x,z,'*')

grid on;

axis([0 2*pi -1.5 1.5]); % ejes

xlabel('ejex')

ylabel('ejey')

legend('seno','\itcoseno') % \it=cursiva;

title('FUNCIONES SENO Y COSENO');

Page 37: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 37

TOGGLE BUTTON

Los toggles buttons generan una acción e indican un estado

binario (por ejemplo, on u off). Cuando se pulsa el botón toggle

button aparece oprimido y permanece así aún cuando se suelta

el botón del mouse, al tiempo que el callback ejecuta las órdenes

programadas dentro de él. Los subsecuentes clic del mouse

retorna el toggle button al estado de nondepressed y es posible

de nuevo ejecutar su callback.

Programando el Callback: la rutina del callback necesita

preguntar a toggle button para determinar en qué estado esta

MatLab y pone el valor igual a Max de la propiedad cuando el

toggle button está oprimido (Max tiene por defecto 1) e igual a

Min cuando el toggle button no está oprimido (Min tiene por

defecto 0).

function togglebutton1_Callback(hObject, eventdata, handles)

boton_estado = get(handles.togglebutton1,'value')

if boton_estado==get(handles.togglebutton1,'Max') %TOGGLE BUTTON se

disp('Él botón se encuentra presionado') %encuentra presionado

elseif boton_estado==get(handles.togglebutton1,'Min') %TOOGLE BUTTON no se

disp('Él botón no se encuentra presionado') %encuentra presionado

end

Page 38: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 38

RADIO BUTTON

Este control se utiliza para seleccionar una opción de un grupo de

opciones (es decir, sólo un botón está en estado

seleccionado), para activar un radiobutton, pulse el botón del

mouse en el objeto. Los radiobutton tienen dos estados:

seleccionado y no seleccionado, al cual se accede a través de

su propiedad value.

value = Max, el botón se selecciona.

value = Min, el botón no se selecciona.

Programando el Callback: los radio buttons son mutuamente

exclusivos dentro de un grupo de opciones, los callback para

cada radiobutton se deben poner en la propiedad value igual a 0

en todos los otros radiobuttons del grupo. MatLab pone la

propiedad de value a 1 en el radio button pulsado por el usuario.

Page 39: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 39

RADIO BUTTON

function radiobutton1_Callback(hObject, eventdata, handles)

set(handles.radiobutton2,'value',0)

opcion1 = get(handles.radiobutton1,'value');

if opcion1==1

x=linspace(-2,3,3000); %Generamos una tabla de valores en el dominio x

y=(x.^2).*(x<0)+1.*((0<=x)&(x<1))+(-x+2).*(1<=x); %Definimos la función

plot(x,y,'.');

grid on;

title('Función definida a trozos')

end

function radiobutton2_Callback(hObject, eventdata, handles)

set(handles.radiobutton1,'value',0)

opcion2 = get(handles.radiobutton2,'value');

if opcion2==1

[x,y]=meshgrid(-7.5:0.5:7.5); %Generamos la malla [x,y]

z=sin(sqrt(x.^2+y.^2))./(sqrt(x.^2+y.^2));

surfl(x,y,z) %Dibujamos en 3D

title('Z=sin(sqrt(X^2+Y^2))/(sqrt(X^2+Y^2))');

xlabel('x'); ylabel('y'); zlabel('z');

end

Page 40: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 40

CHECK BOX

Los checkboxes se utilizan para proporcionar al usuario varias

opciones de las que se puede elegir una o más de una cuando se

ha pulsado el botón sobre él, e indica su estado como verificado

o no verificado. La propiedad value indica el estado del

checkbox asumiendo el valor del Max igual a 1 y del Min igual a 0.

Value = Max, la caja se verifica.

Value = Min, la caja no se verifica.

Programando el Callback: se puede determinar el estado actual

de un checkbox desde su callback preguntando el estado de su

propiedad en value.function checkbox1_Callback(hObject, eventdata, handles)

if (get(hObject,'value')==get(h,'Max'))

disp('El checkbox ha sido seleccionado'); %CHECKBOX seleccionado

else

disp('El checkbox no ha sido seleccionado'); %CHECKBOX no seleccionado

end

Page 41: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 41

EDIT TEXT

Los controles Edit Text son campos que les permiten a los usuarios

ingresar o modificar cadenas de texto. Cuando se quiera ingresar

un texto, la propiedad string contiene el texto ingresado por el

usuario.

Programando el Callback: para obtener la cadena de texto

tecleada por el usuario se consigue de la propiedad string en el

callback.

MatLab devuelve el valor de la propiedad string del edit text

como una cadena de caracteres. Si se desea que el usuario

ingrese valores numéricos, se debe convertir los caracteres a

números, usando el comando str2double el cual convierte la

cadena a un tipo double. Si el usuario ingresa caracteres no

numéricos, str2double le devolverá NaN.

function edit1_Callback(hObject, eventdata, handles)

usuario_string = get(handles.edit1,'string') %devuelve la cadena de texto ingresada

%por el usuario en el edit text

function edit2_Callback(hObject, eventdata, handles)

valor_entrada = str2double(get(handles.edit2,'string')) %convierte el string en double

if isnan(valor_entrada) %verifica si la cadena ingresada es no-numérico (isnan)

errordlg('Ingresar un valor numérico','Input') %se visualiza un diálogo de error

end

Page 42: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

42

SLIDER

Los deslizadores o barras de desplazamiento permiten explorar

fácilmente una larga lista de elementos o una gran cantidad de

información, y acepta la entrada numérica dentro de un rango

específico, permitiéndole al usuario mover una barra corrediza. El

desplazamiento de la barra se efectúa presionando el botón del

mouse y arrastrando la barra, o pulsando el botón que posee una

flecha. La ubicación de la barra indica un valor numérico.

Existen cuatro propiedades que controlan el rango y tamaño de

paso del deslizador:value Contiene el valor actual del deslizador

Max Define el valor máximo del deslizador, el valor por defecto es 1

Min Define el valor mínimo del deslizador, el valor por defecto es 0

SliderStep

Especifica el tamaño de un paso del deslizador con respecto al

rango, el valor por defecto es [0,01 0,10], proporciona un 1% de

cambio para los clics en las flechas y un 10% de cambio para los

clics en la barra

function slider1_Callback(hObject, eventdata, handles)

slider_valor = get(handles.slider1,'value')

Page 43: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 43

STATIC TEXT

Los controles Static Text se utilizan para mostrar texto que el

usuario no puede modificar.

El texto estático se usa frecuentemente para etiquetar otros

mandos y proporciona las direcciones al usuario, o indica valores

asociados con un deslizador (Slider).

Los usuarios no pueden cambiar interactivamente el texto de allí

que en el texto estático no hay ninguna manera de invocar la

rutina de un callback asociada a él.

Static text, no posee función asociada, pero sí una dirección

asociada, que la podemos utilizar para escribir los resultados.

Para saber cuál es esta dirección, haciendo doble-clic en este

componente, la ubicamos en la etiqueta Tag.

Page 44: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 44

LIST BOX

Los List Boxes muestran una lista de ítems entre los cuales el usuario

puede seleccionar uno o más ítems.

La propiedad string contiene la lista de cadenas desplegadas en

el listbox. El primer ítem en la lista tiene el índice 1.

La propiedad value contiene el índice en la lista de cadenas que

corresponde al ítem seleccionado. Si el usuario selecciona

múltiples ítems, entonces el value es un vector de índices.

La propiedad List box Top es un índice en la serie de cadenas

defenidas por la propiedad string y debe tener un valor entre 1 y

el número de cadenas.

function listbox1_Callback(hObject, eventdata, handles)

indice = get(handles.listbox1,'value')

Page 45: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 45

LIST BOX

Simple o Múltiple selección:Los valores de las propiedades Min y Max determinan si los

usuarios pueden hacer simples o múltiples selecciones:

Si Max-Min>1, entonces las cajas de la lista permiten la

selección del ítem múltiple.

Si Max-Min<1, entonces las cajas de la lista no permiten la

selección del ítem múltiple.

Programando el Callback: MatLab evalúa el callback del listbox

después de que el botón del mouse se suelta o un evento del

keypress se ha efectuado, eso cambia la propiedad de value (es

decir, cuando quiera el usuario pulsa el botón en un ítem, pero no

al pulsar el scrollbar en el list box).

Esto significa que el callback se ejecuta después del primer clic

de un doble-clic en un solo ítem o cuando el usuario está

haciendo las selecciones múltiples, en estas situaciones se deberá

agregar otro componente, como Done button (push button) y

programar su rutina del callback para preguntar el valor de la

propiedad list box.

Page 46: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 46

LIST BOX

function listbox1_Callback(hObject, eventdata, handles)

valor=get(handles.listbox1,'Value')

if(valor==1)

set(handles.text1,'String','UNO');

elseif(valor==2)

set(handles.text1,'String','DOS');

elseif(valor==3)

set(handles.text1,'String','TRES');

else

set(handles.text1,'String','CUATRO');

end

Page 47: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 47

POPUP MENU

Los Popup menús permiten visualizar una lista de opciones

cuando los usuarios presionan la flecha.

La propiedad string contiene la lista de cadenas visualizadas en el

popup menu.

La propiedad value contiene el índice del ítem seleccionado de

la lista de cadenas, el primer ítem en la lista tiene el índice 1.

Cuando no abre, un popup menu visualiza la opción actual que

es determinado por el índice contenido en la propiedad value.

Los popup menús son útiles cuando se quiere proporcionar varias

opciones mutuamente exclusivas a los usuarios, y no usar una

mayor cantidad de espacio que una serie de radio buttons

requeriría.

Programando el Callback: se puede programar el popup menu

para trabajar verificando sólo el índice del ítem seleccionado

(contenido en la propiedad value) o se puede obtener la actual

cadena contenida en el ítem seleccionado.

Page 48: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 48

POPUP MENU

function popupmenu1_Callback(hObject, eventdata, handles)

opcion = get(handles.popupmenu1,'value')

switch opcion

case 1

disp('Se ha seleccionado la opción 1');

case 2

disp('Se ha seleccionado la opción 2');

otherwise

disp('Se ha seleccionado la opción 3');

end

Activando o desactivando controles:• Se puede saber si un control responde al botón del mouse

usando la propiedad enable (habilitado). Los controles

tienen tres estados:

on: el control está operativo

off: el control está inactivo

inactivo: el mando es inválido, pero su etiqueta no se

graba fuera. Cuando un mando es inválido, mientras se

pulsa el botón izquierdo del mouse no se ejecuta su

rutina del callback.

Page 49: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 49

AXES

Los ejes (axes) permiten visualizar los gráficos, como todos los

objetos de los gráficos, los ejes tienen las propiedades para

controlar su apariencia.

Programando el Callback: los ejes no son objetos uicontrol, pero

pueden programarse para ejecutar un callback cuando los

usuarios pulsen el botón del mouse en los ejes. Use la propiedad

ButtonDownFcn de los ejes para definir el callback.

Axes es la función de bajo nivel para la creación de gráficos.

MatLab crea automáticamente un eje, si no existe ya, cuando se

emite un comando que crea un gráfico.

Si una GUI tiene múltiples ejes, se debe especificar qué ejes se

desea permanezcan en blanco explícitamente cuando se emite

las órdenes de plot.

axes(handles.axes1)

Se construyen los ejes cuya propiedad Tag son axes1 los ejes

actuales, y por consiguiente el blanco por trazar las órdenes, se

puede cambiar los ejes actuales todas las veces que se quiera al

Page 50: Graficas matlab

CONTROLES DE LA INTERFAZ GRÁFICA DE USUARIO

SOFTWARE DE SIMULACIÓN - BPDP 50

PANEL

Se puede hacer una GUI fácil de entender visualmente agrupando varios

controles relacionados. Un panel puede contener los paneles y grupos de

botones, así como ejes y los controles de interfaz de usuario tales como:

botones, barras de desplazamiento, menús pop-up, etc. La posición de

cada componente dentro de un panel se interpreta en relación a la

esquina inferior izquierda del panel. En general, si la GUI cambia de

tamaño, el panel y sus componentes también cambian de tamaño. Sin

embargo, se puede controlar el tamaño y la posición del panel y sus

componentes. Se puede hacer esto mediante el establecimiento de la

propiedad cambiar el tamaño de la GUI y proporcionar ResizeFcncallback para el panel.

BUTTON GROUP

Los grupos de botones son como los paneles, excepto que manejan una

selección exclusiva de botones de opción y botones de selección. Si un

grupo de botones contiene un conjunto de botones de opción, botones

de selección, o ambas cosas, el grupo de botones permite que sólo uno

de ellos pueda ser seleccionado. Cuando un usuario hace clic en un

botón, el botón está seleccionado y todos los demás botones dejan de

estarlo. En la programación de un grupo de botones, se usa

SelectionChangeFcn callback para gestionar las respuestas a las

Page 51: Graficas matlab

ELABORACIÓN DE UNA INTERFAZ GRÁFICA

1. Creación de formularios.

Abrir el editor de formularios,digitando la orden guide en laventana de comandos, el cualdesplega el formulario en modode reja, en la cual se agragaránlos controles que se seleccionende la paleta.

>>guide

Se debe especificar el tamaño dela GUI a un valor exacto,efectuando un clic en la opciónView del menú de herramientas yseleccionando luego la opciónProperty Inspector del menú ydefinir en la propiedad Position losvalores que deberá tener elformulario.

51

Page 52: Graficas matlab

ELABORACIÓN DE UNA INTERFAZ GRÁFICA

2. Adición de componentes.

Seleccione los componentes de la paleta para

agregar y arrástrelos al área del esquema.

SOFTWARE DE SIMULACIÓN - BPDP 52

Page 53: Graficas matlab

ELABORACIÓN DE UNA INTERFAZ GRÁFICA

3. Alineación de objetos.

Para alinear los controles entre si, dé un clic en la

opción Align Objects del menú Tools. La herramienta

de alineación muestra los objetos seleccionados y se

prepara para ser alineado según las condiciones

seleccionadas.

SOFTWARE DE SIMULACIÓN - BPDP 53

Page 54: Graficas matlab

ELABORACIÓN DE UNA INTERFAZ GRÁFICA

4. Fijar propiedades para cada control.

Para poner las propiedades de cada control, dé un

clic en la opción View y seleccione luego la opción

Property Inspector, y defina los valores.

SOFTWARE DE SIMULACIÓN - BPDP 54

Page 55: Graficas matlab

ELABORACIÓN DE UNA INTERFAZ GRÁFICA

5. Activación de la Interfaz Gráfica de Usuario (GUI).

Active la GUI seleccionando Run del menú Tools o

use la flecha de color verde del toolbar de guide.

SOFTWARE DE SIMULACIÓN - BPDP 55

Page 56: Graficas matlab

ELABORACIÓN DE UNA INTERFAZ GRÁFICA

6. Programación de la Interfaz Gráfica de Usuario (GUI).

Cuando se graba primero o activa una GUI, guide genera elarchivo .m de la aplicación que contendrá todo el código para

ejecutar y controlar la GUI. Se debe escribir dentro del callback de

las funciones, las órdenes que se ejecutarán cuando los usuarios

activen un control en la GUI. Guide genera este archivo .m, con

las subfunciones vacías para cada componente que tiene un

callback asociado con él.

SOFTWARE DE SIMULACIÓN - BPDP 56

% --- Executes on button press in surf.

function surf_Callback(hObject, eventdata, handles)

% hObject handle to surf (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

Page 57: Graficas matlab

ELABORACIÓN DE UNA INTERFAZ GRÁFICA

6. Programación de la Interfaz Gráfica de Usuario (GUI).

SOFTWARE DE SIMULACIÓN - BPDP 57

function surf_Callback(hObject, eventdata, handles)

[x,y]=meshgrid(-5:.4:5);

z=(x.^2).*exp(-y.^2);

surf(z);

function mesh_Callback(hObject, eventdata, handles)

[x,y]=meshgrid(-8:.4:8,-3:0.3:5);

z=x.^2+y.^2;

mesh(z);

function contour_Callback(hObject, eventdata, handles)

[x,y]=meshgrid(-8:.4:8,-3:0.3:5);

z=(sin(x)./(y+9));

contour(x,y,z);

function menu_Callback(hObject, eventdata, handles)

opcion=get(handles.menu,'value');

switch opcion

case 1 %usuario seleccionó la primera opción

x=-8:0.2:8;

y=x.*sin(x);

plot(x,y)

grid on

xlabel('Eje X')

ylabel('Eje Y')

case 2 %usuario seleccionó la segunda opción

x=-8:0.2:8;

y=sin(x);

bar(x,y)

grid on

case 3 %usuario seleccionó la tercera opción

x=-5.5:0.2:5.5;

y=x.*sin(x);

polar(x,y)

grid on

end

Page 58: Graficas matlab

ACCEDIENDO A LOS IDENTIFICADORES

• Cada identificador de un objeto se guarda en uncampo denominado estructuras de los identificadores,teniendo el mismo nombre como el Tag del objeto.

SOFTWARE DE SIMULACIÓN - BPDP 58

Por ejemplo:

handles.surf, contiene el identificador del pushbutton 1

handles.mesh, contiene el identificador del pushbutton 2

handles.contour, contiene el identificador del pushbutton 3

handles.menu, contiene el identificador del popupmenu

id1=handles.surf

id2=handles.mesh

id3=handles.cont

our

id4=handles.menu