Matlab

746 views
694 views

Published on

Graficas en el entorno de Matlab

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
746
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
68
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Matlab

  1. 1. SOFTWARE DE SIMULACIÓNMATLABByron Carrión547ESCUELA SUPERIOR POLITECNICADEL CHIMBORAZOELECTRONICA Y CONTROLHERRAMIENTAS EDAMarzo 2013 – Julio 2013
  2. 2. INTERFAZ GRÁFICA DE USUARIOEN MATLAB
  3. 3. 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++.
  4. 4. CARACTERÍSTICAS GENERALESDE 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.
  5. 5. INICIANDO GUIDE Para crear una GUI en MatLab usamos GUIDE, lopodemos hacer de tres formas: Ejecutando el comando guide en la ventana decomandos:>> guide Haciendo un clic en el ícono GUIDE que muestrala figura: Ejecutando del menú principal: File – NewGUIGUIDE
  6. 6. VENTANA DE INICIO DE GUI
  7. 7. VENTANA DE INICIO DE GUIOPCIONES:7Blank GUI(Default)La opción de interfaz gráfica de usuario en blanco (vienepredeterminada), nos presenta un formulario nuevo, en elcual podemos diseñar nuestro programa.GUI withUicontrolsEsta opción presenta un ejemplo en el cual se calcula lamasa, dada la densidad y el volumen, en alguno de los dossistemas de unidades. Podemos ejecutar este ejemplo yobtener resultados.GUI with Axesand MenuEsta opción es otro ejemplo el cual contiene el menú Filecon las opciones Open, Print y Close. En el formulario tieneun Popup menu, un push button y un objeto Axes, podemosejecutar el programa eligiendo alguna de las seis opcionesque se encuentran en el menú despegable y haciendo clic enel botón de comando.ModalQuestionDialogCon esta opción se muestra en la pantalla un cuadro dediálogo común, el cual consta de una pequeña imagen, unaetiqueta y dos botones Yes y No, dependiendo del botón quese presione, el GUI retorna el texto seleccionado (la cadenade caracteres ‘Yes’ o ‘No’).
  8. 8. INTERFAZ GRÁFICA DE USUARIO EN BLANCOÁREA DE DISEÑOPALETA DECOMPONENTESBARRA DE MENÚSBARRA DEHERRAMIENTAS
  9. 9. INTERFAZ GRÁFICA DE USUARIOBARRA DE HERRAMIENTAS:
  10. 10. INTERFAZ GRÁFICA DE USUARIO10• Para obtener la etiqueta de cada elemento de la paleta decomponentes ejecutamos: File Preferences y seleccionamosShow names in component palette.
  11. 11. INTERFAZ GRÁFICA DE USUARIO• La siguiente tabla muestra una descripción de loscomponentes de la paleta de componentes:
  12. 12. PROPIEDADES DE LOS COMPONENTES DE UNAGUI• Cada uno de los elementos de GUI, tiene un conjunto deopciones que podemos acceder con clic derecho.
  13. 13. INSPECTOR DE PROPIEDADES13• La opción Property Inspector nospermite personalizar cada elemento.• Cuando se le da doble clic a uncontrol, muestra una ventana listandotodas las propiedades de ese control(fuente, posición, tamaño, etc.).• Tag: es el nombre del control en elcódigo, es mejor renombrarlo por algoidentificable.• String: es el texto que aparece en elcontrol.• ForegroundColor: color del texto.• BackgroundColor: color del control.
  14. 14. VIEW CALLBACKS• Al hacer clic derecho enel elemento ubicado enel área de diseño, una delas opciones másimportantes es ViewCallbacks, la cual, alejecutarla, abre elarchivo .m asociado aldiseño y nos posiciona enla parte del programaque corresponde a lasubrutina que seejecutará 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.
  15. 15. CARACTERÍSTICAS GENERALESDE 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
  16. 16. CARACTERÍSTICAS GENERALESDE UNA GUI EN MATLAB16Entonces, ahora ya tenemos un archivo (interfaz.fig) y otro archivo(interfaz.m)
  17. 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.17
  18. 18. SENTENCIAS GET Y SET• Cómo recuperamos el valor de una propiedad de uncontrol?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 elvalor 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. 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. 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 de desplazamiento,botones de selección o de opción, etc.) y menús (uimenu).Finalmente, los ejes pueden contener los cinco tipos deelementos 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 hayobjetos padres e hijos. Por ejemplo, todos los objetosventana son hijos de pantalla, y cada ventana es padre delos objetos ejes, controles o menús que están por debajo. Asu vez los elementos gráficos (líneas, polígonos, etc.) son hijosde un objeto ejes, y no tienen otros objetos que sean sushijos.• Cuando se borra un objeto de MatLab automáticamente seborran todos los objetos que son sus descendientes. Porejemplo, al borrar unos ejes, se borran todas las líneas ypolígonos que son hijos suyos.
  21. 21. COMANDO UICONTROLEl 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. 22. COMANDO UICONTROLEl 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. 23. OPCIONES DEL COMANDO UICONTROL• El comando uicontrol permite definir los controlesgráficos de MatLab.23COLOR DELOBJETO(BACKGROUNDCOLOR)Controla el color del objeto. Por defecto éste sueleser gris claro, aunque puede tomar distintos valores:green, red, white, etc. Éstos irán definidos entrecomillas (por ejemplo green)ACCIÓN AEFECTUAR POR ELCOMANDO(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 decaracteres, que se ejecutará al activar el control.Esta instrucción es equivalente a realizareval(‘expresión’)CONTROLACTIVADO/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 produceningún efecto. Los valores que puede tomar estavariable son on u offALINEAMIENTOHORIZONTAL DELTITULO(HORIZONTALALIGNMENT)Esta opción determina la posición del título delcontrol en el mismo. Los valores que puede tomarson: left, center o right
  24. 24. OPCIONES DEL COMANDO UICONTROL24VALOR 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á activadoVALOR MÍNIMO (MIN) Análogo a la opción anterior para el valor mínimoCONTROL DELOBJETO PADRE(PARENT)Esta opción especifica el id del objeto padre. Debeir siempre en primer lugarPOSICIÓ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 controlVISIBLE(VISIBLE)Puede tomar dos valores: on/off. Indica si el controles visible en la ventana o no. Este comando essimilar al Enable, si bien éste además de quedarinhabilitado el control éste desaparece de lapantalla
  25. 25. OPCIONES DEL COMANDO UICONTROL25NOMBRE DELOBJETO(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 tomar Unitsson: pixels (puntos de pantalla), normalized(coordenadas de 0 a 1), inches (pulgadas), cent(centímetros), points (equivalente a 1/72 parte de unapulgada). La opción por defecto es pixelsVALOR(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.
  26. 26. COMANDO UICONTROLMATLAB 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 activagca 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. 27. COMANDO UICONTROLCHECK BOXESLos botones de selección permiten al usuario seleccionarentre dosopciones. 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. 28. COMANDO UICONTROL% Definir un texto fijo como título para los botones de seleccióntxt_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 ejescb_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. 29. COMANDO UICONTROL0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 100.10.20.30.40.50.60.70.80.91
  30. 30. COMANDO UICONTROLBARRAS DE DESPLAZAMIENTO (SCROLLING BARSO SLIDERS)Las barras de desplazamiento permiten alusuario introducir un valor entre un rango devalores. El usuario puede cambiar el valorclicando sobre la barra, clicando en las flechaslaterales o bien arrastrando el elemento centralcon el ratón.Ejemplo: El siguiente ejemplo muestra como seutilizan las barras de desplazamiento paramover un sistema de referencia espacial:
  31. 31. COMANDO UICONTROL% Obtener un id de la ventana activa y borrar su contenidofig = 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 azimutsli_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ónsli_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. 32. COMANDO UICONTROLazm_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. 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 susvaloresazm_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. 34. COMANDO UICONTROL1. La siguiente instrucción dibujará en la pantalla del gráfico un PUSH BUTTON, quetiene como nombre Start Plot. Al pulsarlo se ejecutarán las instruccionescontenidas 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 alpulsar 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:nt=(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;endmovie(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 enuna 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.
  35. 35. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIO35• Los controles son objetos que se ubican dentro de GUI ypermiten mostrar, aceptar o validar datos.• Éstos componentes son los uicontrol de MatLab y es por lo tantoprogramable en sus diferentes propiedades.PUSH BUTTONEl control push button genera una acción cuando el usuario haceun clic sobre él (por ejemplo, un botón OK puede cerrar una cajade diálogo).Programando el Callback: cuando el usuario pulsa el botónpushbutton, su callback se ejecuta y no devuelve un valor nimantiene 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]); % ejesxlabel(ejex)ylabel(ejey)legend(seno,itcoseno) % it=cursiva;title(FUNCIONES SENO Y COSENO);
  36. 36. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIOTOGGLE BUTTONLos toggles buttons generan una acción e indican un estadobinario (por ejemplo, on u off). Cuando se pulsa el botón togglebutton aparece oprimido y permanece así aún cuando se sueltael botón del mouse, al tiempo que el callback ejecuta las órdenesprogramadas dentro de él. Los subsecuentes clic del mouseretorna el toggle button al estado de nondepressed y es posiblede nuevo ejecutar su callback.Programando el Callback: la rutina del callback necesitapreguntar a toggle button para determinar en qué estado estaMatLab y pone el valor igual a Max de la propiedad cuando eltoggle button está oprimido (Max tiene por defecto 1) e igual aMin cuando el toggle button no está oprimido (Min tiene pordefecto 0).
  37. 37. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIORADIO BUTTONEste control se utiliza para seleccionar una opción de un grupo deopciones (es decir, sólo un botón está en estado seleccionado),para activar un radiobutton, pulse el botón del mouse en elobjeto. Los radiobutton tienen dos estados: seleccionado y noseleccionado, 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 mutuamenteexclusivos dentro de un grupo de opciones, los callback paracada radiobutton se deben poner en la propiedad value igual a 0en todos los otros radiobuttons del grupo. MatLab pone lapropiedad de value a 1 en el radio button pulsado por el usuario.
  38. 38. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIORADIO BUTTONfunction radiobutton1_Callback(hObject, eventdata, handles)set(handles.radiobutton2,value,0)opcion1 = get(handles.radiobutton1,value);if opcion1==1x=linspace(-2,3,3000); %Generamos una tabla de valores en el dominio xy=(x.^2).*(x<0)+1.*((0<=x)&(x<1))+(-x+2).*(1<=x); %Definimos la funciónplot(x,y,.);grid on;title(Función definida a trozos)endfunction 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 3Dtitle(Z=sin(sqrt(X^2+Y^2))/(sqrt(X^2+Y^2)));xlabel(x); ylabel(y); zlabel(z);end
  39. 39. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIOCHECK BOXLos checkboxes se utilizan para proporcionar al usuario variasopciones de las que se puede elegir una o más de una cuando seha pulsado el botón sobre él, e indica su estado como verificadoo no verificado. La propiedad value indica el estado delcheckbox 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 actualde un checkbox desde su callback preguntando el estado de supropiedad en value.function checkbox1_Callback(hObject, eventdata, handles)if (get(hObject,value)==get(h,Max))disp(El checkbox ha sido seleccionado); %CHECKBOX seleccionadoelsedisp(El checkbox no ha sido seleccionado); %CHECKBOX no seleccionadoend
  40. 40. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIOEDIT TEXTLos controles Edit Text son campos que les permiten a los usuariosingresar o modificar cadenas de texto. Cuando se quiera ingresarun texto, la propiedad string contiene el texto ingresado por elusuario.Programando el Callback: para obtener la cadena de textotecleada por el usuario se consigue de la propiedad string en elcallback.MatLab devuelve el valor de la propiedad string del edit textcomo una cadena de caracteres. Si se desea que el usuarioingrese valores numéricos, se debe convertir los caracteres anúmeros, usando el comando str2double el cual convierte lacadena a un tipo double. Si el usuario ingresa caracteres nonumé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
  41. 41. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIOSLIDERLos deslizadores o barras de desplazamiento permiten explorarfácilmente una larga lista de elementos o una gran cantidad deinformación, y acepta la entrada numérica dentro de un rangoespecífico, permitiéndole al usuario mover una barra corrediza. Eldesplazamiento de la barra se efectúa presionando el botón delmouse y arrastrando la barra, o pulsando el botón que posee unaflecha. La ubicación de la barra indica un valor numérico.Existen cuatro propiedades que controlan el rango y tamaño depaso del deslizador:value Contiene el valor actual del deslizadorMax Define el valor máximo del deslizador, el valor por defecto es 1Min Define el valor mínimo del deslizador, el valor por defecto es 0SliderStepEspecifica el tamaño de un paso del deslizador con respecto alrango, el valor por defecto es [0,01 0,10], proporciona un 1% decambio para los clics en las flechas y un 10% de cambio para losclics en la barrafunction slider1_Callback(hObject, eventdata, handles)slider_valor = get(handles.slider1,value)
  42. 42. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIOSTATIC TEXTLos controles Static Text se utilizan para mostrar texto que elusuario no puede modificar.El texto estático se usa frecuentemente para etiquetar otrosmandos y proporciona las direcciones al usuario, o indica valoresasociados 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 larutina de un callback asociada a él.Static text, no posee función asociada, pero sí una direcciónasociada, que la podemos utilizar para escribir los resultados.Para saber cuál es esta dirección, haciendo doble-clic en estecomponente, la ubicamos en la etiqueta Tag.
  43. 43. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIOLIST BOXLos List Boxes muestran una lista de ítems entre los cuales el usuariopuede seleccionar uno o más ítems.La propiedad string contiene la lista de cadenas desplegadas enel listbox. El primer ítem en la lista tiene el índice 1.La propiedad value contiene el índice en la lista de cadenas quecorresponde al ítem seleccionado. Si el usuario seleccionamúltiples ítems, entonces el value es un vector de índices.La propiedad List box Top es un índice en la serie de cadenasdefenidas por la propiedad string y debe tener un valor entre 1 yel número de cadenas.function listbox1_Callback(hObject, eventdata, handles)indice = get(handles.listbox1,value)
  44. 44. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIOLIST BOXSimple o Múltiple selección:Los valores de las propiedades Min y Max determinan si los usuariospueden 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óndel ítem múltiple.Programando el Callback: MatLab evalúa el callback del listbox despuésde que el botón del mouse se suelta o un evento del keypress se haefectuado, eso cambia la propiedad de value (es decir, cuando quierael usuario pulsa el botón en un ítem, pero no al pulsar el scrollbar en el listbox).Esto significa que el callback se ejecuta después del primer clic de undoble-clic en un solo ítem o cuando el usuario está haciendo lasselecciones múltiples, en estas situaciones se deberá agregar otrocomponente, como Done button (push button) y programar su rutina delcallback para preguntar el valor de la propiedad list box.
  45. 45. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIOLIST BOXfunction 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);elseset(handles.text1,String,CUATRO);end
  46. 46. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIOPOPUP MENULos Popup menús permiten visualizar una lista de opciones cuandolos usuarios presionan la flecha.La propiedad string contiene la lista de cadenas visualizadas en elpopup menu.La propiedad value contiene el índice del ítem seleccionado de lalista de cadenas, el primer ítem en la lista tiene el índice 1.Cuando no abre, un popup menu visualiza la opción actual que esdeterminado por el índice contenido en la propiedad value.Los popup menús son útiles cuando se quiere proporcionar variasopciones mutuamente exclusivas a los usuarios, y no usar una mayorcantidad de espacio que una serie de radio buttons requeriría.Programando el Callback: se puede programar el popup menu paratrabajar verificando sólo el índice del ítem seleccionado (contenidoen la propiedad value) o se puede obtener la actual cadenacontenida en el ítem seleccionado.
  47. 47. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIOPOPUP MENUfunction popupmenu1_Callback(hObject, eventdata, handles)opcion = get(handles.popupmenu1,value)switch opcioncase 1disp(Se ha seleccionado la opción 1);case 2disp(Se ha seleccionado la opción 2);otherwisedisp(Se ha seleccionado la opción 3);endActivando o desactivando controles:• Se puede saber si un control responde al botón del mouseusando la propiedad enable (habilitado). Los controlestienen tres estados: on: el control está operativo off: el control está inactivo inactivo: el mando es inválido, pero su etiqueta no segraba fuera. Cuando un mando es inválido, mientras sepulsa el botón izquierdo del mouse no se ejecuta surutina del callback.
  48. 48. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIO48AXESLos ejes (axes) permiten visualizar los gráficos, como todos los objetosde los gráficos, los ejes tienen las propiedades para controlar suapariencia.Programando el Callback: los ejes no son objetos uicontrol, peropueden programarse para ejecutar un callback cuando los usuariospulsen el botón del mouse en los ejes. Use la propiedad ButtonDownFcnde los ejes para definir el callback.Axes es la función de bajo nivel para la creación de gráficos. MatLabcrea automáticamente un eje, si no existe ya, cuando se emite uncomando que crea un gráfico.Si una GUI tiene múltiples ejes, se debe especificar qué ejes se deseapermanezcan en blanco explícitamente cuando se emite las órdenesde 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 cambiarlos ejes actuales todas las veces que se quiera al blanco de unos ejesdiferentes.
  49. 49. CONTROLES DE LA INTERFAZ GRÁFICA DEUSUARIOPANELSe puede hacer una GUI fácil de entender visualmente agrupando varioscontroles relacionados. Un panel puede contener los paneles y grupos debotones, 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 cadacomponente dentro de un panel se interpreta en relación a la esquina inferiorizquierda del panel. En general, si la GUI cambia de tamaño, el panel y suscomponentes también cambian de tamaño. Sin embargo, se puede controlarel tamaño y la posición del panel y sus componentes. Se puede hacer estomediante el establecimiento de la propiedad cambiar el tamaño de la GUI yproporcionar ResizeFcn callback para el panel.BUTTON GROUPLos grupos de botones son como los paneles, excepto que manejan unaselección exclusiva de botones de opción y botones de selección. Si un grupode 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 serseleccionado. 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ónde un grupo de botones, se usa SelectionChangeFcn callback para gestionar lasrespuestas a las selecciones.
  50. 50. ELABORACIÓN DE UNA INTERFAZGRÁFICA1. 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.>>guideSe 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. 51. ELABORACIÓN DE UNA INTERFAZGRÁFICA2. Adición de componentes.Seleccione los componentes de la paleta paraagregar y arrástrelos al área del esquema.
  52. 52. ELABORACIÓN DE UNA INTERFAZGRÁFICA3. Alineación de objetos.Para alinear los controles entre si, dé un clic en laopción Align Objects del menú Tools. La herramientade alineación muestra los objetos seleccionados y seprepara para ser alineado según las condicionesseleccionadas.
  53. 53. ELABORACIÓN DE UNA INTERFAZGRÁFICA4. Fijar propiedades para cada control.Para poner las propiedades de cada control, dé unclic en la opción View y seleccione luego la opciónProperty Inspector, y defina los valores.
  54. 54. ELABORACIÓN DE UNA INTERFAZGRÁFICA5. Activación de la Interfaz Gráfica de Usuario (GUI).Active la GUI seleccionando Run del menú Tools ouse la flecha de color verde del toolbar de guide.
  55. 55. ELABORACIÓN DE UNA INTERFAZGRÁFICA6. 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 paraejecutar y controlar la GUI. Se debe escribir dentro del callback delas funciones, las órdenes que se ejecutarán cuando los usuariosactiven un control en la GUI. Guide genera este archivo .m, conlas subfunciones vacías para cada componente que tiene uncallback asociado con él.% --- 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)
  56. 56. ELABORACIÓN DE UNA INTERFAZGRÁFICA6. Programación de la Interfaz Gráfica de Usuario (GUI).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 opcioncase 1 %usuario seleccionó la primera opciónx=-8:0.2:8;y=x.*sin(x);plot(x,y)grid onxlabel(Eje X)ylabel(Eje Y)case 2 %usuario seleccionó la segunda opciónx=-8:0.2:8;y=sin(x);bar(x,y)grid oncase 3 %usuario seleccionó la tercera opciónx=-5.5:0.2:5.5;y=x.*sin(x);polar(x,y)grid onend
  57. 57. 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.Por ejemplo:handles.surf, contiene el identificador del pushbutton 1handles.mesh, contiene el identificador del pushbutton 2handles.contour, contiene el identificador del pushbutton 3handles.menu, contiene el identificador del popupmenuid1=handles.surfid2=handles.meshid3=handles.contourid4=handles.menu

×