Date post: | 21-Jul-2015 |
Category: |
Education |
Upload: | byron-carrion |
View: | 443 times |
Download: | 1 times |
SOFTWARE DE SIMULACIÓN
MATLAB
Byron Carrión
547
INTERFAZ GRÁFICA DE USUARIO EN MATLAB
2
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
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
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
VENTANA DE INICIO DE GUI
6
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’).
INTERFAZ GRÁFICA DE USUARIO EN BLANCO
8
ÁREA DE DISEÑO
PALETA DE COMPONENTES
BARRA DE MENÚS
BARRA DE
HERRAMIENTAS
INTERFAZ GRÁFICA DE USUARIO
9
BARRA DE HERRAMIENTAS:
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.
INTERFAZ GRÁFICA DE USUARIO
11
• La siguiente tabla muestra una descripción de los
componentes de la paleta de componentes:
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.
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.
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.
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
CARACTERÍSTICAS GENERALES DE UNA GUI EN MATLAB
16
Entonces, ahora ya tenemos un archivo (interfaz.fig) y otro archivo
(interfaz.m)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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'')))']);
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');
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
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.
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
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
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
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')
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.
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')
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.
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
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.
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.
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
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
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
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
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
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
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
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)
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
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