Está en la página 1de 220

UNIVERSIDAD DEL ATLANTICO

MATLAB - GUIDE
Para estudiantes de Ingeniera Qumica
Melanio A. Coronado H. I.Q.
2013

Programacin matemtica de procedimientos de clculo aplicados a la Ingeniera Qumica


incluyendo la creacin de interfaces de comunicacin entre el usuario y el computador

Melanio A. Coronado H.

Melanio A. Coronado H.

CONTENIDO

Prlogo

Leccin 1. Interfaz de usuario grfica (GUI)

Leccin 2. Configuracin de un GUI

19

Leccin 3. Programacin de un GUI

31

Leccin 4. Comportamiento de un GUI

43

Leccin 5. Creacin de funciones en un GUI

65

Leccin 6. Controles Check Box y Axes

77

Leccin 7. Control Pop-up Menu

99

Leccin 8. Control Button group

119

Leccin 9. Control Toggle Button

145

Leccin 10. Control List Box

163

Leccin 11. Control Table

177

Leccin 12. Control Slider

197

Leccin 13. Figure Propiedades MenuBar y ToolBar

211

Melanio A. Coronado H.

Melanio A. Coronado H.

PRLOGO
Este leccionario se propone impulsar, entre los estudiantes de la Universidad del Atlntico,
el uso de Matlab en virtud de su utilidad como cdigo de programacin matemtico para el
desarrollo de procedimientos de clculo requeridos en todos los mbitos del conocimiento
del programa de Ingeniera Qumica.
El presente documento ensea en 13 lecciones, el uso y programacin de cada uno de los
objetos, botones o controles disponibles en la plataforma. En cada leccin se plantea un
caso muy propio de algn clculo dentro de la Ingeniera Qumica, especialmente, solucin
de ecuaciones algebraicas y diferenciales, graficacin de funciones, haciendo especial
nfasis en el manejo de la solucin de ecuaciones diferenciales para el anlisis de la
dinmica de un sistema
El objeto de estudio se proyecta para elaborar, en varios documentos, un cubrimiento
completo de las potencialidades disponibles en la plataforma que permita al estudiante
adquirir una formacin avanzada en programacin matemtica con Matlab. Este es
considerado como un primer avance, que al trmino de su estudio pretende lograr que el
estudiante elabore interfaces sencillas que incluyan botones de las diferentes funciones
disponibles y que ejecuten procedimientos de clculos importantes en muchas de las
asignaturas del plan de estudios del programa de Ingeniera Qumica.

Se estima que el temario se puede desarrollar en un curso presencial de 12 horas que


demanda adicionalmente un nmero igual o algo mayor de trabajo no presencial por parte
del estudiante.
En la elaboracin de este documento han colaborado un considerable nmero de estudiantes
con aportes en diferentes aspectos de su construccin, como su redaccin, la seleccin de
casos para explicar los recursos computaciones disponibles en la plataforma, la
programacin de las interfaces y la estructura de las mismas. Es un trabajo que se ha
realizado durante algunos aos en los cursos de dinmica de sistemas, control de procesos y
diseo de plantas. A todos ellos, el autor quiere expresar sus mas sinceros agradecimientos
y el reconocimiento de que su participacin ha dejado una semilla que est empezando a
germinar.

Melanio A. Coronado H.
Autor

Melanio A. Coronado H.

Melanio A. Coronado H.

Leccin 1. INTERFAZ DE USUARIO GRFICA (GUI)


1.1 INTRODUCCIN
Matlab facilita las herramientas para que el usuario ejecute los cdigos construidos para la
solucin de un modelo matemtico mediante el accionar de los objetos grficos incluidos
en una interfaz de usuario grfica (GUI). Los objetos son los componentes del GUI, que se
elabora en el denominado Ambiente para el desarrollo de interfaces de usuarios grficas
(Graphical User Interface Development Environment o GUIDE).

1.2 ACCESO AL GUIDE


1. Para acceder al ambiente para el desarrollo de interfaces de usuarios grficos de Matlab
se digita la palabra clave guide desde el editor de comandos y se despliega la ventana
de ttulo GUIDE Quick Start que aparece en la Figura 1.1. Una alternativa ms rpida
consiste en presionar el icono GUIDE
que aparece dentro de la barra de
herramientas a la derecha del icono para desplegar la ventana de Simulink De
cualquiera de las dos formas se puede dirigir al espacio de trabajo de forma fcil y
rpida

Figura 1.1. Acceso Rpido a GUIDE


Por defecto, aparece desplegada el panel de nombre Create New GUI, en el cual se
observa el cuadro GUIDE templates con las opciones para abrir plantillas en blanco
(Blank GUI) o asistentes para la construccin de interfaces (GUI with Uicontrols y
GUI with Axes and Menu y Modal Question Dialog ).

Estructura de un GUIDE en blanco


2. Seleccione la opcin Blank GUI (Default) y presione el botn OK para desplegar el
ambiente o Layout Editor de GUIDE, cuyas partes y denominaciones se muestran en
la Figura 1.2

Melanio A. Coronado H.

Figura 1.2. Editor de GUIDE

La Figura 1.2 muestra las partes del editor de interfaces: barra de ttulo, barra de mens,
barra de herramientas paleta de objetos (a la izquierda) y el rea de distribucin de estos
(rea cuadriculada). En la barra de mens se observan los correspondientes a File, Edit,
View, Layout, Tools y Help. En la barra de herramientas se notan iconos ya conocidos como
New (abrir un nuevo caso), Open (abrir un caso guardado), Save (guardar un archivo
elaborado), Cut (Cortar), Copy (Copiar), Paste (Pegar), etc. Se incluyen algunas opciones
complementarias para la construccin del GUI como la herramienta para la alineacin de
los componentes (Alignment Tool), el editor de mens (Menu Editor), el editor de
archivos punto m (M-File Editor), el mostrario de objetos (Object Browser), el
inspector de propiedades de objetos (Property Inspector) y el botn para la ejecucin de
la interfaz (Run Button). Estos ltimos se acceden desde la barra estndar o desde los
mens View y Tools.

Posicin y tamao de un GUI


Si se quiere ajustar la posicin y el tamao del GUI a un valor exacto haga lo siguiente:

Seleccione el inspector de propiedades, Property Inspector, que se encuentra en la


barra de herramientas o en el men View. Se desplegar una ventana como la
observada en la Figura 1.3

Haga un clic sobre el botn desplegable que aparece a la derecha de la propiedad


Units y seleccione la opcin inches (pulgadas) que se encuentra en el men
contextual. El ajuste de la propiedad Units a characters le da al GUI una
apariencia ms consistente a travs de la plataforma

Haga un clic izquierdo sobre el signo + que se observa a la izquierda de la


propiedad Position para desplegar el rbol con el cual se introducen las
8

Melanio A. Coronado H.

coordenadas (x, y) del punto donde se quiere posicionar el extremo inferior


izquierdo del GUI, adems del ancho y el alto.

Figura 1.3 Inspector de Propiedades del GUI

Paleta de objetos del GUI


Los componentes incluidos en la paleta colocada a la izquierda del GUIDE son los objetos
que se instalan en el GUI para ejecutar, a travs de ellos, acciones que se requieren para la
corrida del programa codificado en Matlab. Los nombres de dichos componentes son:

Push Button:
Edit Text:
Static Text
Radio Button:
Checkbox:
Listbox:
Popup Menu:
Toggle Button:
Button Group:
Slider:
Panel:
Table:
Axes:
ActiveX Control:

botn de presin
botn de edicin de texto
botn de edicin de texto esttico
botn de una opcin (radio botn)
botn cuadro de verificacin
botn cuadro de lista desplegable men desplegable
botn de men desplegable tabla bidimensional
botn de conmutacin
botn grupo de radio botones agrupacin de objetos
botn barra deslizable
botn panel de grupo de botones
botn tabla cuadrcula para edicin de datos
botn ejes rectangulares de representacin grfica
botn de controles ActiveX
9

Melanio A. Coronado H.

Instalacin de objetos en un GUIDE


La instalacin de un componente en el rea de distribucin se puede hacer de cualquiera de
las siguientes formas:

Se presiona en forma sostenida con el botn izquierdo del mouse y se arrastra


hasta el rea de distribucin del GUIDE

Presionando el componente, el puntero del mouse cambia a forma en cruz y


esto sirve de gua para seleccionar la posicin de la esquina superior izquierda
del control.

3. Sobre la ventana desplegada del GUIDE aada tres botones de presin, un botn
esttico, un men desplegable y un cuadro de ejes como se observa en la Figura 1.4.

Figura 1.4 Adicin de Componentes al GUI

Alineacin de componentes del GUIDE


Los objetos instalados en el GUIDE se pueden alinear y espaciar entre s, mediante la
herramienta denominada Alignment Tool. Al utilizar dicho recurso, se seleccionan los
componentes y la opcin Align Objects que se encuentra en la barra estndar o en el
men Tools. Para alinear los tres botones Push Button instalados en el GUIDE de la
Figura 1.4 se procede de la siguiente manera:
1. Se seleccionan los tres botones presionando la tecla Ctrl y haciendo clic sobre
cada uno de ellos
10

Melanio A. Coronado H.

2. Se selecciona la opcin Align Objects para desplegar el asistente para la


alineacin de objetos y se observar el entorno como se muestra en la Figura 1.5.

Figura 1.5 Seleccin de objetos para su alineacin en el GUI

3. Para realizar los siguientes ajustes, se hacen las selecciones mostradas en la Figura
1.6 correspondiente a la ventana del asistente Align Objects.
a. Espaciado de 20 pixels entre los botones en direccin vertical
b. Alineacin a la izquierda en la direccin horizontal

Figura 1.6 Alineacin y Espaciado de los objetos


4. Se hace clic sobre el botn OK
11

Melanio A. Coronado H.

Archivos extension fig y extension m en Matlab GUIDE


Al guardar por primera vez una interfaz grfica de usuario elaborada a travs del GUIDE se
almacenan dos archivos: el uno es un archivo de extensin fig y el otro es un archivo de
extensin m.

El archivo con extensin .fig (FIG-File) es el que contiene una descripcin completa
de la distribucin de las figuras en el GUI y de sus componentes: botones, mens,
ejes, etc. Cuando se realizan cambios en el GUI en el editor, los cambios se guardan
en el archivo FIG-File

El archivo con extensin .m (M-File) es el que contiene el cdigo que controla el


GUI incluyendo los callbacks de sus componentes. A este archivo se refiere como el
GUI M-File. Cuando se corre o salva un GUI desde el editor, GUIDE genera el GUI
M-File con blancos para cada uno de los callbacks. Se pueden programar los
callbacks desde el editor de archivos M-File.

La Figura 1.7 muestra la interfaz grfica de usuario elaborada anteriormente. Para hacerla
desplegar se tiene que guardar la construccin elaborada a travs del GUIDE y que ste
haya almacenado el archivo de extensin fig y el archivo de extensin m. Para el despliegue
del GUI se abre y se hace correr el archivo de extensin m.

Figura 1.7. Componentes guardados en interfaz

1.3 PLANTILLAS DEL GUIDE


Al desplegarse la ventana de ttulo GUIDE Quick Start que aparece en la Figura 1.1, se
observa en el panel izquierdo que, adems de la opcin Blank GUI (Default), GUIDE
contiene dos tipos bsicos de GUIs que sirven como plantillas para la construccin de
interfaces de una forma mas fcil y rpida.
12

Melanio A. Coronado H.

Acceso a las Plantillas del GUIDE


Se puede acceder a las plantillas de GUIDE de dos maneras:

Digitando la palabra clave guide en el editor de comandos de Matlab o


Si el GUIDE ya se encuentra abierto, seleccionando la opcin New del men
File en el editor de GUIDE.

Al seleccionar una de estas plantillas, se despliega en el panel derecho una vista previa de
ella. En la Figura 1.8 se observa la seleccin y vista previa de la plantilla GUI with
Uicontrols

Figura 1.8. Plantilla GUIDE with Uicontrols


Al hacer clic sobre el botn OK se despliega la plantilla en el editor de GUIDE como se
observa en la Figura 1.9.

Figura 1.9. Vista Previa de la plantilla GUI with Uicontrols


13

Melanio A. Coronado H.

Plantilla GUIDE with Uicontrols


La Figura 1.10 muestra la plantilla denominada GUI with UIcontrols ya desplegada en el
editor de GUIDE. El GUI se hace funcionar haciendo clic sobre el botn Run que aparece
en la barra de herramientas como un tringulo verde y se despliega el cuadro modal que
aparece en la Figura 1.10.

Figura 1.10. Inicio de un GUI


Presione el botn Si para continuar, aceptando la salvacin de los cambios en la figura y
en el archivo M-File que soporta al GUI. Despus de guardar la plantilla asignndole un
nombre, Matlab despliega el GUI (Figura 1.11) y un archivo M-File que codifica la
ejecucin del archivo figura. Se deduce con esto que en la creacin de una plantilla se
generan dos archivos, uno para la figura construida como plantilla y otro M-File

Figura 1.11. GUI de la plantilla GUIDE with Uicontrols

Cuando el usuario ingresa los valores para la densidad y el volumen de un objeto, y


presiona el botn de nombre Calculate, el GUI calcula la masa del objeto y despliega el
resultado en el cuadro Mass(D*V). El GUI dispone de un marco (titulado Units) dentro
del cual hay dos radio botones para seleccionar el sistema de unidades. El botn Reset al
presionarlo deja en blanco los cuadros de edicin y con ello se puede utilizar el GUI para
unos nuevos clculos. Adems, incluye otro marco (titulado Measures) con tres cuadros
estticos que muestran los nombres de las magnitudes a ingresar en los respectivos cuadros
de edicin y otros tres cuadros estticos que muestran las unidades de las magnitudes. La
Figura 1.12 muestra la utilizacin del GUI para calcular la masa de un objeto especificada

14

Melanio A. Coronado H.

la densidad y el volumen del mismo, seleccionando el sistema de unidades English Unit


System.

Figura 1.12. Corrida del GUI de la plantilla GUIDE with Uicontrols


Plantilla GUIDE with Axes and Menu
La Figura 1.13 muestra la plantilla denominada GUI with Axes and Menu ya desplegada
en el editor de GUIDE. Contiene un objeto Axes donde se despliegan grficos, un botn
desplegable donde se selecciona el grfico y un botn de presin para ejecutar la seleccin
anterior

Figura 1.13. GUIDE with Axes and Menu


Al hacer clic sobre el botn OK se despliega la plantilla en el editor de GUIDE como se
observa en la Figura 1.14.
Al correr el GUI, respondiendo los requerimientos previos, se muestran cinco grficos de
nmeros al azar generados con el comando rand(5), como se observa en la Figura 1.15.
Se pueden seleccionar otros grficos en el men contextual y presionar el botn Update
para desplegar en el cuadro Axes el grfico seleccionado. La Figura 1.16 muestra los
grficos correspondientes a una funcin membrane (a la izquierda) y el grfico de
superficie correspondiente a una funcin peaks

15

Melanio A. Coronado H.

Figura 1.14 Plantilla GUIDE with Axes and Menu

Figura 1.15. Corrida del GUI de la plantilla GUIDE with Axes and Menu

Figura 1.16. Corrida del GUI de la plantilla GUIDE with Axes and Menu
16

Melanio A. Coronado H.

El GUI tambin incluye una barra de men con solamente un men denominado File que al
desplegarlo se puede observar que contiene las opciones Open, Print y Close.

Open despliega un dilogo con el cual se pueden abrir archivos grabados en su


computador

Print ejecuta el comando printdlg con el cual se despliega el cuadro de dilgo


Print (handles.figure1). Observe que handles.figure1 contiene el grfico por
defecto. Al presionar el botn Yes en cuadro de dilogo Print se imprime el
grfico

Close cierra la ventana del GUI

Plantilla Modal Question Dialog


La Figura 1.17 muestra la plantilla denominada GUI Modal Question Dialog ya
desplegada en el editor de GUIDE. Contiene un marco titulado Preview que incluye una
imagen de un signo de interrogacin posicionado sobre un Axes, un botn esttico con una
leyenda (Do you want to creat a question dialog?) y dos botones de presin (Yes, No)

Figura 1.17. Plantilla GUIDE Modal Question Dialog


Al hacer clic sobre el botn OK se despliega la plantilla en el editor de GUIDE como se
observa en la Figura 1.18.
Al correr la plantilla se despliega, adems del archivo M-File, el cuadro modal de
interrogacin que se observa en la Figura 1.19.

17

Melanio A. Coronado H.

Figura 1.18. Plantilla GUIDE Modal Question Dialog


Segn el botn que se presione, Yes o No, se crear o no se crear un cuadro de
dilogo.

Figura 1.19. Inicio de la creacin de un dilogo pregunta

18

Melanio A. Coronado H.

Leccin 2. CONFIGURACIN DE UN GUI


2.1. INTRODUCCIN
Matlab implementa una GUI como una figura que se despliega como una
ventana que contiene varios objetos o controles. Se debe programar cada uno de
ellos para que realice la accin que se quiere cuando el usuario active el
componente, adems de permitir el salvamento y la corrida del GUI. Todas estas
tareas se simplifican a travs del GUIDE.
La elaboracin de una GUI incluye dos tareas bsicas como son: el reparto o
distribucin de los componentes de la interfaz y la programacin de cada uno de
los componentes. GUIDE esencialmente es un conjunto de herramientas para la
distribucin, pero tambin facilita el acceso al archivo M-File que contiene el
cdigo que maneja la iniciacin y acometida del GUI. El archivo M-File
constituye un marco para la implementacin de los Callbacks, es decir, las
funciones que se ejecutan cuando los usuarios activan los componentes en el
GUI.
Aun cuando es posible escribir un archivo M-File que contenga todos los
comandos para elaborar una GUI, es mucho ms fcil utilizar el GUIDE porque
permite hacerlo interactivamente. Al salvar o correr el GUI, GUIDE
automticamente genera los archivos de extensiones punto fig y punto m, el
primero de los cuales contiene la descripcin completa del GUI y el segundo
contiene las funciones que corren y controlan el GUI y los callbacks. A este
ltimo se le refiere como el archivo GUI M-File. Este archivo no contiene el
cdigo que distribuye los controles; esta informacin se salva en el archivo FIGFile.

Estructura del archivo GUI M-File


GUIDE simplifica el proceso de elaboracin de una GUI mediante la generacin
automtica del archivo GUI M-File directamente desde su entorno. GUIDE
genera el callback para cada componente en el GUI que lo requiere.
Inicialmente, GUIDE genera exactamente una lnea que define la funcin para
cada callback. Se puede, entonces, aadir cdigo al callback para hacer que
desarrolle la operacin que se quiere.
El archivo M-File contiene otras dos funciones donde es posible que se necesite,
tambin, aadir cdigo que son la Opening function y la Output function

19

Melanio A. Coronado H.

La funcin Opening function desarrolla tareas antes que el GUI sea


visible al usuario, tales como la creacin de datos para el GUI. GUIDE,
por defecto, denomina a esta funcin como untitled1_OpeningFcn,
siendo untitled1 el nombre del GUI que el usuario puede cambiar
La funcin Output function da salida a las variables hasta la lnea de
comandos. Si es necesario, GUIDE le asigna como nombre a esta funcin
untitled1_OutputFcn.

2.2 . GUI: CALCULADORA DE OPERACIONES ARITMTICAS


A continuacin se explica la elaboracin de una interfaz (GUI) titulada
Calculadora que ejecuta algunas operaciones aritmticas codificadas con Matlab
y cuya configuracin terminada dentro del entorno GUIDE se muestra en la
Figura 2.1.

Figura 2.1. GUIDE para la elaboracin de GUI titulado Calculadora


La interfaz muestra seis botones de opcin (Suma, Resta, Multiplicacin,
Divisin, Potenciacin, Radicacin) para seleccionar la operacin que se quiera
realizar dentro de un panel titulado OPERACIONES, tres botones de edicin
esttica de texto para desplegar el nombre de cada uno de los nmeros a operar
(Sumando 1, Sumando 2) y el del resultado (Total) de acuerdo a la operacin
previamente elegida, todo esto dentro de un panel titulado OPERADORES Y
20

Melanio A. Coronado H.

RESULTADO. En este ltimo panel se observan tres botones de edicin de texto


para introducir los nmeros a operar (0 por defecto) y desplegar el resultado
correspondiente (0 por defecto). En la parte de abajo se nota un botn (Sumar)
que al presionarlo se ejecuta el cdigo de Matlab que obtiene el resultado para la
operacin seleccionada entre los nmeros digitados. En la parte superior se lee
un texto CALCULADORA dentro de un cuadro de edicin de texto esttico. En
la barra de ttulo aparece la palabra Calculadora que es el nombre puesto al
archivo punto fig.

2.3. CONTROLES EN EL ENTORNO DE DESARROLLO (GUIDE)


La paleta de componentes del editor del GUI contiene los controles que usted
puede colocar en su GUI. Estos componentes son objetos programables a travs
de sus propiedades Callbacks y se denominan Push Button, Slider,
Radio Button, Check Box, Edit Text, Static Text, Pop-Up Menu,
ListBox, Toggle Button, Table, Axes, Panel, Button Group y
ActiveX Control.

Propiedades de los componentes del GUI


Las propiedades de los componentes son algunas caractersticas como el ttulo
que se observar en la ventana o en el botn, el nombre, el tamao, el color con
que se identificar el componente, etc. A continuacin se explica la construccin
de la interfaz mostrada en la Figura 2.1 y simultneamente se describen algunas
propiedades de los controles incluidos:
1. Digite en el editor de comandos de Matlab la palabra clave guide, presione
el botn OK de la ventana titulada GUIDE Quick Start y seleccione el
icono Property Inspector que se encuentra en la barra de herramientas a la
derecha para que se despliegue dicha ventana. Otras rutas posibles para lo
anterior es a travs del men View o haciendo doble clic izquierdo sobre
un lugar cualquiera sobre el entorno abierto.

Componente Figure Propiedad Name


Figure es la ventana que contiene la interfaz grfica de usuario que se disea
con el editor. La propiedad Name es el ttulo que se despliega en la barra
superior de la interfaz. Para la asignacin del valor Calculadora a esta propiedad

21

Melanio A. Coronado H.

visualice el inspector de propiedades de Figure como se explica a


continuacin:
2. Deslice hacia abajo la lista de propiedades hasta encontrar la de nombre
Name. En el campo anexo a la derecha, digite Calculadora como se
observa en la Figura 2.2.

Figura 2.2. Inspector de Propiedades de Figure

Componente Radio Button


Los controles Radio Button son botones que al presionarlos se selecciona una
opcin entre varias disponibles. Los botones Radio Button son, por
convencin, mutuamente excluyentes dentro del grupo de radio botones. Es
decir, que cuando se selecciona un radio botn, el que haya sido previamente
seleccionado debe desactivarse. La activacin de un radio botn se observa con
el crculo relleno de color negro. Si se utiliza un Button Group se administra
la exclusin mutua entre los radio botones.

Propiedades String, Value, Tag y FontWeight


La propiedad String, para el componente Radio Button, asigna el nombre
que aparecer como leyenda a la derecha del crculo opcin y la propiedad
22

Melanio A. Coronado H.

Value es de carcter binario que cuando se le asigne el valor de 1.0 el crculo


se desplegar como seleccionado y cuando se le asigne el valor de 0.0 el crculo
se desplegar como un botn desactivado. La propiedad Tag es el nombre con
que se conocer el botn al invocar su callback
3. Instale un botn Radio Button en el GUIDE. Despliegue el inspector de
propiedades y ajuste la propiedad String con la palabra Suma y la
propiedad Value al valor 1.0. Con esto, el radio botn Suma se muestra
activo, por defecto, cuando la interfaz se abra (Observe la Figura 2.3).

Figura 2.3. Inspector de propiedades del radio botn Suma


La propiedad Tag se ajusta al valor suma. Lo anterior quiere decir que en
el archivo punto eme de Matlab la funcin correspondiente al botn se
denomina function suma_Callback(hObject, eventdata, handles). Esto se
puede observar si se guarda lo realizado hasta ahora y se abre el archivo
punto eme.
La propiedad Fontweight se ajusta al valor bold para observar las leyendas
en letras negritas a la derecha del radio botn
4. Instale, adicionalmente, cinco radio botones Radio Button en el GUIDE
como estn colocados en la interfaz que se muestra en la Figura 2.1.
23

Melanio A. Coronado H.

Despliegue el inspector de propiedades de cada uno de ellos y ajuste la


propiedad String con la palabra Resta, Multiplicacin, Divisin,
Potenciacin y Radicacin, respectivamente. Estas son las leyendas que
aparecern a la derecha de los botones en la interfaz.
A cada uno de los cinco radios botones anteriores ajuste la propiedad Value al
valor 0.0. Con esto, los radios botones se muestran desactivados, por defecto,
cuando la interfaz se abra.
Las respectivas propiedades Tag para cada uno de los cinco radios botones
anteriores ajstelas a los valores resta, multi, divi, poten y radi. Con esto, en
el archivo punto de eme de Matlab se insertan las funciones para cada uno de
los radios botones con los siguientes nombres:
function resta_Callback(hObject, eventdata, handles),
function multi_Callback(hObject, eventdata, handles),
function divi_Callback(hObject, eventdata, handles),
function poten_Callback(hObject, eventdata, handles) y
function radi_Callback(hObject, eventdata, handles).
Seleccione los cinco radio botones instalados y presione el icono que se
encuentra sobre la barra de herramientas con el nombre Property Inspector
para asignar la propiedad FontWeight al valor bold para desplegar las
leyendas en negrita.

Componente Panel
El componente Panel se utiliza para reunir varios componentes en un grupo
dentro de un GUI. Esta agrupacin puede hacer que la interfaz se observe ms
fcil para el usuario. Un panel puede tener un ttulo y varios bordes.
Un panel hijo puede ser los controles y ejes de una interfaz de usuario como
tambin un grupo de botones y de otros paneles. La posicin de cada
componente dentro del panel se interpreta con relacin al panel. Si se mueve el
panel, su panel hijo se mueve con l y mantiene sus posiciones dentro del panel.

Propiedades Title, ForegroundColor y BorderWidth


La propiedad Title, para el componente Panel, asigna el nombre al ttulo
que aparecer en la parte superior del marco y la propiedad ForegroundColor
se ajusta para seleccionar el color de las letras del ttulo del panel. La propiedad
24

Melanio A. Coronado H.

BorderWidth se ajusta para asignar el valor del ancho de la lnea que se


despliega como marco del panel. La propiedad Tag asignada por defecto al
panel instalado es unipanel1.
5. Instale un componente Panel en el GUIDE y agrupe dentro de l los seis
radio botones anteriormente instalados como estn colocados en la interfaz
que se muestra en la Figura 2.1. Seleccione el panel instalado y despliegue el
inspector de propiedades para ajustar la propiedad Title con la palabra
OPERACIONES. Esta es la leyenda que aparece como ttulo en la parte
superior izquierda del marco que encierra el panel. (Observe la Figura 2.4)

Figura 2.4. Inspector de propiedades del panel unipanel1


En la Figura 2.4 se observa que la propiedad ForegroundColor se ha
ajustado al color rojo que es el color como se despliega el ttulo del panel y la
propiedad BorderWidth se ha ajustado al valor 2 para desplegar la lnea
marco del panel que este ancho.
La propiedad FontWeight se ajust al valor bold y se ha dejado la
propiedad Tag con el valor asignado por defecto que es uipanel1.
Se sugiere al usuario observar algunas otras propiedades del panel para
aumentar el conocimiento de su manejo. Por ejemplo, la propiedad
TitlePosition define la posicin del ttulo y se deduce que, por defecto, se

25

Melanio A. Coronado H.

fija el valor lefttop para desplegarlo arriba a la izquierda, al desplegar el men


contextual se observan las otras opciones.

Componente Static Text


Los controles Static Text despliegan lneas de texto. El botn Static Text,
usualmente, se utiliza para colocar la etiqueta de otros controles, suministrar
directrices al usuario, o indicar valores asociados con un objeto deslizable. El
usuario no puede cambiar su texto interactivamente y no existe una forma de
invocar la rutina callback asociada con l

Propiedad String
La propiedad String, para el componente Static Text, asigna el nombre que
aparecer en la interfaz como leyenda distintiva del control. En la interfaz
mostrada en la Figura 2.5 se muestra el inspector de propiedades de un
componente de texto esttico y su instalacin se explica a continuacin:

Figura 2.5. Inspector de propiedades del botn Static Text

6. Instale un botn Static Text en el GUIDE. Despliegue el inspector de


propiedades y deslice la lista hasta encontrar la de nombre String. Cambie
el nombre que aparece por defecto, es decir, Static Text por la expresin

26

Melanio A. Coronado H.

CALCULADORA. Coloque el botn en el centro de la parte superior del GUI


como se observa en la Figura 2.1

Propiedad FontSize
Se observa, en la Figura 2.5, que se han hecho los siguientes ajustes: la propiedad
Tag se dej en su valor por defecto, es decir, text1; la propiedad
ForegroundColor al color rojo; la propiedad FontWeight al valor bold y la
propiedad FontSize al valor 14. La primera es el nombre del control para
invocarlo dentro del archivo punto eme de Matlab, la segunda es el color del nombre
que se despliega, la tercera es el tipo negrita de la leyenda y la tercera el tamao de
la letra.
7. Siguiendo la elaboracin del GUIDE mostrado en la Figura 2.1 instale otros
tres botones Static Text y ajuste las propiedades String de cada uno de
ellos con las expresiones Sumando 1 para el primero, Sumando 2 para el
segundo y Total para el ltimo. Haga la alineacin de ellos para una
justificacin a la izquierda e igualmente espaciados en la orientacin vertical.
Ajuste las propiedades Tag, ForegroundColor, FontWeight y
FontSize en forma similar a la realizada con el botn de texto esttico
instalado de acuerdo al punto 6. La propiedad Tag ahora es text2, text3 y
text4, respectivamente.

Componente Edit Text


Los controles Edit Text despliegan lneas de texto editables. El botn Edit Text,
usualmente, se utiliza para ajustar o capturar la propiedad String. Con el ajuste se
despliega el nuevo valor de la propiedad y con la captura es posible el
procesamiento de la informacin dentro del cdigo. Es decir, que el usuario puede
cambiar su texto interactivamente porque existe la forma de invocar la rutina
callback asociada con l.

Propiedad String
La propiedad String, para el componente Edit Text, asigna el valor que
aparecer en la interfaz como dentro del cuadro correspondiente. En la interfaz
mostrada en la Figura 2.6 se muestra el inspector de propiedades de un componente
de edicin de texto y su instalacin se explica a continuacin:

27

Melanio A. Coronado H.

8. Instale un botn Edit Text en el GUIDE y colquelo como se observa el


primero de los tres botones de edicin de texto en la Figura 2.1. Despliegue el
inspector de propiedades y deslice la lista hasta encontrar la de nombre
String y ajuste el valor de dicha propiedad con el nmero cero (0)
observado a la derecha

Figura 2.6. Inspector de propiedades de un botn Edit Text

Propiedad HorizontalAlignment, BackgroundColor y FontName


Se observa en la Figura 2.5 que se han hecho los siguientes ajustes: la propiedad
Tag a su valor por defecto, es decir, edit1, la propiedad HorizontalAlignment al
valor right (a la derecha del cuadro), la propiedad FontWeight al valor normal y
la propiedad FontSize al valor 10. La primera es el nombre de la funcin definida
en el archivo punto eme de Matlab para el control de edicin de texto, la segunda es
la posicin dentro del cuadro del nmero que se despliega, la tercera es el tipo
normal y la cuarta el tamao del nmero.
Se sugiere al usuario ensayar el conocimiento de las siguientes propiedades:
BackgroundColor, FontName,

28

Melanio A. Coronado H.

9. Siguiendo la elaboracin del GUIDE mostrado en la Figura 2.1 instale otros


dos botones Edit Text y ajuste las propiedades String con el valor de
cero (0) para cada uno de ellos. Haga la alineacin de ellos para una
justificacin a la izquierda e igualmente espaciados en la orientacin vertical.
Ajuste las propiedades Tag, HorizontalAlignment, FontWeight y
FontSize en forma similar a la realizada con el botn de edicin de texto
instalado de acuerdo al punto 8. La propiedad Tag ahora es edit2 y edit3,
respectivamente. Con esto, en el archivo punto de eme de Matlab se insertan
las funciones para cada uno de los radios botones con los siguientes nombres:
function edit1_Callback(hObject, eventdata, handles),
function edit2_Callback(hObject, eventdata, handles),
function edit3_Callback(hObject, eventdata, handles),

Componente Push Button


Un botn Push Button genera una accin cuando se presiona, por ejemplo, un
botn OK puede cerrar una caja de dilogo y aplicar los ajustes. Cuando se presiona
con el mouse un botn Push Button se observa deprimido, mientras que cuando se
libera el mouse el botn se observa levantado y se ejecuta su correspondiente
callback. Un botn Push Button no regresa un valor ni mantiene un estado. En el
GUIDE de la Figura 2.1 el botn Push Button es el que aparece con la leyenda
Sumar

Propiedad String
Con la propiedad String se asigna el nombre que se quiere que se despliegue
como leyenda o ttulo en el frente de un botn Push Button.

Propiedad Tag
Con la propiedad Tag, GUIDE nombra la subfuncin callback en el archivo GUI
M-File. Esta propiedad se asigna antes de activar el GUI.
10. Instale un botn Push Button en el GUIDE. Despliegue el inspector de
propiedades y deslice la lista hasta encontrar la de nombre String. Cambie
el nombre que aparece por defecto, es decir, Push Button por la palabra
Sumar. El callback de este botn se codificar con las instrucciones
requeridas para que al presionarla se despliegue el resultado de la suma entre
los sumandos editados en los cuadros Edit Text.
29

Melanio A. Coronado H.

2.4. EJECUCIN DEL GUI


Para la ejecucin de la interfaz terminada anteriormente, la ruta ms corta es la de
presionar el icono Run Figure
localizado a la derecha de la barra de
herramientas del entorno GUIDE. Otras alternativas: son el despliegue del men
Tools y la seleccin de la opcin Run y utilizando el atajo observado a la
derecha de la opcin anterior, es decir, Ctrl + T.
Al hacer la ejecucin, por primera vez, Matlab genera dos archivos: uno de
extensin punto eme que se abre desde el Editor de Matlab y otro de extensin punto
fig que se abre a travs de las rutas para desplegar el GUIDE. El archivo punto eme
contiene las funciones correspondientes a los distintos controles instalados dentro de
las cuales se codifican las ejecuciones que se han de cumplir al hacer uso de los
botones desde la interfaz. Para la calculadora configurada en esta leccin, estos
archivos se han de guardar con el nombre final. La interfaz configurada siguiendo
las instrucciones anteriores, al hacer una corrida de ella se desplegar como se
observa en la Figura 2.7.

Figura 2.7. Interfaz elaborada para la Calculadora

Algunas observaciones resaltables son: la barra de ttulo con el nombre Calculadora,


el radio botn Suma activado por defecto, los paneles con sus marcos lineales y sus
respectivos ttulos y los valores de cero (0) asignados por defecto en los botones de
edicin de texto y su justificacin a la derecha. Las dimensiones observadas en la
interfaz fueron ajustadas especificando la propiedad Position de la Figure que
consiste en la fijacin de las coordenadas, el ancho y el alto de la interfaz. Estando
sobre el entorno o GUIDE de Matlab y al presionar el icono
M-file Editor se
despliega el archivo punto eme desde el editor de Matlab cuya explicacin es el
tema de la prxima leccin
30

Melanio A. Coronado H.

Leccin 3. PROGRAMACIN DE UN GUI


3.1.

INTRODUCCIN

Completada la primera etapa sobre la instalacin y distribucin de los


componentes de un GUI, la segunda etapa consiste en la codificacin, en el
archivo punto eme de Matlab, de las funciones de cada uno de los botones.
Abierta la interfaz configurada en la leccin anterior (final.fig) para ejecutar
algunos clculos aritmticos entre dos nmeros, se puede accesar al archivo
punto eme correspondiente presionando el icono M-file Editor que en su
contenido inicial se observa como se muestra en la Figura 3.1. Otra ruta posible
es a travs del men View y seleccionando la opcin M-file Editor.

Figura 3.1. Archivo final.m


Inversamente, si se abre primero el archivo punto eme (final.m) y se presiona el
icono Run final.m
localizado a la derecha de la barra de herramientas del
editor de Matlab se despliega la interfaz elaborada para su ejecucin.
Se puede observar que en la barra de ttulo muestra la ruta completa donde se
localiza el archivo final.m y el cdigo comienza con la insercin de una funcin
llamada con el mismo nombre del archivo y que, este caso, es function varargout
= final(varargin). Los siguientes renglones precedidos de un signo de porcentaje
31

Melanio A. Coronado H.

y en color verde son simples comentarios y al final de la figura se observa


algunas ordenes insertadas con el mensaje en maysculas de no editarlas (DO
NOT EDIT).
En la Figura 3.2 se muestra otra seccin del archivo final.m con el objeto de
hacer notar que con la instalacin de los controles sobre la interfaz se insertan
funciones dentro de las cuales el programador debe escribir el cdigo que se
quiere desarrollar cuando se haga funcionar dichos botones.

Figura 3.2. Archivo final.m Funciones Callback

Se observa en la Figura 3.2 que, por ejemplo, para el botn de edicin de texto
cuyo Tag es edit1 se han insertado las funciones function
edit1_Callback(hObject, eventdata, handles) y function edit1_CreateFcn(hObjet,
evendata, handles). Al desplazarse hacia abajo, dentro del cdigo, se encuentran
similares funciones para los botones edit2 y edit3.
Para el propsito con que se construye la calculadora los callback de los botones
de edicin de texto no requieren de codificacin y, por el momento, se
recomienda no modificar el contenido dentro de la funcin CreateFcn.
En la Figura 3.3 se muestra otra seccin del archivo final.m con el objeto de
mostrar que en el espacio abierto en el archivo punto eme de Matlab para
codificar el radio botn Suma se han escrito un conjunto de ordenes que deben
cumplirse cuando dicho componente sea seleccionado.
32

Melanio A. Coronado H.

Figura 3.3. Archivo final.m function suma_Callback

Todo lo anterior permite deducir que para el llamado y la denominacin de un


componente se utilizan dos propiedades importantes como son el Callback y el
Tag.

Propiedades Callback y Tag de los componentes de un GUI


Una propiedad importante es la que especifica el callback cdigo que se ejecuta
cuando el usuario activa un botn. Cuando se aade por primera vez un componente
al GUIDE, la propiedad callback es ajustada al valor de caracteres %
automatic. Cuando se salva o se corre el GUI, GUIDE convierte este valor en uno
que llama la funcin en el archivo M-File generado. GUIDE utiliza la propiedad
Tag del componente para asociarlo con dicha funcin. Por defecto, se puede
observar, por ejemplo, que cuando se instala por primera vez un botn Push
Button se le asigna como leyenda genrica el nombre pushbutton1_Callback y
para el caso del archivo final.m se opt por dicha denominacin.

Sintaxis de una funcin Callback


La sintaxis de la funcin Callback requiere de tres argumentos y se escribe en la
siguiente forma:
function objectTag_Callback(hObject, eventdata, handles)
33

Melanio A. Coronado H.

El argumento hObject es la estructura del objeto cuyo callback se est ejecutando.


El argumento eventdata se establece como vaco y es reservado para un uso futuro.
El argumento handles es una estructura que contiene las estructuras de todos los
componentes en el GUI cuyos nombres de campos son definidos mediante la
propiedad Tag del objeto. Puede tambin, utilizarse para pasar datos a otras
funciones callback o la lnea de comandos.
Por ejemplo, si se instala un botn push button cuya propiedad Tag se ajusta a
pushbutton1, entonces GUIDE genera la siguiente subfuncin en el archivo GUI
M-File encabezada con el siguiente nombre:

function pushbutton1_Callback(hObject, eventdata, handles)

Comando get
La palabra clave get se aplica para adquirir la informacin sobre las propiedades
o caractersticas de un objeto. La sintaxis de este comando es:
get(handles.Objeto, Propiedad)

Comando set
Con el comando set se ajustan las propiedades del botn o componente
programado en la funcin en la cual est incluido el ciclo de control. La sintaxis del
comando set es:
set(handles.Objeto, Propiedad, Valor de la Propiedad)

3.2 . DESCRIPCIN DEL GUI final.fig


A continuacin se describe la utilizacin de la interfaz final.fig como herramienta
para ejecutar operaciones aritmticas entre dos nmeros. El programador se propone
que cuando el usuario:
1. Seleccione la operacin deseada se desactiven las otras incluidas en el panel
OPERACIONES y
34

Melanio A. Coronado H.

2. Se desplieguen en los botones de texto esttico colocados dentro del panel


OPERADORES Y RESULTADO y en el botn de presin las leyendas con
los nombres que tienen de acuerdo a la operacin seleccionada. Por ejemplo,
al seleccionar
resta (Minuendo, Sustraendo, Diferencia, Restar),
multiplicacin (Factor 1, Factor 2, Producto, Multiplicar), Divisin
(Dividendo, Divisor, Cociente, Dividir), Potenciacin (Base, Exponente,
Resultado, Potenciacin), Radicacin (Radicando, Raz, Resultado,
Radicacin).

3. Digite los nmeros en los botones de edicin de texto correspondiente, haga


clic izquierdo, seguidamente, sobre el botn de presin y se despliegue el
resultado de la operacin seleccionada en el botn de edicin de texto
correspondiente.

3.3 . PROGRAMACIN DEL GUI final.fig


Programacin de los botones Static Text
De acuerdo a la descripcin anterior, los componentes de texto esttico no requieren
programacin porque su misma naturaleza solo permite que sus propiedades sean
ajustadas con rdenes codificadas en las funciones callback de otros componentes.

Programacin de los botones Edit Text


Algo similar ocurre con los botones de edicin de texto porque, en este caso, con
dos de ellos se ingresaran nmeros (ajuste de la propiedad String) que sern
capturados y se procesarn operaciones aritmticas cuyas codificaciones se incluirn
como parte de la funcin callback del botn de presin y que incluye, dentro de sus
rdenes, que el resultado se despliegue (ajuste de la propiedad String) en el
tercero de los botones de edicin de texto.Lo anterior permite deducir que requieren
de codificacin las funciones callback para los radio botones y el botn de presin.

Programacin del radio botn Suma


En la Figura 3.3 se observa del archivo punto eme de Matlab en el segmento
correspondiente a la function suma_Callback(hObject, evendata, handles)
correspondiente al radio botn Suma.

35

Melanio A. Coronado H.

En los renglones desde el nmero 182 hasta el 187 se ajusta la propiedad Value
de cada uno de los radio botones de tal manera que al seleccionar el denominado
Suma se active (Propiedad Value igual a uno) y los otros cinco radio botones se
desactiven (Propiedad Value igual a cero). Observe el comentario escrito en el
rengln 180.
Del rengln 191 a 194 se ajusta la propiedad String de los bloques editores de
texto esttico dentro del panel OPERADORES Y RESULTADO y del bloque de
presin colocado en la parte inferior central. Los valores asignados, en este caso, son
los mismos colocados para desplegarse por defecto al abrirse la interfaz. Observe el
comentario escrito en el rengln 189.
Del rengln 198 a 200 se ajusta la propiedad String de los bloques de edicin de
texto, todos ellos a un valor de cero (0). Se hace notar que el cero digitado es de
naturaleza string y para utilizarlo como nmero para realizar operaciones aritmticas
se requiere la conversin de la naturaleza del carcter. Observe el comentario escrito
en el rengln 196.

Programacin del radio botn Resta


A continuacin se muestra la copia del segmento del archivo punto eme de Matlab
correspondiente a la funcin callback para el radio botn Resta
function resta_Callback(hObject, eventdata, handles)
% hObject handle to resta (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of resta
% Activacin del radio botn resta y desactivacin de los otros
set(handles.resta,'value',1)
set(handles.multi,'value',0)
set(handles.suma,'value',0)
set(handles.divi,'value',0)
set(handles.poten,'value',0)
set(handles.radi,'value',0)
% Ajuste de la propiedad String para los botones Static Text y push button
set(handles.text2,'string','Minuendo')
set(handles.text3,'string','Sustraendo')
set(handles.text4,'string','Diferencia')
set(handles.pushbutton1,'string','Restar')
% Ajuste de la propiedad String para los botones Edit Text
set(handles.edit1,'string','0')
set(handles.edit2,'string','0')
set(handles.edit3,'string','0')
36

Melanio A. Coronado H.

En forma similar al radio botn Suma, primero se ajustan los valores de la propiedad
Value de los radio botones, pero en este caso se ha de activar el radio botn Resta y
los otros cinco deben desactivarse. Las propiedades String de los botones de edicin
de texto esttico y del botn de presin deben ajustarse a los valores Minuendo,
Sustraendo, Diferencia y Restar. Las propiedades String de los botones de edicin
de texto se ajustan al valor cero (0).

Programacin del radio botn Multiplicacin


A continuacin se muestra la copia del segmento del archivo punto eme de Matlab
correspondiente a la funcin callback para el radio botn Multiplicacin.
function multi_Callback(hObject, eventdata, handles)
% hObject handle to multi (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of multi
% Activacin del radio botn multiplicacin y desactivacin de los otros
set(handles.multi,'value',1)
set(handles.suma,'value',0)
set(handles.resta,'value',0)
set(handles.divi,'value',0)
set(handles.poten,'value',0)
set(handles.radi,'value',0)
% Ajuste de la propiedad String para los botones Static Text y push button
set(handles.text2,'string','Factor 1')
set(handles.text3,'string','Factor 2')
set(handles.text4,'string','Producto')
set(handles.pushbutton1,'string','Multiplicar')
% Ajuste de la propiedad String para los botones Edit Text
set(handles.edit1,'string','0')
set(handles.edit2,'string','0')
set(handles.edit3,'string','0')

Se deja al usuario el ejercicio de explicarse los ajustes de propiedades que se


realizan al seleccionar el radio botn Multiplicacin.

Programacin del radio botn Divisin


A continuacin se muestra la copia del segmento del archivo punto eme de Matlab
correspondiente a la funcin callback para el radio botn Divisin. Se deja al usuario
37

Melanio A. Coronado H.

el ejercicio de explicarse los ajustes de propiedades que se realizan al seleccionar el


radio botn Divisin.
function divi_Callback(hObject, eventdata, handles)
% hObject handle to divi (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of divi
% Activacin del radio botn divisin y desactivacin de los otros
set(handles.multi,'value',0)
set(handles.suma,'value',0)
set(handles.resta,'value',0)
set(handles.divi,'value',1)
set(handles.poten,'value',0)
set(handles.radi,'value',0)
% Ajuste de la propiedad String para los botones Static Text y Push Button
set(handles.text2,'string','Dividendo')
set(handles.text3,'string','Divisor')
set(handles.text4,'string','Cociente')
set(handles.pushbutton1,'string','Dividir')
% Ajuste de la propiedad String para los botones Edit Text
set(handles.edit1,'string','0')
set(handles.edit2,'string','0')
set(handles.edit3,'string','0')

Programacin del radio botn Potenciacin


A continuacin se muestra la copia del segmento del archivo punto eme de Matlab
correspondiente a la funcin callback para el radio botn Potenciacin. Se deja al
usuario el ejercicio de explicarse los ajustes de propiedades que se realizan al
seleccionar el radio botn Potenciacin.
function poten_Callback(hObject, eventdata, handles)
% hObject handle to poten (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of poten
% Activacin del radio botn potenciacin y desactivacin de los otros
set(handles.multi,'value',0)
set(handles.suma,'value',0)
set(handles.resta,'value',0)
set(handles.divi,'value',0)
set(handles.poten,'value',1)
set(handles.radi,'value',0)
% Ajuste de la propiedad String para los botones Static Text y Push Button
38

Melanio A. Coronado H.

set(handles.text2,'string','Base')
set(handles.text3,'string','Exponente')
set(handles.text4,'string','Resultado')
set(handles.pushbutton1,'string','Potenciacin')
% Ajuste de la propiedad String para los botones Edit Text
set(handles.edit1,'string','0')
set(handles.edit2,'string','0')
set(handles.edit3,'string','0')

Programacin del radio botn Radicacin


A continuacin se muestra la copia del segmento del archivo punto eme de Matlab
correspondiente a la funcin callback para el radio botn Radicacin. Se deja al
usuario el ejercicio de explicarse los ajustes de propiedades que se realizan al
seleccionar el radio botn Radicacin.
function radi_Callback(hObject, eventdata, handles)
% hObject handle to radi (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radi
% Activacin del radio botn radicacin y desactivacin de los otros
set(handles.multi,'value',0)
set(handles.suma,'value',0)
set(handles.resta,'value',0)
set(handles.divi,'value',0)
set(handles.poten,'value',0)
set(handles.radi,'value',1)
% Ajuste de la propiedad String para los botones Static Text y Push Button
set(handles.text2,'string','Radicando')
set(handles.text3,'string','Raz')
set(handles.text4,'string','Resultado')
set(handles.pushbutton1,'string','Radicacin')
% Ajuste de la propiedad String para los botones Edit Text
set(handles.edit1,'string','0')
set(handles.edit2,'string','0')
set(handles.edit3,'string','0')

Programacin del botn de presin pushbutton1


A continuacin se muestra la copia del segmento del archivo punto eme de Matlab
correspondiente a la funcin callback para el botn de presin cuyo Tag es
pushbutton1. Se observa que dentro de la funcin se desarrolla un lazo de control de
39

Melanio A. Coronado H.

informacin ifelseifend para cuando se elija uno de los radio botones para
desarrollar una de las operaciones incluidas en la interfaz.
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)
if get(handles.suma,'value') == 1
% Si se seleccciona el radio botn suma
h = str2double(get(handles.edit1,'string')) + str2double(get(handles.edit2,'string'));
set(handles.edit3,'string',num2str(h))
elseif get(handles.resta,'value') == 1
% Pero si se seleccciona el radio botn resta
h = str2double(get(handles.edit1,'string')) - str2double(get(handles.edit2,'string'));
set(handles.edit3,'string',num2str(h))
elseif get(handles.multi,'value') == 1
% Pero si se seleccciona el radio botn multiplicacin
h = str2double(get(handles.edit1,'string')) * str2double(get(handles.edit2,'string'));
set(handles.edit3,'string',num2str(h))
elseif get(handles.divi,'value') == 1
% Pero si se seleccciona el radio botn divisin
h = str2double(get(handles.edit1,'string')) / str2double(get(handles.edit2,'string'));
set(handles.edit3,'string',num2str(h))
elseif get(handles.poten,'value') == 1
% Pero si se seleccciona el radio botn potenciacin
h = str2double(get(handles.edit1,'string')) ^ (str2double(get(handles.edit2,'string')));
set(handles.edit3,'string',num2str(h))
elseif get(handles.radi,'value') == 1
% Pero si se seleccciona el radio botn radicacin
h = str2double(get(handles.edit1,'string')) ^ (1/(str2double(get(handles.edit2,'string'))));
set(handles.edit3,'string',num2str(h))
end

El lazo de control comienza con la orden condicional


if get(handles.suma,'value') == 1.

40

Melanio A. Coronado H.

Lo anterior se entiende como que primero captura (comando get) el valor de la


propiedad Value del radio botn suma y si encuentra que es exactamente igual a 1
(es decir, activado) se realice la siguiente orden.
% Si se seleccciona el radio botn suma
h = str2double(get(handles.edit1,'string')) + str2double(get(handles.edit2,'string'));

Con la orden anterior se suman los valores de las propiedades String digitadas sobre los
botones de edicin de texto edit1 y edit2 y capturadas con el comando get. Los valores
capturados de naturaleza string requieren convertirse en valores numricos para poderse
sumar, dicha conversin se realiza utilizando el comando str2double. Con esto el valor que
se le ha asignado a h se convierte a uno de naturaleza numrica.
Para mostrar el resultado en el botn de edicin de texto edit3, se hace necesario convertir
el valor numrico calculado para h a un valor de naturaleza string para poder ajustar con el
comando set la propiedad String de dicho control. Todo lo anterior se hace con la orden:

set(handles.edit3,'string',num2str(h))

Los otros condicionales realizan rdenes similares a la anterior pero para cada una
de las otras operaciones aritmticas incluidas dentro de la interfaz. Se sugiere al
usuario analizar cada uno de dichos condicionales y tener en cuenta que el lazo de
control condicional se debe cerrar con la palabra clave end.

3.4 . EJECUCIN DEL GUI final.fig


Para la ejecucin de una interfaz ya elaborada como el final.fig se puede hacer por
varias rutas a saber:
1. Abriendo el archivo final.fig se despliega directamente la interfaz o GUI
correspondiente.
2. Abriendo el entorno de desarrollo o GUIDE se sigue la ruta para localizar el
GUI correspondiente de tal manera que al seleccionarla se despliega el GUI
en el entorno de desarrollo o GUIDE. Se presiona, entonces, el icono Run
Figure que se encuentra dentro de la barra de herramientas para desplegar el
GUI correspondiente
3. Abriendo el archivo final.m se despliega el editor de comandos de Matlab con
el archivo seleccionado y entonces, se presiona el icono Run Figure que se
41

Melanio A. Coronado H.

encuentra dentro de la barra de herramientas para desplegar el GUI


correspondiente.

Al desplegar la interfaz de la calculadora elaborada anteriormente siguiendo


cualquiera de las rutas anteriores se observa con las activaciones y asignaciones en
los controles de acuerdo a las fijaciones iniciales de sus propiedades, es decir como
se observa en la Figura 3.4.

Figura 3.4. Interfaz Calculadora con la presentacin inicial

En la Figura 3.5 se muestra la Calculadora con las operaciones Resta y


Multiplicacin seleccionadas. En cada uno de los casos se observa que el nico radio
botn activo es el seleccionado, los botones Static Text muestran leyendas de
acuerdo a la operacin seleccionada al igual que el botn Push Button. Los
resultados son correctos tanto para la resta como para la multiplicacin.

Figura 3.5. Calculadora Operacin Resta


42

Melanio A. Coronado H.

Leccin 4. COMPORTAMIENTO DE UN GUI


4.1. INTRODUCCIN
Despus de abrir un nuevo GUI, pero antes de aadirle componentes, se deben
definir algunos aspectos relacionados con su comportamiento, como las dimensiones
del GUI y el acceso y generacin de los archivos FIG-File y M-File. Las opciones
para la definicin del comportamiento de un GUI estn disponibles en el cuadro de
dilogo GUI Options que se muestra en la Figura 4.1

Figura 4.1. Cuadro de dilogo GUI Options

4.2. APERTURA DEL CUADRO DE DILOGO GUI Options


Para la fijacin del comportamiento de un GUI valindose del cuadro de dilogo
GUI Options se procede en el siguiente orden:
1. Se abre la ventana figura del GUI, seleccionando la opcin en blanco que se
encuentra por defecto al abrir el GUIDE.
2. Se despliega el men Tools de la barra de herramientas del editor del GUI,
y se selecciona la opcin GUI Options. Se despliega el cuadro que muestra
la Figura 4.1

4.3. OPCIONES DEL COMPORTAMIENTO DE UN GUI


El cuadro de dilogo GUI Options permite la seleccin o definicin de algunas
opciones relacionadas con el comportamiento y elaboracin del GUI.
43

Melanio A. Coronado H.

Resize behavior: en este cuadro desplegable se selecciona la opcin de


fijar el tamao del GUI o la de permitir que sea redimensionalbe.
Command line accesibility: en este cuadro desplegable se selecciona la
opcin de accesar al GUI desde la lnea de comandos de Matlab.
Generate FIG file and MATLAB file: la seleccin de este radio botn
define la opcin de generar tanto el archivo punto fig como el archivo
punto eme. Esta opcin es la seleccionada por defecto,
Generate FIG file only: la activacin de este radio botn define la opcin
de generar solamente el archivo punto fig.
Otras opciones: tres cuadros de verificacin permiten al usuario la
definicin de algunos aspectos adicionales sobre el comportamiento del
GUI.

4.3.1. DIMENSIONAMIENTO DEL GUI (Resize Behavior)


Mediante la definicin de este comportamiento se controla si el usuario puede redimensionar la ventana figura del GUI y el cmo maneja MATLAB el redimensionamiento. GUIDE facilita tres opciones:
Non-resizable: Los usuarios no pueden cambiar el tamao de la ventana
de la interfaz.
Proporcional: MATLAB automticamente cambia el tamao de los
componentes en el GUI, proporcionalmente al tamao de la nueva ventana
figura.
Other (Use ResizeFcn): Programa al GUI para que se comporte en una
forma determinada cuando el usuario re-dimensiona la figura

Las dos primeras opciones, simplemente, ajustan las propiedades de la figura


apropiadamente y no requieren alguna otra accin. A continuacin se describe cada
una de las opciones y el usuario debe verificar en el Inspector de Propiedades los
cambios que se operan con cada una de ellas

44

Melanio A. Coronado H.

Comportamiento No-Redimensionable (Non-resizable)


Esta opcin hace que la ventana del GUI no sea re-dimensionable. Por ejemplo, los
cuadros de dilogo para pregunta, interjeccin, mensajes de error no son redimensionables, porque una vez que el usuario interacta con ellos no la necesita, lo
que justifica el que no sea re-dimensionable. Al seleccionar esta opcin, GUIDE
ajusta las siguientes propiedades para hacer que el GUI no sea re-dimensionable.
Propiedad Units: esta propiedad se ajusta al valor characters para la
configuracin del GUI, el control Axes y todos los otros uicontroles.
Con esta propiedad el GUI se despliega con el tamao correcto en
diferentes computadores.
Propiedad Resize: esta propiedad se ajusta a off
Propiedad ResizeFcn: esta propiedad se deja en blanco

Se sugiere al usuario abrir la ventana del inspector de propiedades del GUIDE


y verifique la asignacin de los valores a las anteriores propiedades.

Comportamiento Dimensin Proporcional (Proportional)


Esta opcin permite a los usuarios re-dimensionar el GUI de tal manera que,
adems, se escalen los componentes en cuanto a tamao y posicin en relacin con
el nuevo tamao de la figura. Se debe tener en cuenta que no se cambia el tamao de
letra de las leyendas de los componentes y, an ms, si el tamao del componente se
reduce considerablemente, estas leyendas no se alcanzan a leer. Este
comportamiento trabaja bien con herramientas simples de un GUI y en cajas de
dilogos que hacen ajustes sin cerrarlos.
Al seleccionar esta opcin, GUIDE ajusta las siguientes propiedades que hacen que
el GUI se re-dimensione proporcionalmente:
Units: esta propiedad se ajusta al valor characters para la figura del
GUI, de tal manera que esta se despliega con el tamao correcto en el
momento de ejecutarse, en base a algunos cambios en el tamao de letra
Resize: esta propiedad se ajusta a on

45

Melanio A. Coronado H.

ResizeFcn: esta propiedad se deja en blanco


Units: esta propiedad se ajusta al valor normalized para el control
Axes y todos los otros uicontroles. Con lo anterior, estos componentes
se re-dimensionan y re-localizan con el re-dimensionamiento de la figura

Opcin especificada por el usuario (Other (Use ResizeFcn))


Se pueden crear varias interfaces (GUIs) que acomoden su tamao y que al mismo
tiempo mantengan la apariencia y utilidad de su diseo original mediante la
programacin de una rutina callback para la figura denominada ResizeFcn. Esta
rutina permite el re-clculo del tamao y la posicin de cada componente en base al
nuevo tamao de la figura. Se utiliza ms generalmente en aplicaciones que
requieren interaccin con el usuario cuando est trabajando con el GUI. Tal
aplicacin podra contener axes para desplegar datos y varios componentes cuyas
posiciones y tamaos son crticos para el uso exitoso de la interface. Al seleccionar
esta opcin, GUIDE ajusta las siguientes propiedades que hacen que el GUI se redimensione de acuerdo a la rutina ResizeFcn:
Resize: esta propiedad se ajusta a on
ResizeFcn: esta propiedad, para la figura requiere de una rutina callback
para manejar el re-dimensionamiento
Units: esta propiedad se ajusta al valor characters para la figura del
GUI, el control Axes y todos los otros uicontroles. Con esta propiedad
el GUI se despliega con el tamao correcto en el momento de su
ejecucin.

4.3.2. ACCESO DESDE LA LINEA DE COMANDOS (Command-Line


Acceessibility)
Se puede restringir el acceso al manejo de la figura del GUI desde la lnea de
comando con la opcin Command-Line Accessibility. Esto previene a los usuarios
del cambio no advertido en la apariencia del GUI mediante la entrada de comandos,
tales como plot que alteran la figura normal. La opcin por defecto es Callback
(GUI becomes Current Figure within Callbacks) y con ella, el GUI puede,
solamente, convertirse en la figura normal de MATLAB mediante el comando gcf
mientras se ejecuta un callback.
46

Melanio A. Coronado H.

Pueden darse ocasiones en que se quiere un manejo de la figura del GUI que sea
accesible desde la lnea de comandos. Por ejemplo, se podra requerir que el GUI
despliegue grficos creados en la lnea de comandos. Para este caso, se debera
seleccionar la opcin On(GUI may become Current Figure from Command Line).
Hay cuatro opciones para el acceso desde la lnea de comandos que son:
Callback (GUI becomes Current Figure within Callbacks)
Off (GUI never becomes Current Figure)
On (GUI may become Current Figure from Command Line)
Other (Use settings from Property Inspector)

Propiedades de la figura que controlan acceso


Se tienen dos propiedades en la figura que controlan el acceso a ella desde la lnea
de comandos que son:
HandleVisibility: Esta propiedad determina si el manejo de la figura es
visible a comandos que intenten accesar la figura normal.
IntegerHandle: Esta propiedad determina si un manejo de la figura es un
nmero entero o de punto flotante.

Figura 4.2. Propiedades HandleVisibility e IntegerHandle del GUI.


47

Melanio A. Coronado H.

HandleVisibility - Callback. Al ajustar la propiedad HandleVisibility a


Callback se causa que las estructuras (handles) sean visibles desde el interior de
las rutinas callback o funciones invocadas mediante las rutinas callbacks, pero no
desde dentro de funciones invocadas desde la lnea de comandos. Esto constituye
una forma de proteger a los GUIs desde la lnea de comando de los usuarios
mientras se permite que las rutinas callbacks tengan completo acceso a la estructura
de los objetos. Se debe utilizar esta opcin si el GUI contiene Axes.
HandleVisibility - Off. Al ajustar la propiedad HandleVisibility a Off se
remueve la estructura de la figura de la lista raz de objetos hijos de tal manera que
no se convertir en la figura normal (que es el objeto para salidas grficas). La
estructura se mantiene como vlida, sin embargo, hasta que un comando que
especifique que la estructura, explcitamente, todava trabaja (por ejemplo
close(1). Sin embargo, no se pueden utilizar comandos que operen solamente
sobre la figura normal o axes. Estos comandos incluyen a xlabel, ylabel,
zlabel, title, gca, gcf y findobj
HandleVisibility-On.
Las
estructuras
HandleVisibility se ajusta a On.

son

siempre

visibles

cuando

IntegerHandle. Al ajustar la propiedad IntegerHandle a Off se causa que


Matlab asigne estructuras con nmeros reales no reutilizables (por ejemplo,
67.0001221) en vez de enteros. Esto reduce considerablemente la posibilidad de
algn accidente en el desempeo de una operacin en la figura.
El uso del findobj. Al ajustar el comportamiento Command-Line Accessibility
al valor Off la estructura de la figura del GUI se mantiene escondida. Esto
significa que no se puede utilizar findobj para localizar las estructuras de los
uicontroles en el GUI. Como alternativa, el archivo GUI M-File crea una estructura
handle que contiene las estructuras de cada control en el GUI y pasa esta
estructura a subfunciones. La siguiente tabla muestra un resumen de cmo cada una
de las cuatros opciones del comportamiento Command-Line Accessibility ajustan
las propiedades HandleVisibility e IntegerHandle en el Inspector de
Propiedades.

Opcin

HandleVisibility

IntegerHandle

Callback

Callback

Off

Off

Off

Off

On

On

On

Other

User specifies

User specifies
48

Melanio A. Coronado H.

4.3.3. GENERACIN DE ARCHIVOS FIG-File y M-File


Se selecciona Generate FIG-File and M-File en el cuadro de dilogo GUI
Options si se quiere que el GUIDE cree tanto el archivo FIG-File como el archivo
M-File (opcin por defecto). Despus de seleccionada esta opcin, se puede escoger
cualquiera de las siguientes opciones incluidas dentro del marco para configurar el
archivo M-File:
Generate callback function prototypes
GUI allows only one instance to run (singleton)
Use system color scheme for background (recommended)

Opcin Generate callback function prototypes


Al seleccionar la opcin Generate callback function prototypes en el cuadro de
dilogo GUI Options, GUIDE aade una subfuncin al GUI M-File para
cualquier componente que se aada en el GUI (se observa que los controles panel,
Axes y Static Text no utilizan su propiedad callback y, por lo tanto, no tienen
subfuncin). Se debe, entonces, escribir el cdigo para el callback en esta
subfuncin.
GUIDE tambin aade una subfuncin mediante la edicin de una rutina callback
elaborada desde el editor de GUI. Para lo anterior se hace clic derecho del mouse
sobre el editor del GUI para desplegar el men contextual observado en la Figura
4.3 y seleccionar la opcin callback. Se despliega, entonces, otro men contextual
con un conjunto de opciones para la edicin de funciones.
Cuando se aaden mens utilizando el editor de mens GUIDE tambin aade una
subfuncin donde el usuario debe programar las acciones a desarrollarse al
ejecutarse cada uno de los mens.

Nombres de las Subfunciones callback


Cuando se aade un componente en el GUI, GUIDE asigna un valor a su propiedad
Tag que se utiliza para generar el nombre del callback. Por ejemplo, el primer
push button que se aade es nombrado como pushbutton1. Cuando se genera el
archivo M-File, GUIDE aade una subfuncin callback denominada
49

Melanio A. Coronado H.

pushbutton1_Callback. Si se define un Button-DownFcn para el mismo botn,


GUIDE llama a su subfuncin como pushbutton1_ButtonDownFcn.

Figura 4.3 Despliegue de subfunciones desde el GUI.

Sintaxis de una funcin Callback


La sintaxis de la funcin callback requiere de tres argumentos y se escribe en la
siguiente forma:

function objectTag_Callback(hObject, eventdata, handles)

El argumento hObject es la estructura del objeto cuyo callback se est ejecutando.


El argumento eventdata se establece como vaco y es reservado para un uso futuro.
El argumento handles es una estructura que contiene las estructuras de todos los
componentes en el GUI cuyos nombres de campos son definidos mediante la
propiedad Tag del objeto. Puede tambin, utilizarse para pasar datos a otras
funciones callback o la lnea de comandos.
Por ejemplo, si se instala un botn push button cuya propiedad Tag se ajusta a
pushbutton1, entonces GUIDE genera la siguiente subfuncin en el archivo GUI
M-File encabezada con el siguiente nombre:

50

Melanio A. Coronado H.

function pushbutton1_Callback(hObject, eventdata, handles)

Propiedad String de una funcin Callback


Cuando se aade un componente al GUI, su propiedad Callback es ajustada al
valor % automatic. Este valor seala al GUIDE que reemplace el nombre de la
funcin callback en el archivo GUI M-File cuando guarde o ejecute el GUI. Por
ejemplo, GUIDE ajusta la propiedad Callback para el uicontrol pushbutton1 a
my_gui(pushbutton1_Callback, gcbo, [], guidata(gcbo))
donde,
my_gui, el nombre del archive GUI M-File
pushbutton1_Callback es el nombre de la subfuncin rutina callback
definida en my_gui
gcbo es un comando que regresa la estructura del objeto callback (por
ejemplo, pushbutton1)
[ ] es un lugar reservado para el argumento eventdata, normalmente sin
usar
guidata(gcbo) regresa la estructura handles

Opcin GUI allows only one instance to run (singleton)


Esta opcin permite que se seleccione uno de dos comportamientos en la figura del
GUI en cuanto al despliegue de sus ventanas y que son:
Permite a Matlab que despliegue solamente una ventana del GUI
Permite a Matlab que despliegue varias ventanas del GUI

Si se permite solamente una ventana, Matlab reutiliza la figura del GUI existente
cuando se aplica el comando para ejecutar el GUI. Si ya existe un GUI, Matlab lo
hace desplegar en el frente en vez de crear una nueva figura. Si se deja en claro esta

51

Melanio A. Coronado H.

opcin, Matlab crea una nueva figura GUI cada vez que se aplica el comando para
ejecutarla.

Opcin Use system color scheme for background (recommended)


El color utilizado para los componentes del GUI vara en sistemas de computadores
diferentes. Esta opcin habilita para hacer que el color del fondo de la figura del
GUI sea el mismo que el color por defecto del fondo del uicontrol, que depende del
sistema.
Si se selecciona la opcin Use system color scheme for background
(recommended), GUIDE cambia el color de fondo de la figura del GUI para
resaltar el color de los componentes del GUI. La Figura 4.4 ilustra los resultados con
y sin diferenciacin en el color del sistema:

Figura 4.4. Opcin Use system color scheme for background

Generacin de archivos M-File solamente


Se selecciona Generate FIG-File only en el cuadro de dilogo GUI Options si
no se quiere que GUIDE genere el archivo M-File. Cuando se guarda el GUI desde
el editor, GUIDE crea un archivo FIG-File que se puede redesplegar utilizando el
comando open

52

Melanio A. Coronado H.

Cuando se selecciona esta opcin, se debe ajustar la propiedad callback de cada


componente en el GUI a un valor de caracteres que Matlab puede evaluar y
desarrollar la accin deseada. Este valor puede ser una expresin o el nombre de un
archivo M-File. Seleccione esta opcin si se quiere utilizar un estilo de
programacin completamente diferente que la suministrada por el archivo GUI MFile.

4.4. CONFIGURACIN Y COMPORTAMIENTO DE UN GUI


La interfaz grfica (Archivo Leccion3.fig) que se observa en la Figura 4.5 se
utilizar en la siguiente leccin y se ha configurado para solucionar una ecuacin
diferencial ordinaria de primer orden con una variable de entrada y una variable de
salida, escrita en trminos de variables desviacin y para el caso especfico de que a
la variable de entrada se le aplique un cambio paso.

Figura 4.5 GUI. Sistema Lineal de Primer Orden.

La forma de la ecuacin diferencial ordinaria que soluciona el GUI mostrado en la


Figura 4.5 es:
53

Melanio A. Coronado H.

dY (t )
Y (t ) KX (t )
dt

Siendo X (t ) la variable desviacin de entrada, Y (t ) la variable desviacin de salida, K la


ganancia del sistema y la constante de tiempo del sistema. En el siguiente captulo se
elabora una programacin del GUI para que resuelva numricamente la ecuacin
diferencial y muestre en forma grfica la solucin en el botn Axes durante un tiempo
fijado en el botn Edit Text localizado a la derecha del botn Static Text denominado
Simulacin: Tiempo

4.4.1 CONFIGURACIN DEL GUI


Se instalan cinco botones Edit Text con los cuales se capturen los parmetros
dinmicos del sistema, es decir, la constante de tiempo, la ganancia, y los
parmetros especficos de la simulacin como el cambio paso en la variable de
entrada, la condicin inicial de la variable de salida y el tiempo. Adems, se instala
un botn Axes donde desplegar en forma grfica la respuesta del sistema para los
valores de los parmetros asignados, un botn Push Button que al presionarlo se
ejecute la solucin de la ecuacin diferencial y seis botones Static Text para
titular la interfaz y cada uno de los parmetros que se capturen en los botones Edit
Text.

Componentes Static Text


1. Instalacin: Instale seis botones Static Text distribuidos como se observan
en la Figura 4.5, y despliegue el inspector de propiedades para las
correspondientes asignaciones.
2. Propiedad String: Asgneles los nombres observados en la figura.
3. Propiedad BackgroundColor: Despliegue el rbol que corresponde a esta
propiedad y asigne el valor 0.941 a los colores red, green y blue.
4. Propiedad ForegroundColor: Es el color de las letras observado en cada
uno de ellos. El superior es rojo y los otros color negro
5. Propiedad FontSize: Es el tamao de las letras observado en cada uno de
ellos. El superior es tamao 14 y los otros tamao 10
6. Propiedad HorizontalAlignment: Es la alineacin horizontal del ttulo en
cada uno de ellos. El botn superior se ajusta al valor center (centrado),
54

Melanio A. Coronado H.

mientras que los localizados a la izquierda se ajustan al valor left (a la


izquierda).
7. Propiedad FontWeight: Es el estilo de letras del ttulo en cada uno de
ellos. despliegan lineas de texto. La propiedad FontWeight, de los botones
static text se ajusta al valor bold para mostrar sus leyendas en negrita.
8. Propiedad Position: Es la asignacin de la posicin (abscisa y ordenada)
del botn en el GUI y las dimensiones (ancho y alto). Utilcela para ajustar
los botones colocados a la izquierda con el mismo ancho y alto.
9. Alineacin: Seleccione todos los botones Static Text instalados para
alinearlos sobre una misma lnea a la izquierda. A continuacin presione el
icono Align Objects incluido en la barra de herramientas y seleccione en
el marco Horizontal la opcin deseada como se observa en la Figura 4.6.
Presione el botn OK.

Figura 4.6 Alineacin horizontal

Componentes Edit Text


1. Instalacin: Instale cinco botones Edit Text distribuidos como se observan en
la Figura 4.5, y despliegue el inspector de propiedades para la correspondiente
asignacin.

55

Melanio A. Coronado H.

2. Propiedad String: Asgneles el valor cero a cada uno de ellos como se


observa en la Figura 4.5.
3. Propiedad HorizontalAlignment: Ajstela al valor right (derecha) para
cada uno de ellos.
4. Propiedad Tag: Asigne los siguientes nombres tau_edit1 al de la
constante de tiempo, K_edit2 al de la ganancia, X_edit3 al de la entrada,
Yo_edit4 al de la salida y t_sim_edit5 al de simulacin. Observe las
propiedades Callback y CreateFcn en el inspector de propiedades donde se
nota la asignacin del nombre a cada una de las funciones correspondientes para
cada uno de los botones Edit Text.
5. Archivo M-File: Despliegue el archivo M-File presionando el icono
correspondiente localizado en la barra de herramientas y verifique que han sido
incluidas dos funciones para cada uno de los botones con los nombres de, por
ejemplo, tau_edit1_CreateFcn y tau_edit1_Callback.
6. Propiedad Position: Haga un ajuste manual de su localizacin y tamao
como se observa en la Figura 4.5. Utilice el inspector de propiedades de cada uno
de los botones Edit Text para asignarle la misma altura de los botones Static
Text.

Componente Axes
1. Instale un botn Axes con la localizacin y el tamao ajustados manualmente
como se observa en la Figura 4.5. Este componente se deja ajustado a las
propiedades asignadas por defecto.

Componente Push Button (Plot)


1. Instalacin: Instale un botn Push Button como se observa en la Figura 3.5, y
despliegue el inspector de propiedades para la correspondiente asignacin.
2. Propiedad String: Introduzca la palabra Plot como se observa en la figura
3. Propiedad HorizontalAlignment: Ajstela al valor center (centro).
4. Propiedad Tag: Asigne el nombre plot_pushbutton1. Observe en el
inspector de propiedades Callback el nombre a la funcin correspondiente

56

Melanio A. Coronado H.

5. Archivo M-File: Despliegue el archivo M-File presionando el icono


correspondiente localizado en la barra de herramientas y verifique que ha sido
incluida la funcin plot_pushbutton1_Callback.

Componente Push Button (Reset)


Agregue otro push button y siga el mismo procedimiento aplicado al primero de
dichos botones pero definiendo las propiedades String y Tag con reset y
reset_pushbutton2, respectivamente.

4.4.2. COMPORTAMIENTO DEL GUI


A continuacin se muestran algunas de las opciones explicadas anteriormente, en
esta leccin, para fijar el comportamiento de ciertos aspectos del GUI.

Dimensionamiento del GUI


1. Despliegue el men Tools, seleccione la opcin GUI Options y observe
que en la ventana desplegada, el comportamiento del GUI con respecto a sus
dimensiones (Resize Behavior) es, por defecto, la de no redimensionamiento
(Non rezisable). (Ver Figura 4.1).
2. Despliegue la ventana inspector de propiedades del GUI y observe las
asignaciones fijadas: Propiedad Units characters, Propiedad Resize off y
Propiedad ResizeFcn en blanco.
3. Ejecute el GUI elaborado y observe en la parte superior derecha que el botn
Maximizar se encuentra inactivo. Esto no permite que el usuario pueda
manipular el tamao de la ventana interfaz. (Ver Figura 4.7)

Inactivo

Figura 4.7. Interfaz no redimensionable


57

Melanio A. Coronado H.

4. Cierre la interfaz desplegada al ejecutar el archivo punto fig y nuevamente


despliegue el men Tools (ahora haga clic derecho sobre algn lugar del
GUI), seleccione la opcin GUI Options y ahora escoja que el
comportamiento del GUI con respecto a su tamao (Resize Behavior) sea
redimensionable. (Proportional). (Ver Figura 4.8).

Figura 4.8. Interfaz de comportamiento redimensionable


5. Despliegue la ventana inspector de propiedades del GUI y observe las
asignaciones fijadas: Propiedad Units characters, Propiedad Resize on y
Propiedad ResizeFcn en blanco.
6. Ejecute el GUI elaborado y observe en la parte superior derecha que el botn
Maximizar se encuentra activo. Esto permite que el usuario pueda manipular
el tamao de la ventana interfaz. (Ver Figura 4.9)

Activo

Figura 4.9. Interfaz con el botn Maximizar activo

Al acercar el puntero del mouse sobre cualquiera de los cuatro bordes de la


interfaz, cambia su forma a una pequea linea con una saeta en cada uno de
58

Melanio A. Coronado H.

sus extremos y si de manera sostenida se presiona el mouse se amplia o se


reduce el tamao de la interfaz segn la direccin del desplazamiento que se
realice del mismo.

Generacin de archivos de extensin punto eme y punto fig


Para un programador de nivel principiante, se sugiere la seleccin de la opcin
Generate FIG-File and M-File en el cuadro de dilogo GUI Options para que
el GUIDE cree tanto el archivo FIG-File como el archivo M-File (opcin por
defecto). Despus de seleccionada esta opcin, se puede escoger cualquiera de las
opciones incluidas dentro del cuadro de dilogo para configurar el archivo M-File.

4.4.3. ORDEN DE TABULACIN DE LOS CONTROLES EN EL GUI


En el GUIDE de Matlab se despliega una barra de herramientas (Figura 4.10) que
incluye, por defecto, un conjunto de atajos con los cuales se realizan algunas
ejecuciones importantes para el comportamiento y programacin del GUI. Adems
de los usuales como New Figure (Abrir nueva figura), Open Figure (Abrir figura
elaborada), Save Figure (Guardar figura elaborada), Cut (Cortar), Copy (Copiar),
Paste (Pegar), Undo (Deshacer) y, Redo (Rehacer) se incluyen otros especficos
como Align Objects (Alineacin de objetos), Menu Editor (Editor de mens), Tab
Order Editor (Editor del orden de tabulacin de los objetos), Toolbar Editor (Editor
de barras de herramientas), M-File Editor (Editor de archivos de extensin punto
eme), Property Inspector (Inspector de Propiedades), Object Browser (Mostrador de
objetos) y Run Figure (Corrida de la figura).

Tab Order Editor

Object Browser

Figura 4.10. Barra de herramientas del GUIDE

Herramienta Tab Order Editor


Con el editor del orden de tabulacin de los controles (Tab Order Editor) se define
el orden en que se seleccionan los botones al ejecutar el interfaz mediante la presin
de la tecla Tab (Tabulacin). Esto puede considerarse como parte del
comportamiento del GUI definido despus de elaborado el GUIDE.
59

Melanio A. Coronado H.

1. En el GUIDE elaborado de acuerdo a la Figura 4.5 presione el atajo Tab


Order Editor. Se despliega una pequea ventana como la mostrada en la
Figura 4.11.

Figura 4.11. Editor del orden de tabulacin de los botones del GUI
Del orden observado en el editor en el editor se deduce que el botn que aparece,
por defecto, seleccionado al abrir el GUI es el botn que aparece con la leyenda
Plot, que al presionar la tecla Tab se selecciona a continuacin el botn de edicin
de la constante de tiempo y as sucesivamente.

2. Seleccione la opcin uicontrol (plot_pushbutton1 Plot) y observe que se ha


activado la flecha dirigida hacia abajo que aparece debajo de la barra de ttulo
3. Presione dicha flecha tantas veces hasta hacer descender dicha opcin hasta
antes del ltimo uicontrol (reset_pushbutton2 Reset) (Observe la Figura
4.12)

Figura 4.12. Editor del orden de tabulacin de los bloques del GUI
60

Melanio A. Coronado H.

Con el orden anterior se entiende que al presionar la tecla Tab el botn


seleccionado, por defecto, es el de edicin de texto para asignar el valor a la
constante de tiempo, que al presionar la tecla Tab se selecciona el botn de
edicin de texto para asignar el valor de la ganancia del sistema, con una
nueva presin de la tecla Tab se selecciona el botn de edicin de texto para
asignar el valor del cambio paso en la variable de entrada y as
sucesivamente.
4. Haga correr el GUI y presione la tecla Tab. Se observa que el botn
seleccionado es el de edicin de texto para la asignacin del valor de la
constante de tiempo. (Ver Figura 4.13)

Figura 4.13. Interfaz con orden tabulado de los botones


5. Presione la tecla Tab para observar que la seleccin de los botones es en el
orden colocado en el editor de orden de tabulacin (Tab Order Editor).

Herramienta Object Browser


Mediante el mostrador de los objetos (Object Browser) se despliega una ventana que
muestra la lista de los botones instalados en el GUIDE como la observada en la
Figura 4.14 incluyendo la figura o GUI.
Se utiliza la palabra uicontrol para la denominacin de los controles, se especifica el
tipo de botn, las propiedades Tag y String de cada uno de ellos y se muestra el
conjunto de botones como las ramas de un rbol que es la figura que constituye el
GUI.
61

Melanio A. Coronado H.

Para el GUI elaborado para la solucin de la ecuacin diferencial anterior el


despliegue del mostrador de objetos muestra la siguiente figura:

Figura 4.14. Mostrario de objetos en un GUI

4.4.4. Men Tools


Dentro de la barra de mens se encuentra el denominado Tools que incluye, dentro
de sus opciones, algunas de las herramientas mencionadas anteriormente y adiciona
la que se llama Grid and Rulers (Ver Figura 4.15)

Figura 4.15. Men Tools

62

Melanio A. Coronado H.

Herramienta Grid and Rulers (Cuadrcula y Reglas)


Mediante la herramienta Grid and Rulers se definen aspectos del comportamiento
del GUI como la inclusin de la cuadrcula y el tamao de los cuadros y de reglas
numeradas que sirven de gua para el posicionamiento y el tamao de los controles.
Al seleccionar la opcin Grid and Rulers se despliega un pequeo cuadro como el
que se muestra en la Figura 4.16.

Figura 4.16. Herramienta Grid and Rulers

Se observa en la Figura 4.16 que, en los primeros tres cuadros de verificacin se


selecciona o se anula la presencia de reglas numeradas (en direccin vertical y
horizontal), guias de trazado de objetos y del entorno cuadriculado. El botn
desplegable con nombre Grid Size (in Pixels) permite la definicin del tamao en
pixeles de los rectngulos de la cuadrcula. Con las verificaciones mostradas en la
Figura 4.16, el GUI se observa como se muestra en la Figura 4.17.
Regla Numerada

GUIDE sin cuadrcula

Figura 4.17. GUI con reglas y sin cuadrcula


63

Melanio A. Coronado H.

Como el cuadro de verificacin Show Rulers se encuentra seleccionado se muestran


las reglas numeradas tanto en direccin vertical como horizontal y como el cuadro
Show grid no se ha seleccionado, entonces, el GUIDE se observa sin cuadrcula. El
tamao de los cuadros es de 50 pixeles. Se sugiere al usuario desplegar el botn y
comprobar el cambio de tamao de los cuadros para valores menores y mayores que
50 pixeles.

4.4.5. Men File Opcin Preferences


Dentro de la barra de mens se encuentra el denominado File que incluye la opcin
Preferences dentro de la cual se pueden definir algunos aspectos sobre el
comportamiento del GUIDE (Ver Figura 4.18).

Figura 4.18. Aspectos preferenciales en un GUIDE

Los cuadros verificados dentro de las preferencias hacen que el GUIDE se observe
como lo muestra la Figura 4.19.

Figura 4.19. GUIDE modificado


64

Melanio A. Coronado H.

Leccin 5. CREACIN DE FUNCIONES EN UN GUI


5.1.

INTRODUCCIN

Despus de elaborada la distribucin de los botones en la interfaz se contina con la


programacin de las acciones que se requiere que realice cada uno de ellos. Antes de
empezar a codificar los callbacks de cada uno de los controles es necesario, en
algunos casos, la creacin de funciones que definan o ejecuten un conjunto de
acciones y que se han de invocar en los cdigos de programacin de algunos de los
otros bloques instalados en el GUI. Por ejemplo, la interfaz elaborada en la leccin
anterior para la solucin de una ecuacin diferencial requiere de la codificacin en el
archivo de extensin punto eme de una funcin donde se defina la ecuacin
diferencial con sus variables y sus parmetros y pueda invocarse dicha funcin
dentro del cdigo de programacin de los otros bloques que lo demanden.
Como en este caso la solucin de la ecuacin diferencial se realiza mediante un
mtodo numrico para un determinado tiempo, se incluye dentro del GUIDE un
botn Axes para que dentro del marco que el encierra se despliegue el grfico que
represente la respuesta de la funcin.

5.2.

ECUACIN DIFERENCIAL DE PRIMER ORDEN

Una ecuacin diferencial lineal de primer orden con una variable de entrada y una
variable de salida se escribe, para anlisis dinmico, en la siguiente forma:

dY (t )
Y (t ) KX (t )
dt

Siendo X (t ) la variable desviacin de entrada, Y (t ) la variable desviacin de salida,


K la ganancia del sistema y la constante de tiempo del sistema. Entendiendo el
significado de variable desviacin, se sabe que el valor inicial de tanto la variable de
entrada como de la variable de salida es cero
Para un cambio paso h en la variable de entrada, la solucin analtica de la anterior
ecuacin diferencial es una funcin exponencial de la forma:

t
Y (t ) Kh 1 exp

65

Melanio A. Coronado H.

Un grfico de Y(t) en funcin del tiempo muestra un perfil exponencial creciente


estable como el que muestra la Figura 5.1:

Figura 5.1. Respuesta paso de un sistema lineal de primer orden

El tiempo requerido para que la respuesta alcance el valor ltimo depende de los
valores de los parmetros asignados en la ecuacin diferencial, es decir, de la
magnitud del cambio paso en la variable de entrada y de los valores de la constante
de tiempo y de la ganancia

5.3.

GUI: SOLUCIN DE UNA ECUACIN DIFERENCIAL

La interfaz elaborada en la leccin anterior para la solucin de una ecuacin


diferencial lineal de primer orden con una variable de entrada y una variable de
salida se observar finalmente como lo muestra la Figura 5.2.

Figura 5.2. GUI - Solucin de una ecuacin diferencial lineal de primer orden SISO
66

Melanio A. Coronado H.

En los cinco botones Edit Text el usuario digita los parmetros dinmicos del
sistema, es decir, la constante de tiempo, la ganancia, y los parmetros especficos
de la simulacin como el cambio paso en la variable de entrada, la condicin inicial
de la variable de salida y el tiempo de la solucin. Hecho lo anterior, y presionando
el botn Plot se despliega la respuesta grfica correspondiente a la solucin de la
ecuacin diferencial.
Si se desea realizar otro ejercicio, se presiona el botn Reset con lo cual se borran
los valores anteriormente digitados en los botones Edit Text y el usuario puede,
entonces, digitar los nuevos valores para los parmetros y observar la nueva
solucin grfica despus de presionar el botn Plot.

5.4.

PROGRAMACIN DEL GUI: Archivo Leccion3.m

Para la solucin de la ecuacin diferencial lineal de primer orden con una variable
de entrada y una variable de salida se hace necesario la captura de los parmetros
incluidos en la expresin matemtica, la elaboracin de una funcin donde se defina
la ecuacin diferencial y el desarrollo del procedimiento numrico que muestre al
usuario la respuesta grfica resultante. El cdigo mostrado a continuacin es la
funcin que define a la ecuacin diferencial planteada:

Funcin definicin de la ecuacin diferencial


En la Figura 5.3 se muestra el segmento del programa Leccion3.m donde se inserta
la funcin diferencial que define la ecuacin diferencial lineal de primer orden para
solucionarla haciendo un cambio paso en la variable de entrada X. La variable de
salida es y, los smbolos K y tau representan a la ganancia y al atraso dinmico del
sistema, respectivamente. Los smbolos ts e Inicio son el tiempo para la solucin de
la ecuacin diferencial y el valor inicial de la variable de salida, respectivamente.

Sintaxis de una funcin


Primero se declara la funcin con la palabra clave function, se utiliza un smbolo
(dy) que represente la solucin de la ecuacin diferencial, se iguala a un nombre
(R_paso) y se escriben seguidamente las variables incluidas dentro de la funcin (t,
y). El nombre de la funcin es R_paso.
Se recomienda globalizar los parmetros requeridos para desarrollar la solucin de
la ecuacin diferencial con el objeto de que los parmetros sean reconocidos en
cualquier localizacin en donde se abra el archivo. Para ellos se escribe la palabra
67

Melanio A. Coronado H.

clave global y a continuacin se escriben los smbolos de los parmetros incluidos


dentro de la escritura de la ecuacin diferencial definida en la funcin
correspondiente.

Figura 5.3. Sintaxis de la funcin R_paso para resolver una ecuacin diferencial

Programacin de los botones Static Text


En la interfaz construida, los botones Static Text no necesitan de cdigo porque su
funcin es, solamente, el despliegue del ttulo especificado dentro de su propiedad
String. Segn sea la accin que se realiza en cada uno de los otros botones, en los
callbacks correspondientes se deben incluir las rdenes para el cambio de la
propiedad String en los botones Static Text.

Programacin de los botones Edit Text


Los botones Edit Text incluidos en el GUI de la Figura 5.2 son los componentes
en donde el usuario introduce los datos requeridos para la solucin de la ecuacin
diferencial. Estos datos deben capturarse mediante rdenes incluidas dentro de la
programacin codificada en el archivo M-File de Matlab para su utilizacin. Al
instalar un botn Edit Text dentro de un GUI, Matlab aade dos funciones, la una
es el Callback y la otra la denomina CreateFcn. Para el caso del botn de edicin de
texto cuya propiedad Tag se le asign como nombre tau_edit1 las funciones
correspondientes aparecen, en el archivo de extensin punto eme, con los nombres
tau_edit1_CreateFcn y tau_edit1_Callback.

68

Melanio A. Coronado H.

Function tau_edit1_CreateFcn
El cdigo de esta funcin es creada, por defecto, por Matlab dentro del archivo de
extensin punto eme. En la Figura 5.4 se muestra el segmento de dicho archivo,
correspondiente a las rdenes incluidas dentro de la funcin tau_edit1_CreateFcn

Figura 5.4. Funcin tau_edit1_CreateFcn


Con la palabra clave ispc se verifica si el Matlab se encuentra instalado en un
computador personal (PC) con sistema operativo Windows. Con el ciclo de control
ifelseend se ajusta la propiedad Background del botn, segn que sea
verdad o falso que el Matlab se encuentra instalado en un computador personal. Si
es verdadero, con la orden set(hObject, BackgroundColor, white), se ajusta la
propiedad Background del botn a white (blanco), En caso contrario, con la
orden set(hObject, BackgroundColor, get(0, defaultUicontrolBackgroundColor))
se captura el valor que se le asigna por defecto al botn y se ajusta dicha propiedad
al valor capturado.
1. Dentro de la funcin tau_edit1_CreateFcn, cambie el valor white, por otro
valor como yellow, black, blue, cyan, green, etc. Haga correr la simulacin
del GUI y verifique que el fondo del botn muestra el color especificado en el
cdigo

Function tau_edit1_Callback
En esta funcin se codifica la captura del valor introducido por el usuario en la
propiedad String del botn denominado tau_edit1_Callback. Para ello se
introduce las siguientes sentencias mostradas en la Figura 5.5.
69

Melanio A. Coronado H.

Figura 5.5. Funcin tau_edit1_Callback


En la sentencia nmero 118, el comando str2double convierte la propiedad
String introducida como character a un valor numrico de doble precisin. En
este caso, dicha propiedad es previamente capturada con la palabra clave get. El
valor convertido se almacena con el nombre de tau.
Con la palabra clave isnan se verifica si el valor tau no es nmero. Con el ciclo
de control ifelseend se definen las acciones segn que sea verdadero o falso
que tau no es nmero. . Si se verifica que no es nmero, la orden del rengln 121
ajusta la propiedad String del botn al valor cero y despliega un cuadro de
dilogo con un mensaje de error con la leyenda y el ttulo especificados como
argumentos del comando errordlg
2. Haga correr la simulacin del GUI y digite en el botn de edicin de texto
tau_edit1 un valor no numrico como la letra a y presione la tecla de
tabulacin Tab para trasladar el cursor al siguiente botn de edicin de texto.
Debe observar el despliegue de un cuadro de dilogo de error como el
mostrado en la Figura 5.6.

Figura 5.6. Cuadro de dilogo de mensaje de error


70

Melanio A. Coronado H.

Cuadro de dilogo de error


En medio de la ejecucin de un GUI se hace necesario, en muchas situaciones, el
despliegue de mensajes que se entienden como un dilogo entre la interfaz y el
usuario. Estos mensajes se observan en pequeas cajas con estructuras definidas en
cada caso y que suelen llamarse Cuadros de dilogo. Entre otros, se tienen los
cuadros de dilogo para transmitir un mensaje de error o un mensaje de advertencia
o un mensaje de una interrogacin, etc.
En el cdigo escrito para el botn de edicin de texto tau_edit1 se escribe la orden
122 con el cual se hace desplegar un cuadro de dilogo de error en el evento en que
el usuario digite dentro del botn un valor no numrico. La sintaxis para el
despliegue de un cuadro de dilogo de error es la siguiente:
errordlg(Mensaje, Ttulo)

La palabra clave es errordlg y los argumentos son: el primero es el mensaje que se


leer en el cuadro de dilogo y el segundo es la leyenda que aparecer en la barra de
ttulo correspondiente del cuadro de dilogo. Observe que Matlab en un cuadro de
dilogo de error coloca, por defecto, un crculo de color rojo con una X blanca y un
botn de presin con la leyenda OK que al oprimirlo, en este caso, se ejecuta la
eliminacin de la caja de dilogo
3. Dentro de la orden errordlg, cambie el primer argumento por el mensaje El
valor debe ser un nmero. Haga correr la simulacin del GUI y,
nuevamente, digite un valor no numrico dentro del botn de edicin de texto
tau_edit1. Observe los cambios en la leyenda y en el ttulo mostrados por la
caja de dilogo de error
4. Dentro del callback de cada uno de los restantes botones Edit Text
K_edit2, X_edit3, Yo_edit4 y t_sim_edit5, introduzca un cdigo similar al
anterior para la captura y verificacin del valor introducido en cada uno de
ellos. Tenga en cuenta que debe asignar un smbolo al valor capturado; se
sugiere que sea el mismo colocado en la propiedad Tag.

Componentes Push Button


Estos componentes son los que permiten ejecutar operaciones, configuraciones o
eventos de manera inmediata mediante un clic. Para el GUI creado en esta leccin se

71

Melanio A. Coronado H.

dispone de dos de estos componentes: uno llamado Plot (pushbutton1) y el otro


llamado Reset (pushbutton2).
Al presionar el botn llamado Plot se desarrolla el cdigo para la solucin paso de
una ecuacin diferencial de un sistema lineal de primer orden partiendo de los
parmetros introducidos por el usuario y se muestran los resultados obtenidos con la
anterior solucin en forma grfica dentro del componente Axes de la interfaz.
Al presionar el botn llamado Reset se reestablecen todos los valores de los
componentes de la interfaz, que han sido modificados por el usuario, a su valor
inicial (cero). Esto con el fin de facilitar el proceso de introduccin de parmetros
por parte del usuario y generar una nueva solucin si se desea.

Function plot_pushbutton1_Callback
En esta funcin se escribe el cdigo que contiene las rdenes para capturar los datos
ingresados por el usuario para la solucin de la ecuacin diferencial, obtener los
resultados numricos de dicha solucin, graficar dichos datos y desplegar dicho
grfico en el botn Axes. La Figura 5.7 muestra el segmento del programa de
extensin punto eme donde se incluy la sintaxis para las ejecuciones anteriores.

Figura 5.7. Funcin plot_pushbutton1_Callback


72

Melanio A. Coronado H.

La sentencia nmero 90 define las variables que pueden utilizarse entre distintas
funciones. Es decir, que en una funcin donde se incluya una sentencia global
para un conjunto de variables como por ejemplo tau, K, estas podrn utilizarse
y emplear sus valores sin necesidad de definir dichas variables nuevamente.
Seguidamente se capturan y transforman los valores introducidos por el usuario en
los botones de edicin de texto (sentencias 94 98). Con la sentencia 102 se
resuelve la ecuacin diferencial con el comando ode45 y se grafica su resultado
con las leyendas para el ttulo y los ejes (sentencias 103 - 106). Por ltimo, al final
de la codificacin se define en la sentencia 110 el elemento (en este caso, el
elemento axes1) donde se desea mostrar la respuesta de la simulacin.

Function reset_pushbutton2_Callback
En esta funcin se escribe el cdigo que contiene las rdenes para borrar el grfico
desplegado dentro del botn axes, borrar todos los valores digitados en los botones
de edicin y ajustar dichos valores a cero. La Figura 5.8 muestra el segmento del
archivo de extensin punto que incluye la codificacin de la funcin
reseet_pushbutton2_Callback

Figura 5.8. Funcin reset_pushbutton2_Callback

Sentencia cla reset


En la sentencia nmero 288 la palabra clave cla seguida de la palabra reset (cla
reset) ejecuta el borrado de todos los objetos grficos mostrados dentro de un botn
axes independientemente del ajuste de la propiedad HandleVisibility y reajusta todas
las propiedades del axes a sus valores por defecto, exceptuando la propiedad
Position y la propiedad Units.
73

Melanio A. Coronado H.

Las sentencias 290 294 ajustan la propiedad String de cada uno de los botones de
edicin al valor cero (0).
Con toda la anterior programacin se han completado las rdenes necesarias para
ejecutar la solucin de la ecuacin diferencial y mostrar los resultados grficos
obtenidos.

5.5. EJECUCIN DEL GUI


Con la terminacin del GUI, se puede proceder a su ejecucin y a la verificacin del
funcionamiento y comportamiento de la misma:
5. Haga correr el archivo de extensin punto eme de Matlab para desplegar el
GUI elaborado para la solucin de una ecuacin diferencial lineal de primer
orden SISO.
6. Asigne una constante de tiempo de 5 minutos, una ganancia de 2, un cambio
paso unitario en la variable de entrada, un valor de cero para la condicin
inicial de la variable de salida y un tiempo de simulacin de 35 minutos.
7. Presione el botn Plot y espere el despliegue de la respuesta monotnica
estable que se obtiene como resultado grfico de la solucin de la ecuacin
diferencial. Observe la Figura 5.9.

Figura 5.9. Ejecucion del GUI.

Observe que el botn de Maximizar el tamao de la interfaz est activo


porque esta propiedad se defini con el valor Proportional que permite el
aumento o la disminucin del tamao de la interfaz junto con el de los
bloques
74

Melanio A. Coronado H.

8. Cambie el valor de la constante de tiempo a 20 minutos y cambie el tiempo


de simulacin a 120 minutos.
9. Presione nuevamente el botn Plot. Observe el resultado grfico mostrado en
la Figura 5.10 donde se verifica el aumento en el tiempo de solucin y el
aumento del tiempo en que se alcanza el valor de la respuesta ltima.

Figura 5.10. Ejecucin del GUI para los nuevos valores

10. Presione el botn Reset y observe en la Figura 5.11 que se ha borrado la


grfica desplegada en el botn axes y tambin se han borrado los valores
asignados en los botones de edicin para los parmetros requeridos para la
solucin de la ecuacin diferencial.

Figura 5.11. GUI a distintos tamaos.


75

Melanio A. Coronado H.

Observe que el botn Reset es de color azul porque ha sido seleccionado y


con ello se ha ejecutado el cdigo que borra los datos introducidos y el
grfico desplegado dentro del GUI.

5.6. ASIGNACIN
Se deja como asignacin para el estudiante, el hacer los cambios en los tamaos de
los bloques y los tamaos de las letras en cada uno de los bloques de tal manera que
al aumentar el tamao de la interfaz la visin de ella se pueda leer con ms nitidez
que la observada con la elaboracin siguiendo esta leccin.

76

Melanio A. Coronado H.

Leccin 6. CONTROLES CHECH BOX y AXES


6.1. INTRODUCCIN.
En esta leccin se elabora un GUI para la solucin de una ecuacin diferencial lineal
SISO permitiendo al usuario que mediante la seleccin de uno de tres radio botones
pueda mostrar soluciones grficas para cambios paso, rampa o seno en su variable
de entrada. Por defecto se muestra el botn de edicin para introducir el valor del
cambio paso en la variable de entrada y el botn de edicin para la frecuencia de un
cambio seno en la variable de entrada.
Adicionalmente, se incluyen dos botones de verificacin (check box) con los cuales
el usuario puede seleccionar si desea que se desplieguen las respuestas sin tiempo
muerto o con tiempo muerto, ya sea una de ellas o ambas.
Se utilizan dos botones axes destinados el uno (axes3) para desplegar una imagen
que es simplemente la escritura del tipo de ecuacin diferencial escrita en Word y
guardada como una imagen en Paint y el otro axes1 se utiliza para desplegar dentro
de l las respuestas grficas obtenidas como solucin de la ecuacin diferencial.
Con tres botones de presin se ejecutan las acciones para resolver la ecuacin
diferencial y graficar su solucin, reiniciar la interfaz para su reutilizacin y cancelar
la interfaz.
La Figura 6.1 muestra el GUI elaborado dentro del GUIDE y cuya construccin y
programacin se explica en esta leccin.

Figura 6.1. Interfaz grfica de usuario


77

Melanio A. Coronado H.

6.2. ECUACIN DIFERENCIAL LINEAL DE PRIMER ORDEN SISO


Un sistema lineal de primer orden con una variable de entrada x(t ) y una variable
salida y(t ) se modela matemticamente con una ecuacin que en funcin de
parmetros de significado dinmico se escribe en la siguiente forma:

dy(t )
y(t ) Kx(t )
dt

(6.1)

La constante K recibe la denominacin de ganancia en estado estacionario del


sistema, puesto que representa la relacin entre la variable de salida y(t) y la variable
de entrada x(t) para t . La constante , que tiene dimensin de tiempo, se llama
constante de tiempo del sistema y representa un atraso dinmico.
La ecuacin 6.1 se escribe, usualmente, en trminos de las variables desviacin con
respecto a sus valores en el estado inicial, es decir en la forma estndar para anlisis
dinmico o de sistemas de control:

dY (t )
Y (t ) KX (t )
dt

(6.2)

Y (t ) y(t ) y(0)
X (t ) x(t ) x(0)

Siendo,

La ecuacin (6.2) es una ecuacin diferencial lineal a la cual se le puede hallar la


solucin mediante un factor integrante, que para este caso es igual a
exp dt / exp t / . Es frecuente, en anlisis dinmico de sistemas, transformar

la ecuacin 6.2 segn la definicin de Laplace. El resultado se agrupa de tal manera


que se exprese la relacin entre la variable desviacin de salida y la variable
desviacin de entrada en funcin de s, lo que suele llamarse la Funcin de
transferencia. La funcin de transferencia que corresponde a una ecuacin
diferencial lineal de primer orden SISO como la 6.2 se escribe en su forma estndar
de la siguiente forma:

G( s)

Y ( s)
K

X ( s) s 1

(6.3)

78

Melanio A. Coronado H.

Se desarrollan a continuacin las respuestas de un sistema diferencial lineal de


primer orden a cambios en la entrada que presentan especial inters en las
aplicaciones como son las respuesta paso, rampa y seno.

Respuesta paso de un sistema lineal de primer orden


Al considerar que en la ecuacin diferencial (6.2), la variable de entrada es
perturbada con un cambio paso constante, es decir que X (t ) h , entonces se puede
escribir que:

dY (t )
Y (t ) Kh
dt

(6.4)

1 Kh
s s 1

(6.5)

Y (s)

La inversa de la transformada de Laplace dada por (6.5) da como solucin la


siguiente respuesta paso para Y(t):

t
Y (t ) Kh 1 exp

(6.6)

Una representacin grfica de la ecuacin (6.6) se muestra en la Figura 6.2.

Figura 6.2. Respuesta paso de un sistema lineal de primer orden


79

Melanio A. Coronado H.

La Figura 6.2 muestra, grficamente, el perfil de la respuesta paso de un sistema


lineal de primer orden. Se puede observar un comportamiento monotnico estable
que alcanza un valor ltimo igual a K veces el cambio paso aplicado a la variable de
entrada y a partir de un tiempo considerado, aproximadamente, cinco veces el valor
de la constante de tiempo del sistema.

Respuesta rampa de un sistema lineal de primer orden


Al considerar que en la ecuacin diferencial (6.2), la variable de entrada es
perturbada con un cambio rampa, es decir que X (t ) rt , entonces se puede escribir
que:

dY (t )
Y (t ) Krt
dt

Y ( s)

1 Kr
s ss 1

(6.7)

(6.8)

La inversa de la transformada de Laplace dada por (6.8) da como solucin la


siguiente respuesta rampa para Y(t):

t
Y (t ) Kr exp t

(6.9)

Una representacin grfica de la ecuacin (6.9) se muestra en la Figura 6.3. Se


puede observar un comportamiento lineal y paralelo a la rampa de entrada despus
de un determinado tiempo, que aproximadamente es cinco veces la constante de
tiempo.

Respuesta seno de un sistema lineal de primer orden


Al considerar que en la ecuacin diferencial (6.2), la variable de entrada es
perturbada con un cambio seno, es decir que X (t ) ASen (wt ) , entonces se puede
escribir que:
80

Melanio A. Coronado H.

Figura 6.3. Respuesta rampa de un sistema lineal de primer orden

dY (t )
Y (t ) KASen ( wt )
dt

(6.10)

KAw
s 1s 2 w2

(6.11)

Y (s)

La inversa de la transformada de Laplace dada por (6.11) da como solucin la


siguiente respuesta para Y(t):

Y (t )

Siendo,

KAw
KA
t
exp
Senwt
2
2
1 w

1 w

(6.12)

tan 1 (w )

La Figura 6.4 muestra el perfil grfico de la respuesta seno de un sistema lineal de


primer orden. Se observa una corta regin inicial con una ligera inflexin que se
explica por la influencia del trmino exponencial en la expresin (6.8). Cuando este
primer trmino exponencial es de un valor despreciable, la respuesta muestra un
perfil definidamente sinusoidal que se distingue por las siguientes caractersticas:
Su frecuencia es igual a la del seno de entrada

81

Melanio A. Coronado H.

Su amplitud es el coeficiente del trmino sinusoidal y, por lo tanto, se calcula


con la ecuacin
Arespuesta

KA
1 ( w ) 2

Se observa que el valor de la amplitud depende de la frecuencia de la funcin


sinusoidal de entrada, adems de los parmetros dinmicos del sistema.
Es atrasada con respecto a la funcin seno de entrada, lo que se mide
mediante un ngulo fase que tambin es un valor que depende de la
frecuencia del seno de entrada.

Figura 6.4. Respuesta seno de un sistema lineal de primer orden

Tiempo Muerto
El tiempo muerto es un atraso adicional al dinmico, que se observa en la respuesta
de un sistema y que se atribuye al tiempo que se requiere para transportar el efecto
de la perturbacin del sistema hasta puntos localizados a una cierta distancia. En el
dominio de Laplace este atraso se observa en la inclusin de un trmino exponencial
en la funcin de transferencia. Para sistemas SISO de primer y segundo orden lineal,
las funciones de transferencia con tiempo muerto corresponden a las siguientes
ecuaciones
82

Melanio A. Coronado H.

Primer Orden:

Ke sto
Y ( s)
X (s)
s 1

Segundo Orden:

Ke sto
Y (s) 2 2
X ( s)
s 2s 1

Las respuestas grficas muestran claramente el atraso en la respuesta del sistema


cuando se observa un tiempo muerto. La Figura 6.5 muestra las respuestas sin y con
tiempo muerto para un sistema de primer orden ante una perturbacin paso en la
variable de entrada

Figura 6.5. Respuesta paso de un sistema de primer orden con tiempo muerto

En forma similar, se pueden observar las respuestas con tiempo muerto para otras
perturbaciones y para sistemas de orden dos o mayor

6.3. CONFIGURACIN DEL GUI


A continuacin se describe la elaboracin de una interfaz grfica que facilite, al
usuario de Matlab, la solucin grfica de una ecuacin diferencial lineal de primer
orden SISO mediante la introduccin de los parmetros dinmicos y las condiciones
iniciales de un sistema, el tipo de perturbacin en la variable de entrada con sus
correspondientes especificaciones y la verificacin de la consideracin de un tiempo
83

Melanio A. Coronado H.

muerto en el transporte dinmico. Para ello se instalan en el GUIDE un conjunto de


elementos (o controles) que o muestran leyendas (Static Text) o capturen datos (Edit
Text) o seleccionan procedimientos (Radio Button, Check Box) o ejecutan
procedimientos (Push Button) o despliegan imgenes o grficos (Axes)

Instalacin de los controles en la interfaz de usuario GUI:


Una vez iniciado GUIDE, en el rea de diseo se instalan los diferentes controles y
se observa una interfaz con la configuracin que muestra la Figura 6.1. Para todos
los controles se deja la propiedad Tag con sus asignaciones por defecto. Al archivo
se le asigna el nombre LPORDENSISO.
1. Controles Axes: Se instalan dos controles de esta clase para desplegar
imgenes. En el axes3 se despliega una imagen elaborada en Paint de la
ecuacin diferencial de primer orden lineal y en el axes1 se despliega la
respuesta grfica a la solucin solicitada por el usuario. El cdigo para el
axes3 se incluye de tal manera que la imagen se observe al desplegarse la
interfaz para su ejecucin.

2. Controles Radio Button: Se instalan tres controles de esta clase para


seleccionar el tipo de cambio en la variable de entrada que se quiere aplicar a
la ecuacin diferencial. Se asignan las propiedades String con las leyendas
que se observan en la Figura 6.1, es decir, Paso, Rampa y Seno.

Propiedad Value de los radio botones


La propiedad Value de un radio botn es de tipo binario (valor uno o cero)
que cuando el botn es seleccionado toma el valor de uno, en caso contrario
es cero. El propsito de los radio botones es la seleccin de una opcin entre
ellos de tal manera que la escogencia de uno de ellos excluye a la opcin de
seleccionar a alguno de los otros radio botones.
Con el objeto de que al desplegar el GUI el radio botn Paso aparezca
seleccionado por defecto, se le asigna el valor de uno a la propiedad Value
en la configuracin inicial y a los otros dos radio botones se asigna el valor
de cero, lo que hace que al iniciarse el GUI los radio botones Rampa y Seno
no se observen seleccionados.

84

Melanio A. Coronado H.

3. Controles Static Text: Se instalan ocho controles de esta clase para anexar
leyendas a los botones (Edit Text) donde se introducen datos requeridos para
la solucin de la ecuacin diferencial. Se asignan las propiedades String
con las leyendas que se observan en la Figura 6.1, es decir, Constante de
Tiempo, Ganancia Estacionaria, Condicin Inicial, Tiempo Inicial,
Tiempo Final, Cambio Paso, Frecuencia, Tiempo Muerto.

Propiedad Visible de los botones de texto esttico


La propiedad Visible de un botn de texto esttico es de tipo binario (valor off
- on), de tal manera que cuando se le asigna a la propiedad el valor off el
botn no es visible y cuando se le asigna a la propiedad el valor on el botn
es visible.
Con el objeto de que al desplegar el GUI los botones Frecuencia y
Tiempo Muerto no sean visibles, la propiedad Visible de ellos se ajusta al
valor off. La propiedad Visible para los otros botones Static Text se deja en su
valor por defecto, es decir, on. Esto quiere decir que al desplegarse la
interfaz, los botones Frecuencia y Tiempo Muerto no se observan; el primero
se nota cuando se seleccione el radio botn Seno y el segundo se despliega
cuando se seleccione el botn de verificacin Con Tiempo Muerto.
Adems, el cdigo elaborado hace que cuando se seleccione el Radio Button
denominado Rampa, la propiedad String del botn de texto esttico
Cambio Paso cambie al valor Pendiente y cuando se seleccione el
Radio Button denominado Seno, la propiedad String del botn de texto
esttico Cambio Paso cambie al valor Amplitud

4. Controles Check Box: Se instalan dos controles de verificacin para


especificar si se quiere que la respuesta se desarrolle y se muestre con o sin
tiempo muerto. Se asignan las propiedades String con las leyendas Sin
Tiempo Muerto y Con Tiempo Muerto

Propiedad Value de los botones de verificacin


La propiedad Value de un radio botn es de tipo binario (valor uno o cero)
que cuando el botn es seleccionado toma el valor de uno, en caso contrario
es cero. El propsito de los botones de verificacin es el permitir al usuario la
seleccin de cualquiera de las opciones entre el conjunto de opciones que
constituyen los botones de verificacin. Es usual dejar, por defecto, los
85

Melanio A. Coronado H.

botones de verificacin no seleccionados y manejar su escogencia a travs de


la programacin del GUI.

5. Controles Edit Text: Se instalan ocho controles de esta clase para que el
usuario introduzca los parmetros requeridos para la solucin de la ecuacin
diferencial (constante de tiempo, ganancia, condicin inicial, tiempo inicial,
tiempo final, cambio paso, frecuencia, y tiempo muerto). Se asigna a todos
ellos la propiedad String con un valor de cero.
La propiedad Visible de los botones donde se editan la frecuencia y el
tiempo muerto se ajustan al valor off y se hacen visibles cuando se
seleccionan el Radio Button Seno y el Check Box Tiempo Muerto,
respectivamente.

6. Controles Push Button: Se instalan tres botones de presin para ejecutar,


reiniciar o cerrar el GUI. A las propiedades String se le asignan los
nombres Resolver, Reiniciar y Cerrar.
Al presionar el botn Resolver se resuelve la ecuacin diferencial y se
despliega la respuesta grafica en el control axes1. Al presionar el botn
Reiniciar todos los controles toman los valores iniciales asignados por
defecto. Al presionar el botn Cerrar se cierra la ventana de la interfaz
despus de confirmar la pregunta desplegada en una caja de dilogo.

7. Controles Panel: Se instalan cuatro botones de esta clase para encerrar los
botones en cuadros separados para observarlos agrupados dentro de un
marco.
A cada uno de los paneles instalados se le asigna la propiedad String con el
nombre de Parmetros, Perturbacin, Entradas y Respuesta,
respectivamente. La propiedad ForegroundColor se ajusta a color rojo y la
propiedad TitlePosition (posicin del nombre del ttulo) a centertop
(centro arriba)

Para modificar los controles anteriores como aparecen en la Figura 6.1 solo se debe
hacer doble click sobre cada control y en la ventana Property Inspector buscar las
propiedades Background color, Fontsize y Fontweight para cambiar el
color, el tamao y el estilo (negrita), respectivamente, de la letra.

86

Melanio A. Coronado H.

Se deja como ejercicio para el usuario la seleccin de las anteriores propiedades para
la figura y los paneles instalados en el GUI.

Corrida del GUI


Concluida la instalacin y distribucin de los componentes del GUI se puede correr
con el objeto de verificar que los controles se despliegan como se explica cuando se
inicia el GUI (Ver Figura 6.6).

Figura 6.6. GUI al inicio de su corrida

Terminada la configuracin del GUI se puede proceder a la elaboracin del cdigo


de programacin para el funcionamiento de la interfaz. Para ello presione el botn
M-File Editor de la barra de herramientas para acceder al editor de MatLab para su
construccin

6.4.

PROGRAMACIN DEL GUI

Ecuaciones diferenciales
Las ecuaciones diferenciales se transforman en el dominio de Laplace, es decir, se
plantean sus funciones de transferencia y se le aplican las operaciones requeridas
para obtener la respuesta mediante la aplicacin de un cambio paso.

87

Melanio A. Coronado H.

Imagen de una ecuacin diferencial lineal de primer orden SISO


En este ejercicio se construy una imagen con la ecuacin diferencial de primer
orden lineal SISO de la siguiente manera:
Se digita la ecuacin con el editor de Microsoft Office en un archivo de Word, se
toma una imagen de la pantalla y se copia en la misma pgina. Se hace un recorte de
tal manera que el archivo de imagen se reduzca a la sola ecuacin y se pega dentro
de la pgina de trabajo de Paint.
Se guarda el archivo con extensin jpg y nombre ecuacin en la misma carpeta
donde se encuentra guardado el archivo punto eme donde se programa la ejecucin
de la interfaz grfica de usuario.
A continuacin se digita el siguiente cdigo (Figura 6.7) dentro de la funcin de
apertura (Opening) del GUI para que en su despliegue inicial se observe la
ecuacin diferencial de primer orden que se quiere resolver en este programa y que
se puede observar en la Figura 6.6 en la parte superior derecha.

Figura 6.7. Funcin LPORDENSISO_OpeningFcn

En el rengln 57, mediante la orden axes(handles.axes3) se selecciona el control


axes donde se despliega la imagen correspondiente a la ecuacin diferencial. En el
siguiente rengln 58, la palabra clave imread copia la imagen correspondiente al
archivo ecuacion.jpg que debe archivarse dentro de la misma carpeta en que se
encuentra el archivo LPORDENSISO con el nombre de im. En el rengln 59, con el
comando axis off, se inactiva la numeracin de los ejes del axes y mediante la
palabra clave imshow se muestra la imagen que se quiere, es decir, im (rengln 60).
88

Melanio A. Coronado H.

Radio botn Paso (radiobutton1)


El cdigo que se muestra a continuacin (Figura 6.8) se cumple cuando se
selecciona el radio botn Paso (radiobutton1).

Figura 6.8. Funcin radiobutton1_Callback


Se deduce de los renglones 400 y 401 que se inactivan los otros dos radio botones
(Propiedad Value igual a cero) denominados Rampa y Seno, se observa
(rengln 403) que el control edit text edit6 (Propiedad Visible con valor on) que
es el cuadro donde se digita el valor del cambio paso, se mantienen invisibles
(Propiedad Visible con valor off) los controles edit text text8 y edit7 (renglones
404 y 405) y se ajusta la propiedad String del control edit text text7 al valor
Cambio Paso.

Figura 6.9. Funcin radiobutton3_Callback


89

Melanio A. Coronado H.

Radio botn Cambio Rampa (radiobutton3)


El cdigo que se muestra en la Figura 6.9 se cumple cuando se selecciona el radio
botn Rampa (radiobutton3).
Es similar al anterior, se inactivan los radio botones Paso y Seno (renglones
434 y 435) y se ajusta la propiedad String del botn edit text text7 al valor
Pendiente

Radio botn Seno (radiobutton2)


El cdigo que se muestra en la Figura 6.10 se cumple cuando se selecciona el radio
buton Seno (radiobutton2)

Figura 6.10. Funcin radiobutton2_Callback


En este caso, se inactivan los radio botones Paso y Rampa (rengln 418 y 419);
la propiedad String del boton edit text text7 se ajusta con el valor Amplitud
(rengln 420) y se hacen visible los botones edit7, text8 y edit6 con los
valores por defecto de su propiedad String (0, Frecuencia y 0,
respectivamente).

Botn de verificacin Con Tiempo Muerto (chechbox2)


El siguiente cdigo, mostrado en la Figura 6.11, es el procedimiento que se
desarrolla cuando se verifica el cuadro denominado Con Tiempo Muerto
(checkbox2)
90

Melanio A. Coronado H.

Figura 6.11. Funcin checkbox2_Callback


La primera parte del lazo hace que si se verifica el cuadro de checkbox2
denominado Con Tiempo Muerto (rengln 336) sean visibles los controles
text9 y edit8 (renglones 337 y 338). Lo anterior, se logra mediante el ajuste de
la propiedad Visible a un valor on. En el primero se despliegue la leyenda
Tiempo Muerto y en el segundo se introduce el valor del mismo. En caso
contrario, es decir, si se desactiva el botn checkbox2, no se observan dichos
controles y la propiedad String del control edit8 se ajusta a cero (0).

Botn Push Button Resolver (pushbutton1)


El siguiente cdigo es el procedimiento que se desarrolla cuando se presiona el
botn denominado Resolver. Se convierten los parmetros a carcter numrico y
se resuelve la ecuacin diferencial para cada uno de los casos que incluye el diseo
de la interfaz. Los resultados se muestran grficamente en el axes1

function pushbutton1_Callback(hObject, eventdata, handles)


global K tau X w tspan Inicio a b den h h1 to
% Captura de Parmetros para la solucin de la ecuacin diferencial
tau = str2double(get(handles.edit1, 'String'));
K = str2double(get(handles.edit5, 'String'));
Inicio = str2double(get(handles.edit3, 'String'));
tspan(2) = str2double(get(handles.edit4, 'String'));
tspan(1) = str2double(get(handles.edit2, 'String'));
% Seleccin del axes1 para la graficacin de las respuestas

91

Melanio A. Coronado H.

axes(handles.axes1)
% Seleccin del tipo de cambio paso en la variable de entrada
if (get(handles.radiobutton1, 'Value') == 1)
X = str2double(get(handles.edit6, 'String'));
% Seleccin del Tiempo Muerto
if (get(handles.checkbox1, 'Value') == 1) & (get(handles.checkbox2, 'Value') == 0)
cla;

% Borra las grficas desplegadas en el axes1

h = tf([K*X], [tau 1]);


[y, t] = step(h, tspan(2));
plot(t, y, 'k');
xlabel('Tiempo', 'FontSize', 12);
ylabel('Respuesta', 'FontSize', 12);
title({'Sistema lineal primer orden SISO'; 'Respuesta Paso'}, 'Fontsize', 14);
elseif (get(handles.checkbox2, 'Value') == 1) & (get(handles.checkbox1, 'Value') == 0)
cla;
to = str2double(get(handles.edit8, 'String'));
h = tf([K*X], [tau 1], 'inputdelay', to);
[y1, t] = step(h, tspan(2));
plot(t, y1, 'r')
xlabel('Tiempo', 'FontSize', 12);
ylabel('Respuesta', 'FontSize', 12);
title({'Sistema lineal primer orden SISO'; 'Respuesta Paso'}, 'Fontsize', 14);
elseif (get(handles.checkbox1, 'Value') == 1) & (get(handles.checkbox2, 'Value') == 1)
cla;
h = tf([K*X], [tau 1]);
[y, t] = step(h, tspan(2));
plot(t, y, 'k');
hold on
to = str2double(get(handles.edit8, 'String'));
h = tf([K*X], [tau 1], 'inputdelay', to);
[y1, t] = step(h, tspan(2));
plot(t, y1, 'r');
xlabel('Tiempo', 'FontSize', 12);
ylabel('Respuesta', 'FontSize', 12);
title({'Sistema lineal primer orden SISO'; 'Respuesta Paso'}, 'Fontsize', 14);
legend('Respuesta sin tiempo muerto', 'Respuesta con tiempo muerto', 4);
end
end
% Seleccin del tipo de cambio rampa en la variable de entrada
if (get(handles.radiobutton3, 'Value') == 1)
r = str2double(get(handles.edit6, 'String'));
if (get(handles.checkbox1, 'Value') == 1) & (get(handles.checkbox2, 'Value') == 0)
cla;
h = tf([K*r], [tau 1 0]);
92

Melanio A. Coronado H.

[y, t] = step(h, tspan(2));


plot(t, r*t, 'r', t, y/K, 'k')
xlabel('Tiempo', 'FontSize', 12);
ylabel('Respuesta', 'FontSize', 12);
title({'Sistema lineal primer orden SISO'; 'Respuesta Rampa'}, 'Fontsize', 14);
legend('Variable de Entrada', 'Variable de Salida', 4);
elseif (get(handles.checkbox2, 'Value') == 1) & (get(handles.checkbox1, 'Value') == 0)
cla;
to = str2double(get(handles.edit8, 'String'));
h = tf([r], [tau 1 0], 'inputdelay', to);
[y1, t] = step(h, tspan(2));
plot(t, r*t, 'r', t, y1, 'b');
xlabel('Tiempo', 'FontSize', 12);
ylabel('Respuesta', 'FontSize', 12);
title({'Sistema lineal primer orden SISO'; 'Respuesta Rampa'}, 'Fontsize', 14);
legend('Variable de Entrada', 'Variable de Salida', 4);
elseif (get(handles.checkbox1, 'Value') == 1) & (get(handles.checkbox2, 'Value') == 1)
cla;
h = tf([K*r], [tau 1 0]);
[y, t] = step(h, tspan(2));
plot(t, r*t, 'r', t, y/K, 'k');
hold on
to = str2double(get(handles.edit8, 'String'));
h = tf([r], [tau 1 0], 'inputdelay', to);
[y1,t] = step(h, tspan(2));
plot(t, y1, 'b');
xlabel('Tiempo', 'FontSize', 12);
ylabel('Respuesta', 'FontSize', 12);
title({'Sistema lineal primer orden SISO'; 'Respuesta Rampa'}, 'Fontsize', 14);
legend('Variable de Entrada, Salida sin Tiempo Muerto', 'Salida con Tiempo Muerto',1);
end
end
% Seleccin del tipo de cambio seno en la variable de entrada
if (get(handles.radiobutton2, 'Value') == 1)
A = str2double(get(handles.edit6, 'String'));
w = str2double(get(handles.edit7, 'String'));
if (get(handles.checkbox1, 'Value') == 1) & (get(handles.checkbox2, 'Value') == 0)
cla reset;
a = [1 0 w^2];
b = [tau 1];
den = conv(a, b);
h = tf([K*A*w 0], den);
[y, t] = step(h, tspan(2));
plot(t, A*sin(w*t), 'r', t, y, 'k')
xlabel('Tiempo', 'FontSize', 12);
ylabel('Respuesta', 'FontSize', 12);
title({'Sistema lineal primer orden SISO'; 'Respuesta Seno'}, 'Fontsize', 14);
legend('Variable de Entrada', 'Variable de Salida', 1);
elseif (get(handles.checkbox2, 'Value') == 1) & (get(handles.checkbox1, 'Value') == 0)
cla reset;
93

Melanio A. Coronado H.

to = str2double(get(handles.edit8, 'String'));
a = [1 0 w^2];
b = [tau 1];
den = conv(a, b);
h = tf([K*A*w 0], den, 'inputdelay', to);
[y1,t] = step(h, tspan(2));
plot(t, A*sin(w*t), 'r', t, y1, 'b')
xlabel('Tiempo', 'FontSize', 12);
ylabel('Respuesta', 'FontSize', 12);
title({'Sistema lineal primer orden SISO'; 'Respuesta Seno'}, 'Fontsize', 14);
legend('Variable de Entrada', 'Variable de Salida', 1);
elseif (get(handles.checkbox2, 'Value') == 1) & (get(handles.checkbox1, 'Value') == 1)
cla reset;
a = [1 0 w^2];
b = [tau 1];
den = conv(a, b);
h = tf([K*A*w 0], den);
[y, t] = step(h, tspan(2));
plot(t, A*sin(w*t), 'r', t, y, 'k');
hold on
to = str2double(get(handles.edit8, 'String'));
a = [1 0 w^2];
b = [tau 1];
den = conv(a, b);
h1 = tf([K*A*w 0], den, 'inputdelay', to);
[y, t] = step(h1, tspan(2));
plot(t, y, 'b');
xlabel('Tiempo', 'FontSize', 12);
ylabel('Respuesta', 'FontSize', 12);
title({'Sistema lineal primer orden SISO'; 'Respuesta Seno'}, 'Fontsize', 14);
legend('Variable de Entrada', 'Variable de Salida', 'Variable de Salida con Tiempo Muerto', 1);
end
end
% 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)

Botn Push Button Reiniciar (pushbutton2)


El siguiente cdigo es el procedimiento que se desarrolla cuando se presiona el
botn denominado Reiniciar. Todos los controles se especifican de acuerdo a las
propiedades introducidas inicialmente
function pushbutton2_Callback(hObject, eventdata, handles)
cla reset;
axes(handles.axes3);
im = imread('ecuacion.jpg');
axis off;
imshow(im);
94

Melanio A. Coronado H.

set(handles.radiobutton1,'Value',1);
set(handles.radiobutton3,'Value',0);
set(handles.radiobutton2,'Value',0);
set(handles.edit1,'String',0);
set(handles.edit5,'String',0);
set(handles.edit3,'String',0);
set(handles.edit4,'String',0);
set(handles.edit2,'String',0);
set(handles.edit6,'String',0);
set(handles.edit7,'String',0);
set(handles.edit8,'String',0);
set(handles.checkbox1,'Value',0);
set(handles.checkbox2,'Value',0);
set(handles.text7,'String','Cambio Paso');
set(handles.text9,'Visible','off');
set(handles.edit8,'Visible','off');
set(handles.text8,'Visible','off');
set(handles.edit7,'Visible','off');

Botn Push Button Cerrar (pushbutton3)


El siguiente cdigo (Ver Figura 6.12) es el procedimiento que se desarrolla cuando
se presiona el botn denominado Cerrar. Se borra toda la memoria (comando
clear9 y se cierran todas las figuras (comando closse all) previo despliegue de un
cuadro de dilogo modal para confirmar el deseo de cerrar la figura

Figura 6.12. Funcin pushbutton3_Callback


En el rengln 310 se escribe la orden que crea y despliega una caja de dilogo de
pregunta con la palabra clave questdlg.
95

Melanio A. Coronado H.

Caja de dilogo de pregunta (questdlg)


Una caja de dilogo de pregunta es una pequea ventana que se puede desplegar
para interrogar al usuario sobre alguna decisin ejecutada en un GUI. En la funcin
pushbutton3-Callback se crea y se despliega una caja de dilogo que interroga al
usuario para confirmar o retirar su accin de cerrar definitivamente la interfaz.
La palabra clave para crear y abrir una caja de dilogo de pregunta es questdlg y su
sintaxis es la siguiente:
Selection = questdlg(Mensaje de interrogacin, Ttulo de la caja, Opciones de
respuesta a la pregunta Yes, No, Cuadro resaltado por defecto)

En el primer corchete escrito a la derecha de la palabra questdlg se observa el


mensaje pregunta que aparece al abrirse la caja de dilogo, se captura la propiedad
Name del objeto figure1 y se inserta dentro de una leyenda que comienza con
Desea cerrar continua con el valor de la propiedad capturada y termina con ?,
es decir, la pregunta es Desea cerrar LPORDENSISO?. En el segundo corchete
escrito como segundo argumento del comando questdlg se muestra el ttulo de la
caja de dilogo que comienza con Cerrar, continua con la captura de la propiedad
Name del objeto figure1 y termina con ; es decir que el ttulo que se ver es
Cerrar LPORDENSISO. El tercer argumento del comando son las opciones
botones de presin con leyendas Yes y No para responder a la pregunta por parte
del usuario y, finalmente, la opcin No se define como el cuadro de presin que,
por defecto, se resalta en su color para indicar que es el seleccionado al desplegarse
la caja de dilogo y el valor de carcter String que se le asigna a selection. La caja
de dilogo selection al desplegarse se observa como se muestra en la Figura 6.13. Se
observa que contiene un cuadro de dilogo con un signo de interrogacin en su
interior.

Figura 6.13. Caja de dilogo de pregunta


En el rengln 313 se introduce un condicional que determina la comparacin entre el
valor de selection y el valor No, ambos de carcter String. Si es cierto que son
iguales entonces el programa retorna a la interfaz abierta, en caso contrario (que se
96

Melanio A. Coronado H.

presione el botn Yes) entonces se borra todo lo almacenado en memoria y se cierran


todos los objetos abiertos, en este caso la interfaz.

6.5. EJECUCIN DEL GUI


La interfaz completamente elaborada en su configuracin y programacin se
encuentra en condiciones de ensayar su ejecucin y cuando se despliega por primera
vez el GUI se observa como lo muestra la Figura 6.6.
A continuacin se considera la ecuacin diferencial cuyos parmetros tienen los
siguientes valores:

Constante de tiempo = 8
Ganancia Estacionaria = 3
Condicin Inicial = 0
Tiempo Inicial = 0
Tiempo Final = 50

Al solucionar la ecuacin diferencial para un cambio paso de 2 en su variable de


entrada y un tiempo muerto de 3, las respuestas grficas para tanto sin tiempo
muerto como con tiempo muerto se muestran en la Figura 6.14.

Figura 6.14. Respuesta paso de un sistema lineal de primer orden SISO

Se deja al usuario el anlisis de la respuesta y la verificacin de los resultados de


acuerdo a lo esperado y segn los valores asignados a los parmetros dinmicos.
97

Melanio A. Coronado H.

Al acercar el puntero del mouse al radio botn Rampa, entonces se observa que la
leyenda Cambio paso es sustituida por la leyenda Pendiente. Dejando los mismos
valores de la corrida anterior y presionando el botn Resolver, se observan unas
respuestas grficas como se muestran en la Figura 6.15. Se deja al usuario el anlisis
de la respuesta y la verificacin de los resultados de acuerdo a lo esperado y segn
los valores asignados a los parmetros dinmicos.

Figura 6.15. Respuesta rampa de un sistema lineal de primer orden SISO

Al acercar el puntero del mouse al radio botn Seno, entonces se observa que la
leyenda Cambio paso es sustituida por la leyenda Amplitud, que se despliega una
leyenda con el nombre Frecuencia y un botn de edicin de texto donde digitar la
frecuencia de la funcin seno de entrada. Asignado a la amplitud un valor de 2 y a la
frecuencia un valor de 0.5 y dejando los mismos valores de la corrida anterior y
presionando el botn Resolver, se observan unas respuestas grficas como se
muestran en la Figura 6.16.

Figura 6.16. Respuesta seno de un sistema lineal de primer orden SISO


98

Melanio A. Coronado H.

Leccin 7. CONTROL POP-UP MENU


7.1. INTRODUCCIN.
En esta leccin se elabora un GUI para la construccin de las grficas
tridimensionales de cuatro funciones bidimensionales. Se incluyen dos funciones
definidas dentro de la plataforma de Matlab denominadas peaks y membrane y se
construyen dos funciones que se adicionan a las anteriores con los nombres de sinc y
circle.
Con la ayuda de los comandos disponibles en Matlab se despliegan los grficos de
superficie (surf), malla (mesh) y contorno (contour) de cada una de las cuatro
funciones. En un botn men desplegable (pop-up men) se elabora una lista con los
nombres de las cuatro funciones y con sendos botones de presin (push button) de
ejecutan las rdenes para desplegar los diferentes grficos para una funcin
seleccionada. Los grficos se muestran como imgenes dentro de un control axes y
mediante botones de texto esttico (static text) se colocan leyendas que ilustran la
seleccin de la funcin y la seleccin del tipo de grfico que desea desplegar el
usuario.
La Figura 7.1 muestra el GUI elaborado dentro del GUIDE y cuya construccin y
programacin se explica en esta leccin. Los archivos creados se denominan
prueba.m y prueba.fig

Figura 7.1. Interfaz grfica de usuario - GUIDE

El color observado en el fondo de la figura se seleccion desplegando el Inspector


de propiedades y seleccionando el cuadro de colores anexo a la propiedad Color. En
99

Melanio A. Coronado H.

forma similar se procedi para la seleccin del color del fondo de los botones de
texto esttico, pero en este caso la propiedad correspondiente es BackgroundColor.

7.2.

FUNCIONES BIDIMENSIONALES

A continuacin se definen las funciones bidimensionales utilizadas en esta leccin y


que al graficarlas en un sistema tridimensional representan figuras en tres
dimensiones. Las funciones peaks y membrane se encuentra dentro de la plataforma
de Matlab, mientras que las funciones sinc y circle son definidas dentro del archivo
punto eme.

Funcin peaks
La funcin peaks se puede conocer si dentro del espacio de trabajo de Matlab se
digita el comando edit peaks. Se despliega, con esto, un archivo punto eme
denominado peaks que contiene una funcin llamada peaks y dentro del cdigo se
puede leer la funcin bidimensional que es:

1
x

2
f ( x, y) 3 (1 x) 2 exp x 2 ( y 1) 2 10 x 3 y 5 exp x 2 y 2 exp x 1 y 2
3
5

(7.1)

Al correrse el archivo peaks.m se despliega una grfica tridimensional en forma


superficial (comando surf) como la que se observa en la Figura 7.2.

Figura 7.2. Grfico de la funcin peaks


100

Melanio A. Coronado H.

Funcin membrane
La funcin membrane se puede conocer si dentro del espacio de trabajo de Matlab se
digita el comando edit membrane. Se despliega, con esto, un archivo punto eme
denominado membrane que contiene una funcin llamada membrane que incluye
dentro de su expresin una funcin de Bessel que por su complejidad se omite su
escritura.
Al correrse el archivo membrane.m se despliega una grfica tridimensional en forma
superficial (comando surf) como la que se observa en la Figura 7.3.

Figura 7.3. Grfico de la funcin membrane

Funciones sinc y circle


Las funciones sinc y circle se agregan por el programador dentro del archivo punto
eme elaborado, para mostrar sus grficas en tres dimensiones al hacer correr la
interfaz descrita en la introduccin y sus expresiones matemticas son las siguientes:

Funcin sinc:

Funcin circle:

f ( x, y )

Sen x 2 y 2
x y
2

(7.2)

f ( x, y) x 2 y 11 y 2 x 7

(7.3)

Las Figuras 7.4(a) y 7.4(b) muestran las grficas de superficie de las funciones sinc
y circle, respectivamente.
101

Melanio A. Coronado H.

(a)

(b)

Figura 7.4. Grfico de superficie de: (a) Funcin sinc (b) Funcin circle

7.3.

TIPOS DE GRFICOS DE FUNCIONES BIDIMENSIONALES

Para la representacin grfica en tres dimensiones de funciones de dos variables,


Matlab dispone de varios comandos. En esta leccin solo se utilizan los que
despliegan representaciones espaciales como las mostradas en las Figuras 7.2 a 7.4.
y que son las palabras claves surf y mesh. Adicionalmente, se incluye en el GUI la
opcin de mostrar la representacin bidimensional de los grficos de contorno de
una representacin tridimensional lo cual se logra con la palabra clave contour.

Comando surf y surfc


El comando surf se utiliza para visualizar, grficamente, funciones matemticas
sobre una regin rectangular como, por ejemplo, las mostradas en las Figuras 7.2 a
7.4. Con dicho comando se crean superficies paramtricas coloreadas con las
especificaciones de x, y, z con un color especificado como argumento despus de los
vectores dimensionales (x, y, z).
La sintaxis para la ejecucin de la palabra clave surf es:

surf(Z)
surf(Z, C)
surf(X, Y, Z)
surf(X, Y, Z, C)

102

Melanio A. Coronado H.

Siendo X, Y las variables independientes, Z es la funcin de las anteriores dos


variables y C es el color de la representacin espacial. Lo anterior demanda que se
defina una matriz que defina una cuadrcula de valores de X, Y definidos mediante
un intervalo para cada una de ellas (Xmin:X:Xmax, Ymin:Y:Ymax). Esto se construye
con la palabra clave meshgrid y la siguiente sintaxis:
[X, Y] = meshgrid(Xmin:X:Xmax, Ymin:Y:Ymax);
Con el comando surfc se visualizan, grficamente, funciones matemticas sobre una
regin rectangular y se adiciona un grfico de contorno proyectado sobre el eje de
representacin X, Y. La Figura 7.5 muestra un ejemplo de un grfico de superficie
con el respectivo grfico de contorno elaborado con el comando surfc.

Figura 7.5. Grfico de superficie contorno


La sintaxis del comando surfc es similar al del comando surf con los mismos
argumentos y requerimientos.

Comando mesh y meshc


Con el comando mesh se crean superficies paramtricas cuadriculadas mediante
trazados lineales con las especificaciones de x, y, z con un color especificado como
argumento despus de los vectores dimensionales (x, y, z).
La sintaxis para la ejecucin de la palabra clave mesh es:

103

Melanio A. Coronado H.

mesh(Z)
meshc(Z, C)
mesh(X, Y, Z)
mesh(X, Y, Z, C)

Siendo X, Y las variables independientes, Z es la funcin de las anteriores dos


variables y C es el color de la representacin espacial. Lo anterior demanda que se
defina una matriz que defina una cuadrcula de valores de X, Y definidos mediante
un intervalo para cada una de ellas (Xmin:X:Xmax, Ymin:Y:Ymax). Esto se construye
con la palabra clave meshgrid y la siguiente sintaxis:
[X, Y] = meshgrid(Xmin:X:Xmax, Ymin:Y:Ymax);
Con el comando meshc se visualizan, grficamente, funciones matemticas sobre
una regin rectangular y se adiciona un grfico de contorno proyectado sobre el eje
de representacin X, Y. La Figura 7.6 muestra un ejemplo de un grfico de superficie
con el respectivo grfico de contorno elaborado con el comando meshc.

(a)

(b)

Figura 7.6. Grfico de (a) Superficie (b) Superficie - contorno

Comando contour
Al construir un grfico de contorno se despliegan lneas de Z constantes para una
funcin bidimensional. La Figura 7.7 muestra el grfico de contorno correspondiente
a la funcin sinc cuya representacin tridimensional se muestra en la Figura 7.4(a).

104

Melanio A. Coronado H.

Figura 7.7. Grfico de contorno para la funcin sinc

La sintaxis para la elaboracin de un grfico de contorno es la misma que se aplica


para la construccin de un grfico de superficie.

7.4. CONFIGURACIN DEL GUI


A continuacin se describe la elaboracin de una interfaz grfica que facilite, al
usuario de Matlab, la representacin grfica tridimensional de una funcin de dos
variables y su grfica de contorno. Para ello se instalan en el GUIDE dos controles
(Static Text) que muestran leyendas, tres controles (Push Button) que ejecutan los
procedimientos para las graficaciones y un control (Axes) para desplegar los
grficos.

Instalacin de los controles en la interfaz de usuario GUI:


Una vez iniciado GUIDE, en el rea de diseo se instalan los diferentes controles y
se observa una interfaz con la configuracin que muestra la Figura 7.1. Para todos
los controles se deja la propiedad Tag con sus asignaciones por defecto. Al archivo
se le asigna el nombre prueba.
1. Control Axes: Se instala un control de esta clase para desplegar los grficos.
En este caso, no requiere de rdenes en un cdigo de programacin.
2. Controles Static Text: Se instalan dos controles de esta clase para ilustrar con
leyendas tanto al botn men desplegable (Pop-up Menu) como a los botones
de presin (Push Button) con quienes se ejecutan las rdenes para cada una
105

Melanio A. Coronado H.

de las representaciones grficas. No requieren de programacin. El tamao de


letra se fijo en 12 (Propiedad Fontsize) y se asign estilo negrita (Propiedad
Fontweight). Las propiedades String son las leyendas que se observan en la
Figura 7.1, es decir, Seleccin de la Funcin y Seleccin del Grfico.
3. Controles Push Button: Se instalan tres botones de presin para ejecutar los
procedimientos para la construccin de cada uno de los tipos de grficos
incluidos en el programa. A las propiedades String se le asignan los
nombres Superficie, Malla y Contorno. El tamao de letra se fij en
12 (Propiedad Fontsize) y al estilo de letra se le asign la opcin negrita
(Propiedad Fontweight). Las propiedades Tag se ajustan con los valores de
Surf, Mesh y Contour
Al presionar el botn Superfice se despliega la representacin grfica
superficial (comando surf), en el control axes1, de la funcin escogida. Al
presionar el botn Malla se despliega la representacin grfica superficial
(comando mesh), en el control axes1, de la funcin escogida. Al presionar el
botn Contorno se despliega la representacin grfica bidimensional, en el
control axes1, correspondiente al contorno de la funcin escogida.

Componente Pop-up Menu (Pequeo Men desplegable)


Los mens Pop-up se abren para desplegar una lista de opciones cuando el
usuario hace clic sobre la flecha que se encuentra adjunta a la derecha del cuadro.
Las opciones se introducen en la propiedad String, una por lnea en la caja de
edicin con el mismo ttulo

4. Control Pop-up Menu: Se instalan un botn men desplegable (Pop-up


Menu) para la seleccin de la funcin que se quiere graficar entre las cuatro
incluidas en el programa. Para la asignacin de la propiedad String se
despliega el inspector de propiedades y se presiona el botn que aparece a la
derecha de dicha palabra, y en la ventana que se despliega con el mismo
nombre se digitan los nombres de las cuatro funciones, es decir, peaks,
membrana, sinc y circle. El inspector de propiedades y la ventana de ttulo
String se muestran en la Figura 7.8. Al ejecutar el GUI se observar la
funcin peaks en el men desplegable (Pop-up Menu) y
El manejo del botn men desplegable requiere que su propiedad String sea
bien asociada con la propiedad Value al tenerse, en este caso, que la
propiedad String es un conjunto de valores y no uno, como en otro tipo de
control.
106

Melanio A. Coronado H.

Figura 7.8. Inspector de propiedades de un Pop-up Menu

Propiedad Value de un control Pop-up Menu


La propiedad Value contiene el ndice de la opcin seleccionada. Por ejemplo, si
la propiedad String contiene las cuatro opciones, peaks, membrane, sinc y circle y
la propiedad Value tiene un valor de 1, entonces la opcin seleccionada es peaks.
Cuando el objeto Pop-up men no ha sido desplegado muestra, por defecto, la
opcin determinada por el ndice que se encuentra asignado a la propiedad Value.
Observe en la Figura 7.8 que la propiedad Value para el control Pop-up Menu tiene
asignado el valor de 1.0.
La primera opcin en la lista le corresponde el ndice nmero uno. Los controles
Pop-up men son tiles cuando se quiere suministrar al usuario un conjunto de
opciones exclusivas mutuamente, pero no se quiere ocupar todo el espacio
correspondiente a los radio botones requeridos. A las propiedades Fontsize y
Fontweight del control Pop-up Menu se le asignan los mismos valores de los otros
controles

Corrida del GUI


Concluida la instalacin y distribucin de los componentes del GUI se puede correr
con el objeto de verificar que los controles se despliegan como se explica cuando se
inicia el GUI. Terminada la configuracin del GUI se puede proceder a la
elaboracin del cdigo de programacin para el funcionamiento de la interfaz. Para
107

Melanio A. Coronado H.

ello presione el botn M-File Editor de la barra de herramientas para acceder al


editor de Matlab para su construccin

7.5. PROGRAMACIN DEL GUI


Asignadas las propiedades Callback y Tag para cada uno de los componentes
del GUI, se contina con la programacin o introduccin del cdigo en el archivo
GUI M-File. Como el objetivo del GUI es el despliegue de las representaciones
espaciales de cuatro funciones de dos variables, se hace necesario la introduccin de
dichas funciones (peaks, membrane, sinc y circle) dentro del archivo punto eme de
Matlab.
Las funciones peaks y membrane solo se necesita nombrarlas porque son funciones
definidas dentro de la plataforma de Matlab dentro de un archivo punto eme, pero
las funciones sinc y circle no estn incluidas dentro de la plataforma de Matlab y,
por lo tanto, se requiere definirlas dentro del archivo punto eme que hace correr el
archivo punto fig.

Funciones dentro del GUI


5. Presione el icono M-File Editor que se encuentra en la barra de herramientas
del GUIDE y a continuacin presione el icono Show Fuction de la misma
barra. Se despliega un men contextual con la lista de las funciones incluidas
dentro del archivo de extensin punto eme como se muestra en la Figura 7.9.

Figura 7.8. Archivo M-File y men Show functions


108

Melanio A. Coronado H.

Se notan los callback para los botones instalados que lo requieren y otros
tres con nombres prueba, prueba_OpeningFcn y prueba_OutputFcn

Funcin prueba_OpeningFcn
Al seleccionar un callback en el men contextual, el cursor se mueve a la primera
lnea de ste. Una funcin importante es la nombrada como prueba_OpeningFcn
porque en ella se crean datos para el GUI o se ejecutan otras tareas antes de abrir la
interfaz. El cdigo en la funcin Opening Function se ejecuta justo antes de que
el GUI se haga visible al usuario. Se puede aadir cdigo a la funcin de apertura
para desarrollar tareas que necesitan hacerse antes que el usuario tenga acceso al
GUI, por ejemplo, la creacin de datos o la lectura de fuentes externas. Para acceder
a esta funcin proceda de la siguiente manera:
6. Presione el icono Show function que se encuentra en la barra de
herramientas del archivo GUI M-File y haga clic sobre
prueba_OpeningFcn para colocar el cursor del mouse en la primera lnea
de dicha funcin.
7. Digite el cdigo que se muestra dentro de la funcin prueba_OpeningFcn
y que se observa en la Figura 7.9

Figura 7.9. Cdigo para function prueba_OpeningFcn


109

Melanio A. Coronado H.

Se construye un cdigo para crear cuatro conjuntos de datos en la funcin


apertura, utilizando las funciones ya codificadas en Matlab peaks,
membrana y aadiendo dos codificadas dentro de la funcin que son alfa y
beta
En las rdenes 56 a 63 se crean los datos utilizando las funciones peaks,
membrana alfa y beta para la generacin de los mismos. Para las dos
ltimas se hace necesario definir, previamente, una matriz como una malla
cuadriculada que defina el intervalo de valores para x, y (rengln 58, palabra
clave meshgrid). En los renglones 59 a 60 se escriben las funciones de x, y que
definen a alfa y beta.
En la siguiente lnea (rengln 64), con la igualdad handles.current_data =
handles.peaks se ajusta el campo current_data de la estructura handles
para que se iguale a los datos para la funcin peaks. El valor de
handles.current_data cambia cuando el usuario selecciona un grfico
diferente en el botn Pop-up Menu.
La orden escrita en el rengln 65 despliega el grfico en forma de superficie
para peaks, que aparece por defecto cuando se abre el GUI. Las rdenes
escritas en los renglones 66 a 68 colocan las leyendas sobre los ejes del grfico y
definen algunas propiedades como el tamao y el estilo de letra.
GUIDE genera, automticamente, dos lneas de cdigo adicionales en la funcin
apertura a continuacin del cdigo aadido y que son:
handles.output = hObject. Cumple la funcin de salvar el manejo al GUI
para un posterior acceso mediante la funcin Output. Esta lnea es til si
se quiere regresar el manejo del GUI a la lnea comando.
guidata(hObject, handles). Cumple la funcin de guardar la estructura
handles

Cdigo dentro del Callback del botn Pop-up Menu


Se puede programar el control Pop-up Menu para que trabaje verificando solo
el ndice de la opcin seleccionada (contenida en la propiedad Value) o para
que obtenga la propiedad String actual contenida en la opcin seleccionada.
El siguiente callback verifica el ndice de la opcin seleccionada y utiliza un
lazo de control de flujo switch para ejecutar las acciones de acuerdo al valor
110

Melanio A. Coronado H.

de la propiedad Value. Si el contenido del Pop-up Menu se fija, se puede


utilizar el esquema de codificacin mostrado en la Figura 7.10.

Figura 7.10. Cdigo para function popmenu1_Callback (Opcin 1)

En el cdigo mostrado en la Figura 7.10 se entiende que:


Case 1: al seleccionar la opcin peaks (Propiedad Value = 1.0) en el control
Pop-up Menu se ajusta el campo current_data de la estructura handles para
que se iguale a los datos para la funcin peaks.
Case 2: al seleccionar la opcin membrane (Propiedad Value = 2.0) en el control
Pop-up Menu se ajusta el campo current_data de la estructura handles para
que se iguale a los datos para la funcin membrane.
Case 3: al seleccionar la opcin sinc (Propiedad Value = 3.0) en el control Popup Menu se ajusta el campo current_data de la estructura handles para que
se iguale a los datos para la funcin alfa.
Case 4: al seleccionar la opcin circle (Propiedad Value = 4.0) en el control
Pop-up Menu se ajusta el campo current_data de la estructura handles para
que se iguale a los datos para la funcin beta.
111

Melanio A. Coronado H.

El botn Pop-up Menu permite al usuario seleccionar los datos a graficar.


Cuando el usuario selecciona a uno de los cuatro incluidos en el men, el
callback del botn lee la propiedad Value para determinar el tipo de datos
que se despliega por defecto y se ajusta de acuerdo a la lnea
handles.current_data.
El siguiente callback es una segunda opcin para la codificacin del control
Pop-up Menu haciendo la seleccin de la propiedad String actualmente
elegida en el control. Utiliza el valor de la propiedad Value para indexar en la
lista de Strings. Este esquema puede ser til si su programa carga,
dinmicamente, el contenido del Pop-up Menu de acuerdo a la accin del
usuario y necesita capturar el String seleccionado. Obsrvese que es necesario
convertir el valor capturado mediante la propiedad String desde un arreglo de
celdas a un String

Figura 7.11. Cdigo para function popmenu1_Callback (Opcin 2)

Cdigo dentro de los Callback de los botones Push Button


Mediante cada uno de estos botones se construyen diferentes tipos de grficos
para la opcin seleccionada en el botn Pop-up Menu. El callback
correspondiente a cada uno adquiere los datos de la estructura handles y
entonces construye el tipo de grfico correspondiente. Por ejemplo, mediante el
112

Melanio A. Coronado H.

botn Superficie se construye un grfico de superficie y mediante el botn


Contour uno de contorno a la opcin seleccionada en el botn Pop-up
Menu.

Funcin Surf_Callback (Botn Superficie)


El siguiente es el cdigo escrito como la funcin que se desarrolla al presionar el
botn Superficie

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)
surfc(handles.current_data)
xlabel('X', 'Fontsize', 14, 'Fontweight', 'bold')
ylabel('Y', 'Fontsize', 14, 'Fontweight', 'bold')
zlabel('F(X, Y)', 'Fontsize', 14, 'Fontweight', 'bold')

Con el comando surfc se construye el grfico de superficie junto con el de


contorno de los datos guardados segn la seleccin hecha en el botn Pop-up
Menu. En los siguientes tres renglones se escriben las rdenes para las leyendas
en los tres ejes de la representacin

Funcin Mesh_Callback (Botn Malla)


El siguiente es el cdigo escrito como la funcin que se desarrolla al presionar el
botn Malla

function Mesh_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)
meshc(handles.current_data)
xlabel('X', 'Fontsize', 14, 'Fontweight', 'bold')
ylabel('Y', 'Fontsize', 14, 'Fontweight', 'bold')
zlabel('F(X, Y)', 'Fontsize', 14, 'Fontweight', 'bold')

Con el comando meshc se construye el grfico de superficie enmallado junto con


el de contorno de los datos guardados segn la seleccin hecha en el botn Pop113

Melanio A. Coronado H.

up Menu. En los siguientes tres renglones se escriben las rdenes para las
leyendas en los tres ejes de la representacin

Funcin Contour_Callback (Botn Malla)


El siguiente es el cdigo escrito como la funcin que se desarrolla al presionar el
botn Contorno
function Contour_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)
contour(handles.current_data)
xlabel('X', 'Fontsize', 14, 'Fontweight', 'bold')
ylabel('Y', 'Fontsize', 14, 'Fontweight', 'bold')

Con el comando contour se construye el grfico de contorno de los datos


guardados segn la seleccin hecha en el botn Pop-up Menu. En los siguientes
dos renglones se escriben las rdenes para las leyendas en los tres ejes de la
representacin

7.6. EJECUCIN DEL GUI


Despus de escribir los callbacks, se puede ejecutar el GUI presionando el
icono Run de la barra de herramientas que se encuentra tanto en el archivo
punto eme como en el archivo punto fig. Tambin se puede seleccionar la opcin
Run que se encuentra en el men Tools del archivo punto fig. Si no ha
guardado el GUI recientemente, GUIDE despliega el siguiente cuadro de
dilogo.

Figura 7.11. Cuadro de dilogo para guardar el GUI con los ltimos cambios
114

Melanio A. Coronado H.

Si esto sucede, presione el botn Si y guarde los archivos del GUI (prueba.m y
prueba.fig) en un directorio y una carpeta deseada.
Si el directorio donde se guarda el GUI no se encuentra en la ruta de Matlab, al
pretender abrir sus archivos GUIDE abre el siguiente cuadro de dilogo, Figura
7.12, permitiendo la opcin de cambiar el directorio usual al directorio que
contiene los archivos GUI o aadiendo dicho directorio a la ruta de Matlab.
Presione el botn Change Folder para cambiar de directorio

Figura 7.12. Confirmacin del directorio para guardar los archivos del GUI

Se despliega entonces la ventana de inicio del GUI que es la que se muestra en la


Figura 7.13

Figura 7.13. Ventana de inicio del GUI elaborado


115

Melanio A. Coronado H.

Se observa que el ttulo de la ventana es GRAFICOS 3D que es la expresin que


se asign como valor a la propiedad Name de la figura. El color del fondo es el
seleccionado dentro de una tabla de colores para la propiedad Color. Hay un
control Pop-up Menu que muestra como opcin para seleccionar, por defecto, la
funcin peaks. En el control axes se despliega el grfico de superficie de la
funcin peaks porque en la funcin prueba_OpeningFcn se escribi la orden
para que al desplegarse el GUI se graficara dicha funcin.
El manejo del GUI consiste, simplemente, en elegir en el control Pop-up Menu la
funcin que se quiere graficar y con los controles Push Button hacer desplegar el
tipo de grfico (Superficie, Malla, Contorno) deseado.

Grficos de superficie y de malla de la funcin peaks


Al seleccionar la funcin peaks en el control Pop-up Menu y presionar el botn
Superficie se despliega la representacin grfica tridimensional mostrada en la
Figura 7.14(a) y al presionar el botn Malla se despliega la representacin
grfica tridimensional mostrada en la Figura 7.14(b).

(a)

(b)

Figura 7.14. Grficos de superficie y de malla de la funcin peaks

Se nota que en ambas construcciones grficas est incluido el grfico de


contorno proyectado sobre el sistema de representacin x, y. Esto se explica
porque en la codificacin del control Push Button se utiliz la palabra clave
surfc. Se deja, como observacin, para el usuario el despliegue del grfico de
contorno para la funcin peaks.

116

Melanio A. Coronado H.

Grficos de superficie y de malla de la funcin membrane


Al seleccionar la funcin membrane en el control Pop-up Menu y presionar el
botn Superficie se despliega la representacin grfica tridimensional mostrada
en la Figura 7.15(a) y al presionar el botn Malla se despliega la representacin
grfica tridimensional mostrada en la Figura 7.15(b).

(a)

(b)

Figura 7.15. Grficos de superficie y de malla de la funcin membrane

En forma similar al de la funcin peaks, se nota que en ambas construcciones


grficas est incluido el grfico de contorno proyectado sobre el sistema de
representacin x, y. Esto se explica porque en la codificacin del control Push
Button se utiliz la palabra clave meshc. Se deja, como observacin, para el
usuario el despliegue del grfico de contorno para la funcin membrane.

Grficos de superficie y de contorno de la funcin sinc


En la Figura 7.16 se muestran los grficos de superficie y de contorno de la
funcin sinc. Las observaciones y los comentarios sobre el grfico de superficie,
en este caso, son los mismos de los dos casos anteriores.
Se muestra el grfico de contorno como una ilustracin muy clara de este tipo de
representacin. Para la funcin sinc, una representacin grfica para un valor
numrico fijo de la funcin da una variacin entre x, y con la forma cerrada
circular observada en la Figura 7.16 (b). Por defecto, Matlab fija los valores de la
funcin y muestra los contornos correspondientes, pero se tiene la palabra clave

117

Melanio A. Coronado H.

y la sintaxis correspondiente para que el usuario fije los valores de la funcin a


un cierto conjunto numrico y que se desplieguen los contornos respectivos.

(a)

(b)

Figura 7.16. Grficos de la funcin sinc (a) Superficie (b) Contorno

Se deja al usuario, como observacin, el despliegue de los tres tipos de grficos para
la funcin circle.

7.7. ASIGNACIONES
Hacer las siguientes modificaciones al GUI elaborado anteriormente para la
elaboracin de representaciones tridimensionales de funciones de dos variables
1.
2.
3.
4.

Agregar la funcin f ( x, y) 4 x 2 5 y 2 y llamarla huzo


Agregar la funcin sphere que se encuentra dentro de las libreras de Matlab
Agregar el grfico superficial que se construye con el comando surfl
Consulte algunas propiedades de los grficos como colormap y shading y
utilcelos dentro de su programa

118

Melanio A. Coronado H.

Leccin 8. CONTROL BUTTON GROUP


8.1. INTRODUCCIN.
En esta leccin se elabora un GUI para la solucin de una ecuacin diferencial lineal
de segundo orden SISO. En el GUI elaborado, los datos requeridos para obtener la
respuesta grfica de la ecuacin diferencial se renen en tres paneles, dos de ellos
son controles de tipo panel (Panel Button) titulados Parmetros Dinmicos y
Parmetros Entrada, pero el tercero es un control de tipo grupo de botones
(Button Group) titulado Perturbacin en donde se han insertado tres controles de
tipo Radio Button con el propsito de que al seleccionar uno de ellos se ajusten las
propiedades de algunos controles y que permitan desarrollar soluciones para
cambios paso, rampa y seno en la variable de entrada. En esta leccin los grficos no
se despliegan en controles tipo axes porque las rdenes se escriben para que se
muestren las respuestas en la ventana de grficos de Matlab. Como algo adicional se
instala un control axes para desplegar una imagen al iniciarse la corrida del GUI y
tambin se colocan los botones de presin que han de ejecutar funciones especficas.
Entre la ventana de inicio y el entorno de captura de datos y de ejecucin de
funciones se hace desplegar una caja de dilogo de espera (waitbar) con el propsito
de ilustrar el cdigo que se requiere para su visin.
La Figura 8.1 muestra el GUI elaborado dentro del GUIDE y cuya construccin y
programacin se explica en esta leccin. Los archivos creados se denominan
SISODOS.m y SISODOS.fig

Figura 8.1. Interfaz grfica de usuario - GUIDE


119

Melanio A. Coronado H.

El color observado en el fondo de la figura se seleccion desplegando el Inspector


de propiedades y seleccionando el cuadro de colores anexo a la propiedad Color. En
forma similar se procedi para la seleccin del color del fondo de los otros botones,
pero en este caso la propiedad correspondiente es BackgroundColor.
Se observa detrs de los paneles un fondo blanco que es el control axes para el
despliegue inicial de una figura antes del GUI definitivo y sobre el botn de presin
Siguiente se instala otro botn de presin con leyenda (String) Graficar que
inicialmente no es visible pero que posteriormente el cdigo lo hace visible.

8.2. ECUACIN DIFERENCIAL LINEAL DE SEGUNDO ORDEN


La ecuacin diferencial que expresa la dinmica de un sistema lineal de segundo
orden con una variable de entrada, y una variable salida, se puede expresar con la
siguiente forma:

a2

d 2 y(t )
dy(t )
a1
ao y(t ) b1 x(t ) bo
2
dt
dt

(8.1)

Siendo y(t ) la variable de salida, x(t ) la variable de entrada y a2 , a1 , ao , b1 y bo


parmetros caractersticos del sistema. La ecuacin 8.1 en trminos de las variables
desviacin suele escribirse con el siguiente arreglo:

a2 d 2Y (t ) a1 dY (t )
b

Y (t ) 1 X (t )
2
ao dt
ao dt
ao

(8.2)

Las relaciones entre los parmetros fsicos del sistema que se observan en la
ecuacin (8.2) suelen sustituirse por smbolos que expresan parmetros de
significado dinmico como son la constante de tiempo , el factor de
amortiguamiento y la ganancia K , resultando la ecuacin diferencial
caracterstica de un sistema lineal de segundo orden SISO as:

d 2Y (t )
dY (t )
2
Y (t ) KX (t )
2
dt
dt

(8.3)

120

Melanio A. Coronado H.

Siendo

a2
ao

1 a1 1 a1

2 ao 2 ao a2

b1
ao

Las anteriores ecuaciones expresan que estos tres parmetros se calculan con
ecuaciones en funcin de caractersticas fsicas del sistema. La constante de tiempo
expresa un atraso dinmico, el valor del factor de amortiguamiento determina el tipo
de respuesta del sistema y la ganancia tiene el mismo significado definido para los
sistemas de primer orden.
La ecuacin diferencial (8.3) es la forma estndar completa que expresa la dinmica
de un sistema lineal de segundo orden SISO. Para la solucin de la ecuacin (8.3) se
requieren las especificaciones de los parmetros dinmicos o en su defecto los
parmetros fsicos y el tipo de cambio que se ejerce a la variable de entrada. Es
importante anotar que por expresarse la ecuacin (8.3) en trminos de las variables
desviacin, los valores iniciales de cada una de ellas es cero.
La solucin de la ecuacin diferencial (8.3), tanto en el dominio del tiempo como en
el de Laplace, nos permite analizar la variacin en el tiempo de la variable
desviacin de salida ante un determinado tipo de cambio en la variable desviacin
de entrada, es decir, la dinmica del sistema cuyo fenmeno fsico se expresa
mediante dicha ecuacin.

Funcin de Transferencia Transformada de Laplace


Al aplicar transformada de Laplace a la ecuacin diferencial (8.3) se tiene que:
2 s 2Y (s) sY (0) Y ' (0) 2 sY (s) Y (0) Y (s) KX (s)

Teniendo en cuenta que Y (0) 0, Y ' (0) 0 se puede reorganizar la igualdad anterior
y expresarla como la respuesta del sistema en el dominio de Laplace de la siguiente
manera:

Y ( s)

K
X ( s)
s 2 s 1
2

121

Melanio A. Coronado H.

Siendo G(s) el smbolo utilizado para representar una funcin de transferencia.


Entonces la funcin de transferencia caracterstica de un sistema lineal de primer
orden SISO es dada en su forma estndar por la siguiente ecuacin:

G( s)

Y ( s)
K
2 2
X ( s) s 2 s 1

(8.4)

La funcin de transferencia (8.4) permite encontrar la respuesta del sistema para un


determinado tipo de cambio en su variable de entrada. Utilizando Matlab es muy
fcil encontrar esta solucin.

8.3. RESPUESTA DE UN SISTEMA DE SEGUNDO ORDEN


Las transformadas de Laplace para la respuesta paso, rampa y rampa corresponden a
las siguientes expresiones:

Respuesta paso
Para este tipo de cambio en la variable de entrada, la transformada de Laplace de la
respuesta del sistema es dada as:

1
Kh
Y ( s) 2 2
s s 2 s 1

(8.5)

Siendo h la magnitud del cambio paso. La forma de la ecuacin (8.5) hace fcil la
obtencin de su respuesta grfica porque basta con aplicar el comando step a la
expresin encerrada dentro del corchete.

Respuesta rampa
Para este tipo de cambio en la variable de entrada, la transformada de Laplace de la
respuesta del sistema es dada as:

Y ( s)

r
s2

K
Kr
2 s 2 2 s 1 s 2 s 3 2 s 2 s

(8.6)

122

Melanio A. Coronado H.

Siendo r la magnitud de la pendiente del cambio rampa. La forma de la ecuacin


(8.6) hace fcil la obtencin de su respuesta grfica porque basta con aplicar el
comando step a la expresin encerrada dentro del corchete. Tngase en cuenta que el
denominador es de un grado tres.

Respuesta seno
Para este tipo de cambio en la variable de entrada, la transformada de Laplace de la
respuesta del sistema es dada as:

Y ( s)

A
s 2
2

1
K
KAs
2 s 2 2 s 1 s s 2 2 2 s 2 2 s 1

(8.67

Siendo A la amplitud y la frecuencia de la funcin seno de la variable de entrada..


La forma de la ecuacin (8.7) hace fcil la obtencin de su respuesta grfica porque
basta con aplicar el comando step a la expresin encerrada dentro del corchete.
Tngase en cuenta que el denominador es el producto de dos factores, esto es muy
fcil expresarlo en Matlab mediante el comando conv.

Perfil grfico de la respuesta de un sistema de segundo orden


El comportamiento de la respuesta de un sistema lineal de segundo orden SISO ante
un cambio en la variable de entrada es monotnico u oscilatorio dependiendo del
valor del factor de amortiguamiento. Si es igual a cero es oscilatorio permanente, si
tiene un valor menor que uno y mayor que cero es oscilatorio (subamortiguado) con
un decrecimiento en su amplitud y si es igual o mayor que uno es completamente
monotnico (sobreamortiguado). Si el valor del factor de amortiguamiento es
positivo la respuesta es estable, en caso contrario es inestable.

8.4. CONTROL BUTTON GROUP (GRUPO DE BOTONES)


El control Button group es un control tipo panel pero que a diferencia de ste se
utiliza para administrar exclusivamente el comportamiento de controles tipo radio
button o toggle button (botn de conmutacin) que se encierren dentro de l. Si un
button group contiene un conjunto de radio botones, botones de conmutacin o de
ambos, el control button group solamente permite la seleccin de uno de ellos.
Cuando el usuario presiona el botn, este se selecciona y todos los otros se
123

Melanio A. Coronado H.

desactivan. Al incluir en la programacin un button group, no se codifican callbacks


para los botones individuales encerrados en el grupo; a cambio de ello se utiliza el
callback SelectionChangeFcn para administrar las respuestas a las selecciones.
Despus de instalado el botn button group se selecciona con un clic derecho para
despegar un men contextual que incluye la opcin View Callbacks. (Observe la
Figura 8.2).

Figura 8.2. Seleccin del callback para el control button group

Se nota entonces que al seleccionar esta ltima opcin se despliega otro pequeo
men contextual que incluye los diferentes tipos de callbacks aplicables al botn
button group. Entre las opciones se encuentra el callback tipo SelectionChangeFcn
que al seleccionarlo hace que se incluya dentro del archivo de extensin punto eme
de Matlab la funcin callaback correspondiente para el button group. (Observe la
Figura 8.3).

Figura 8.3. Callback uipanel2_SelectionChangeFcn del button group


124

Melanio A. Coronado H.

Las propiedades que inicialmente se definen en un control button group son Title y
TitlePosition. En la Figura 8.4 se observa el inspector de propiedades del button
group instalado en el GUI mostrado en la Figura 8.1, la propiedad Title (Ttulo) se
ha ajustado con la palabra Perturbacin y la propiedad TitlePosition (Posicin del
ttulo) se ha ajustado al valor lefttop (Posicin superior izquierda) seleccionado del
men contextual situado a la derecha del nombre de la propiedad.

Figura 8.4. Inspector de propiedades de un button group

SelectionChangeFcn (Propiedad String o funcin handle)


Es una rutina Callback que se ejecuta cuando cambia la seleccin del radio botn o
del botn de comando que encierra el button group. Si esta rutina es invocada como
una funcin, handle uibuttongroup le transfiere dos argumentos. El primer
argumento, source, es el handle del uibuttongroup y el segundo argumento,
eventdata, es una estructura de datos de eventos que contiene los campos que se
muestran en la siguiente table.

Campo de la estructura
Event Data

Descripcin

EventName

'SelectionChanged'

OldValue

Handle del objeto seleccionado antes del


envento. [] si no se seleccion alguno.

NewValue

Handle del objeto seleccionado actual.


125

Melanio A. Coronado H.

Si se tiene un button group que contiene un grupo de botones de opcin y/o


conmutacin y se quiere que ocurra una accin inmediata cuando se seleccione uno
de ellos, se debe incluir el cdigo que controla los botones de opcin o de
conmutacin dentro de la funcin callback SelectionChangeFcn del button group y
no en las funciones callback de los botones de opcin o conmutacin.
Si se quiere que otro componente, como por ejemplo un botn de presin, base su
accin en la seleccin del botn de opcin o conmutacin, entonces el callback de
dicho componente puede capturar el handle del botn de opcin o conmutacin
seleccionado desde la propiedad SelectedObject del control button group.
El siguiente cdigo es el callback SelecctionChangeFcn del button group instalado
en el GUIDE mostrado en la Figura 8.1 y cuya propiedad Tag es uipanel2, razn por
la cual la function se llama uipanel2_SelectionChangeFcn(hObject, eventdata,
handles).

% --- Executes when selected object is changed in uipanel2.


function uipanel2_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to the selected object in uipanel2
% eventdata structure with the following fields (see UIBUTTONGROUP)
% EventName: string 'SelectionChanged' (read only)
% OldValue: handle of the previously selected object or empty if none was selected
% NewValue: handle of the currently selected object
% handles structure with handles and user data (see GUIDATA)
switch get(eventdata.NewValue, 'Tag') % Get Tag of selected object
case 'radiobutton1'
% Code for when radiobutton1 is selected.
set(handles.text5, 'String', 'Magnitud del Paso')
set(handles.text6, 'Visible', 'off')
set(handles.edit6, 'Visible', 'off')
case 'radiobutton2'
% Code for when radiobutton2 is selected.
set(handles.text5, 'String', 'Pendiente')
set(handles.text6, 'Visible', 'off')
set(handles.edit6, 'Visible', 'off')
case 'radiobutton3'
% Code for when togglebutton1 is selected.
set(handles.text5, 'String', 'Amplitud')
set(handles.text6, 'Visible', 'on')
set(handles.edit6, 'Visible', 'on')
otherwise
% Code for when there is no match.
end
126

Melanio A. Coronado H.

En el cdigo se captura la propiedad Tag del objeto seleccionado con la sentencia


get(eventdata.NewValue, 'Tag') y mediante un lazo de control switch se plantean los
cdigos a ejecutar segn la propiedad Tag del botn de opcin seleccionada y
capturada (las propiedades Tag de los botones de opcin son radiobutton1,
radiobutton2 y radiobutton3). La propiedad Tag de cada componente es un string
que identifica a ese componente y que debe ser nico en el GUI.
Los argumentos hObject and eventdata estn disponibles en los callback solamente
si el valor de la propiedad Callback es especificada como una funcin handle.

8.5. CONFIGURACIN DEL GUI


A continuacin se describe la elaboracin de una interfaz grfica que facilite, al
usuario de Matlab, la solucin, en forma grfica, de una ecuacin diferencial lineal
de segundo orden SISO. Para ello se instalan en el GUIDE los siguientes controles:
1. Un control (Axes) para desplegar una imagen sobre el GUI antes de mostrar la
interfaz definitiva de captura y procesamiento de datos.
2. Siete botones de texto esttico (Static Text) que muestran leyendas (Constante
de tiempo, Coeficiente de amortiguamiento, Ganancia Estacionaria, Tiempo
de simulacin, Magnitud del Paso, Frecuencia y tiempo muerto).
3. Siete botones de edicin de texto (Edit Text) con sus propiedades String
ajustadas todas al valor cero (0) y colocados a la derecha de cada uno de los
botones de texto esttico.
4. Cuatro botones de presin (Push Button) con propiedades String ajustadas por
defecto a Siguiente, Graficar, Cancelar y Ayuda (el botn Graficar no se
observa porque esta superpuesto por el botn Siguiente), que ejecutan los
procedimientos para desplegar el GUI despus de una presentacin inicial
(Siguiente), graficar la respuesta obtenida (Graficar), cerrar el GUI
(Cancelar) y desplegar la ayuda (Ayuda) que construye Matlab del archivo
punto eme elaborado.
5. Dos botones tipo panel (Panel Button) titulados Parmetros dinmicos y
Parmetros Entrada. En el primero se encierran cuatro botones de texto
esttico (Constante de tiempo, Coeficiente de amortiguamiento, Ganancia
Estacionaria y Tiempo de simulacin), y en el segundo se encierran tres
botones de texto esttico (Magnitud del Paso, Frecuencia y Tiempo Muerto).

127

Melanio A. Coronado H.

6. Un componente Button Group titulado Perturbacin en donde se encierran


tres botones de opcin
7. Tres botones de opcin (Radio Button) con sus propiedades String ajustadas a
las expresiones Cambio Paso, Cambio Rampa y Cambio Seno. Los tres
botones de opcin se instalan dentro del componente button group para
manejar sus cdigos de programacin dentro del callback del button group.

Para todos los controles se deja la propiedad Tag con sus asignaciones por defecto.
A los archivos punto eme y punto fig se les asigna el nombre SISODOS.

Instalacin de los controles en la interfaz de usuario GUI:


Una vez iniciado GUIDE, en el rea de diseo se instalan los diferentes controles y
se observa una interfaz con la configuracin que muestra la Figura 8.1.
1. Control Axes: Se instala un control de esta clase para desplegar una imagen
en el GUI antes de desplegar la interfaz mostrada en la Figura 8.1. En este
caso, no requiere de rdenes en un cdigo de programacin.
2. Controles Static Text: Se instalan siete controles de esta clase para ilustrar
con leyendas a la izquierda a los botones de edicin de texto (Edit Text) en
donde se digitan los datos requeridos para la solucin de la ecuacin
diferencial y que han de ser capturados en el cdigo de programacin. No
requieren de programacin. La propiedad Fontsize se fij en 12 y la
propiedad Fontweight se ajust al valor bold. Las propiedades String son las
leyendas que se observan en la Figura 8.1, es decir, Constante de tiempo,
Coeficiente de amortiguamiento, Ganancia Estacionario, Tiempo de
simulacin, Magnitud del Paso, Frecuencia y Tiempo Muerto. La propiedad
BackgroundColor de los botones de texto esttico y de los paneles se ajust
al mismo color observado en la Figura 8.1. La propiedad Visible de todos
estos controles se ajust al valor off con el objeto de no hacerla visible en el
despliegue inicial del GUI.
3. Controles Edit Text: Se instalan siete botones de edicin de texto (Edit Text)
con sus propiedades String ajustadas todas al valor cero (0) y colocados a la
derecha de cada uno de los botones de texto esttico. La propiedad Fontsize
se fij en 12 y la propiedad Fontweight se ajust al valor bold. La propiedad
Visible de todos estos controles se ajust al valor off con el objeto de no
hacerla visible en el despliegue inicial del GUI.
128

Melanio A. Coronado H.

4. Controles Push Button: Se instalan cuatro botones de presin (Push Button)


con propiedades String ajustadas por defecto a Siguiente, Graficar, Cancelar
y Ayuda (el botn Graficar no se observa porque esta superpuesto por el
botn Siguiente), que ejecutan los procedimientos para desplegar el GUI
despus de una presentacin inicial (Siguiente), graficar la respuesta obtenida
(Graficar), cerrar el GUI (Cancelar) y desplegar la ayuda (Ayuda) que
construye Matlab del archivo punto eme elaborado.
La propiedad Visible del componente con propiedad String Graficar se ajust
al valor off con el objeto de no hacerla visible en el despliegue inicial del
GUI. Al presionar el botn con propiedad String Siguiente su propiedad
Visible cambia al valor off y la propiedad Visible del botn con propiedad
String Graficar se ajusta al valor on. Es decir, se hace visible el uno y el otro
no se hace visible. La propiedad Visible para los otros botones de edicin de
texto se ajust al valor on con el objeto de hacerlos visibles en todo momento
del despliegue del GUI
5. Controles Panel: Se instalan dos botones tipo panel (Panel Button) con sus
propiedades Title ajustadas a los nombres Parmetros dinmicos y
Parmetros Entrada, respectivamente y la propiedad TitlePosition ajustada
a la opcin lefttop. En el primero se encierran cuatro botones de texto esttico
(Constante de tiempo, Coeficiente de amortiguamiento, Ganancia
Estacionaria y Tiempo de simulacin), y en el segundo se encierran tres
botones de texto esttico (Magnitud del Paso, Frecuencia y Tiempo Muerto).
No requieren de cdigo de programacin. La propiedad BackgroundColor de
los botones de texto esttico y de los paneles se ajust al mismo color
observado en la Figura 8.1. La propiedad Visible de estos dos controles se
ajust al valor off con el objeto de no hacerla visible en el despliegue inicial
del GUI.
6. Control Button Group: Se instala un componente de este tipo con la
propiedad Title ajustada a la palabra Perturbacin y la propiedad
TitlePosition ajustada a la opcin lefttop. En este componente se encierran
tres botones de opcin. La propiedad Visible de estos dos controles se ajust
al valor off con el objeto de no hacerla visible en el despliegue inicial del
GUI. La propiedad BackgroundColor de los botones de opcin y del panel
grupo de botones se ajust al mismo color observado en la Figura 8.1.
7. Controles Radio Button: Se instalan tres botones de opcin (Radio Button)
con sus propiedades String ajustadas a las expresiones Cambio Paso, Cambio
Rampa y Cambio Seno. Los tres botones de opcin se instalan dentro del
componente button group para manejar sus cdigos de programacin dentro
del callback del button group.
129

Melanio A. Coronado H.

La propiedad BackgroundColor de los botones de opcin y del panel grupo


de botones se ajust al mismo color observado en la Figura 8.1.
La propiedad Tag asignada, por defecto, y de acuerdo al orden en que fueron
instalados los tres botones de opcin es radiobutton1 (Cambio Paso),
radiobutton2 (Cambio Rampa) y radiobutton3 (Cambio Seno).
Por la misma razn anterior, la propiedad Value asignada, por defecto, es 1.0
para el radiobutton1 y 0.0 para los botones de opcin radiobutton2 y
radiobutton3. Esto hace que al desplegar el GUI se observe, por defecto,
seleccionado el componente de propiedad Tag radiobutton1 (crculo fondo
azul) y los otros dos botones de opcin se ven desactivados crculo con fondo
blanco). Al ejecutar el GUI se puede comprobar que al seleccionar otro botn
de opcin el crculo observado a la izquierda se rellena de color azul y los
otros botones de opcin se ven de fondo blanco, es decir, se inactivan

8.6. PROGRAMACIN DEL GUI


Despus de instalar los componentes del GUI como se observan en la Figura 8.1 y
asignadas las propiedades explicadas, anteriormente, para cada uno de ellos se
contina con la programacin o introduccin del cdigo en el archivo GUI M-File.
En esta leccin se elabora un cdigo de programacin para, inicialmente, al correr el
GUI hacer el despliegue de una imagen que es un texto editado en Word convertido
a un archivo de extensin jpg (SISODOS.jpg) y posteriormente, ingresar al GUI
donde se ingresan los datos requeridos para capturarlos, procesarlos y mostrar los
resultados grficos de la solucin de una ecuacin diferencial lineal de segundo
orden SISO haciendo clic izquierdo sobre el botn de presin que se ve con la
leyenda Siguiente. Se hace necesario, entonces, la codificacin que permita el
despliegue inicial de la imagen contenida dentro del archivo de extensin jpg.

Imagen dentro del GUI


1. Presione el icono M-File Editor que se encuentra en la barra de herramientas
del GUIDE, a continuacin presione el icono Show Fuction de la misma
barra para desplegar el men contextual con la lista de las funciones incluidas
dentro del archivo de extensin punto eme y seleccione la opcin
SISODOS_OpeningFcn para colocar el cursor del mouse en la primera
lnea de dicha funcin.

130

Melanio A. Coronado H.

2. Digite el cdigo que se muestra dentro de


SISODOS_OpeningFcn y que se observa en la Figura 8.5

la

funcin

Figura 8.5. Cdigo para function SISODOS_OpeningFcn

En el rengln 56, mediante la orden axes(handles.axes1) se selecciona el control


axes donde se despliega la imagen correspondiente a la ecuacin diferencial. En el
siguiente rengln 57, la palabra clave imread copia la imagen correspondiente al
archivo DOSSISO.jpg que debe archivarse dentro de la misma carpeta en que se
encuentra el archivo SISODOS con el nombre de im. En el rengln 58, con el
comando axis off, se inactiva la numeracin de los ejes del axes y mediante la
palabra clave imshow se muestra la imagen que se quiere, es decir, im (rengln 59).
GUIDE genera, automticamente, dos lneas de cdigo adicionales en la funcin
apertura a continuacin del cdigo aadido y que son:
handles.output = hObject. Cumple la funcin de salvar el manejo al GUI
para un posterior acceso mediante la funcin Output. Esta lnea es til si
se quiere regresar el manejo del GUI a la lnea comando.
guidata(hObject, handles). Cumple la funcin de guardar la estructura
handles
131

Melanio A. Coronado H.

Al ejecutar el GUI con la codificacin anterior dentro de la funcin de apertura


se despliega una interfaz como la mostrada en la Figura 8.6.

Figura 8.6. Interfaz inicial del archivo SISODOS.fig

Al presionar el botn con la leyenda Siguiente se despliega una caja de dilogo


de espera durante un tiempo definido en su codificacin como se muestra en la
Figura 8.7(a) y despus de cerrarse se despliega la interfaz donde se edita la
informacin requerida para la solucin grfica de la ecuacin diferencial. Ver la
Figura 8.7 (b).

(a)

(b)

Figura 8.7. (a) Interfaz inicial y (b) Interfaz final

Cdigo dentro del Callback del botn pushbutton1 (Siguiente)


Todo lo anterior se ejecuta siguiendo el cdigo escrito dentro de la funcin que
ejecuta el botn con leyenda Siguiente cuya propiedad Tag es pushbutton1 y que se
muestra a continuacin:
132

Melanio A. Coronado H.

% --- 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)
% Despliegue de la caja de dilogo de espera
h = waitbar(0, 'Por favor, Espere... Gracias');
steps = 1000; set(h, 'Name', 'Mensaje de Espera')
% Ciclo de iteracin para la espera de la barra
for step = 1:steps
% computations take place here
waitbar(step / steps)
end
% Cierre de la barra de espera
close(h) ,
% Terminacin de la codificacin para la caja de dilogo de espera
cla; % Borra los ejes del axes y la imagen
% Ajuste de la propiedad Visible de los componentes del GUI
set(handles.axes1, 'Visible', 'off');
set(handles.uipanel1, 'Visible', 'on');
set(handles.uipanel2, 'Visible', 'on');
set(handles.uipanel3, 'Visible', 'on');
set(handles.text1, 'Visible', 'on');
set(handles.text2, 'Visible', 'on');
set(handles.text3, 'Visible', 'on');
set(handles.text4, 'Visible', 'on');
set(handles.text5, 'Visible', 'on');
set(handles.text7, 'Visible', 'on');
set(handles.radiobutton1, 'Visible', 'on');
set(handles.radiobutton2, 'Visible', 'on');
set(handles.radiobutton3, 'Visible', 'on');
set(handles.edit1, 'Visible', 'on');
set(handles.edit2, 'Visible', 'on');
set(handles.edit3, 'Visible', 'on');
set(handles.edit4, 'Visible', 'on');
set(handles.edit5, 'Visible', 'on');
set(handles.edit7, 'Visible', 'on');
set(handles.pushbutton1, 'Visible', 'off');
set(handles.pushbutton4, 'Visible','on');

El cdigo comienza con las sentencias para el despliegue de una caja de dilogo
de espera como la que se observa en la Figura 8.7(a), borra la imagen y los ejes
del componente axes instalado y desplegado de acuerdo a las rdenes escritas en
la funcin de apertura y finalmente ajusta la propiedad Visible al valor on de los
133

Melanio A. Coronado H.

componentes instalados que deben observarse al ejecutar el GUI y al valor off a


aquellos componentes instalados que no se han de observar.

Caja de dilogo barra de espera (waitbar)


Una barra de espera es una figura que despliega el avance de un clculo en trminos
del porcentaje total de su desarrollo y mediante el llenado progresivo de izquierda a
derecha de una barra con un color rojo.
La palabra clave para crear y abrir una caja de dilogo barra de espera es waitbar y
su sintaxis es la siguiente:
Selection = waitbar(x, Mensaje)

Con la sentencia anterior se despliega una barra de espera de una longitud en


fraccin x. La barra de espera se despliega hasta que el cdigo que la controle la
cierre o se utilice el botn de cerrar de window (parte superior derecha). El
argumento x debe asignrsele un valor entre cero y uno.
En
el
cdigo
mostrado,
anteriormente,
para
la
function
pushbutton1_Callback(hObject, eventdata, handles) el valor de x es cero y el
Mensaje es Por favor, EspereGracias. Para el manejo del objeto se asigna a la
barra de espera el smbolo h, esto explica que con la sentencia set(h, Name,
Mensaje de Espera), se ajusta la propiedad Name (Ttulo) de la barra de espera con
la expresin Mensaje de Espera.
Para el clculo progresivo que sealar la barra de espera con la banda de color rojo
se fija un valor de 1000 para un gran total llamado steps y luego mediante un lazo de
control ifend se aplica el comando waitbar que hace que la barra de espera
progrese en fracciones de un milsimo. Finalmente, una vez terminado el ciclo
anterior se cierra la barra de espera con el comando Close(h). El usuario puede
verificar la diferencia en el tiempo de espera observado en el despliegue de la barra
si aumenta o disminuye el valor de steps.

Cdigo dentro del Callback del Button Group (Perturbacin)


Al ejecutar el GUI ya terminado, despus de ingresar los parmetros dinmicos del
sistema se debe seleccionar el tipo de perturbacin en la variable de entrada porque
segn sea ste se comportan los controles que aparecen en el panel Parmetros 134

Melanio A. Coronado H.

Entrada. Los botones de opcin instalados para hacer la anterior seleccin se


encerraron dentro del button group cuya propiedad Tag es unipanel2 y su cdigo
debe elaborarse desde el componente button group. A continuacin se muestra en la
Figura 8.8 una copia del cdigo elaborado dentro de la function
uipanel2_SelectionChangeFcn(hObject, eventdata, handles).

Figura 8.8. Funcin uipanel2_SelectionChangeFcn

Con el comando get (rengln 300) se captura el nuevo valor de la propiedad Tag
del botn de opcin seleccionado. Con el lazo de control switchend se
codifican cada una de las tres opciones posibles (radiobutton1, radiobutton2 y
radiobutton3).
Para la opcin radiobutton1 (Cambio Paso) se ajusta la propiedad String del
componente text5 a la expresin Magnitud del Paso y los botones text6 y edit6 se
hacen no visibles.
Para la opcin radiobutton2 (Cambio Rampa) se ajusta la propiedad String del
componente text5 a la expresin Pendiente y los botones text6 y edit6 se hacen
visibles.
Para la opcin radiobutton3 (Cambio Rampa) se ajusta la propiedad String del
componente text5 a la expresin Amplitud y los botones text6 y edit6 se hacen no
visibles
135

Melanio A. Coronado H.

Funcin pushbutton4_Callback (Botn Graficar)


Despes de especificado el tipo de perturbacin en la variable de entrada y los
parmetros correspondientes segn la seleccin, se tiene toda la informacin
necesaria para desarrollar la solucin de la ecuacin diferencial. Lo anterior se
logra haciendo ejecutar el cdigo escrito dentro de la funcin
pushbutton4_Callback(hObject, evendata, handles) correspondiente al botn con
la leyenda Graficar y que se muestra a continuacin.

function pushbutton4_Callback(hObject, eventdata, handles)


% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if get(handles.radiobutton1, 'Value') == 1;
% Ajuste de propiedades de controles
set(handles.text5, 'String', 'Cambio Paso');
set(handles.text6, 'Visible', 'off');
set(handles.edit6,'Visible','off');
% Captura de datos
tau = str2double(get(handles.edit1, 'String'));
fi = str2double(get(handles.edit2, 'String'));
ka = str2double(get(handles.edit3, 'String'));
ti = str2double(get(handles.edit4, 'String'));
p = str2double(get(handles.edit5, 'String'));
to = str2double(get(handles.edit7, 'String'));
% Funcin de transferencia y respuesta paso
if to == 0
fts = tf([ka*p], [tau^2 2*tau*fi 1]);
[y1, t] = step(fts, ti);
figure(1)
plot(t, y1, 'k')
grid
elseif to > 0
fts = tf([ka*p], [tau^2 2*tau*fi 1]);
ftc = tf([ka*p], [tau^2 2*tau*fi 1], 'inputdelay', to);
[y1, t] = step(fts, ti);
[y2, t] = step(ftc, ti);
figure(1)
plot(t, y1, 'k')
hold on
plot(t, y2, 'r')
grid
hold off
else
136

Melanio A. Coronado H.

end
title('Respuesta Paso - Sistema de segundo orden', 'Fontsize', 14, 'Fontweight', 'bold');
xlabel('Tiempo', 'Fontsize', 12, 'Fontweight', 'bold');
ylabel('Respuesta', 'Fontsize', 12, 'Fontweight', 'bold');
elseif get(handles.radiobutton2, 'Value') == 1;
% Ajuste de propiedades de controles
set(handles.text5, 'String', 'Pendiente');
set(handles.text6, 'Visible', 'off');
set(handles.edit6,'Visible','off');
% Captura de datos
tau = str2double(get(handles.edit1, 'String'));
fi = str2double(get(handles.edit2, 'String'));
ka = str2double(get(handles.edit3, 'String'));
ti = str2double(get(handles.edit4, 'String'));
p = str2double(get(handles.edit5, 'String'));
to = str2double(get(handles.edit7, 'String'));
% Funcin de transferencia y respuesta paso
if to == 0
fts = tf([ka*p], [tau^2 2*tau*fi 1 0]);
[y1, t] = step(fts, ti);
figure(1)
plot(t, p*t, 'r', t, y1/ka, 'k')
grid
elseif to > 0
fts = tf([ka*p], [tau^2 2*tau*fi 1 0]);
ftc = tf([ka*p], [tau^2 2*tau*fi 1 0], 'inputdelay', to);
[y1, t] = step(fts, ti);
[y2, t] = step(ftc, ti);
figure(1)
plot(t, p*t, 'r', t, y1/ka, 'k', t, y2/ka, 'b')
grid
end
title('Respuesta Rampa - Sistema de segundo orden', 'Fontsize', 14, 'Fontweight', 'bold');
xlabel('Tiempo', 'Fontsize', 12, 'Fontweight', 'bold');
ylabel('Respuesta', 'Fontsize', 12, 'Fontweight', 'bold');
elseif get(handles.radiobutton3, 'Value') == 1;
% Ajuste de propiedades de controles
set(handles.text5, 'String', 'Amplitud');
set(handles.text6, 'Visible', 'on');
set(handles.edit6,'Visible','on');
% Captura de datos
137

Melanio A. Coronado H.

tau = str2double(get(handles.edit1, 'String'));


fi = str2double(get(handles.edit2, 'String'));
ka = str2double(get(handles.edit3, 'String'));
ti = str2double(get(handles.edit4, 'String'));
p = str2double(get(handles.edit5, 'String'));
f = str2double(get(handles.edit6, 'String'));
to = str2double(get(handles.edit7, 'String'));
% Funcin de transferencia y respuesta paso
ftf = tf([p*f 0], [1 0 f^2]);
[yf, t] = step(ftf, ti);
if to == 0
fts = tf([ka*p*f 0], conv([1 0 f^2], [tau^2 2*tau*fi 1]));
[y1, t1] = step(fts, ti);
figure(1)
plot(t, yf, 'r');
hold on
plot(t1, y1, 'k');
hold off
elseif to > 0
fts = tf([ka*p*f 0], conv([1 0 f^2], [tau^2 2*tau*fi 1]));
ftc = tf([ka*p*f 0], conv([1 0 f^2], [tau^2 2*tau*fi 1]), 'inputdelay', to);
[y1, t1] = step(fts, ti);
[y2, t2] = step(ftc, ti);
figure(1)
plot(t, yf, 'r');
hold on
plot(t1, y1, 'k');
plot(t2, y2, 'b');
grid
hold off
end
title('Respuesta Seno - Sistema de segundo orden', 'Fontsize', 14, 'Fontweight', 'bold');
xlabel('Tiempo', 'Fontsize', 12, 'Fontweight', 'bold');
ylabel('Respuesta', 'Fontsize', 12, 'Fontweight', 'bold');
else
end

Se observa un lazo de control ifelseifelse..end que en su primer condicional


contiene el cdigo de programacin a desarrollarse para cuando la propiedad Value
capturada diga que el botn seleccionado es el radiobutton1 (Cambio Paso). Los
otros dos condicionales corresponden a las opciones del radiobutton2 (Cambio
Rampa) y el radiobutton3 (Cambio Seno)
138

Melanio A. Coronado H.

Seguidamente se hace el ajuste de la variable String del componente text5 y de la


variable Visible de los botones text6 y edit6 y a continuacin la captura de todos los
datos requeridos para la solucin de la ecuacin diferencial. Despus de lo anterior,
se plantean las funciones de transferencia y se construyen los grficos que
representan las respuestas deseadas. Estos se hacen desplegar en la ventana de
graficacin de Matlab y no en un control axes. En esta parte del programa se inserta
otro lazo de control ifelseifelseend que maneja el condicional para cuando se
considere que el tiempo muerto es cero o mayor que cero. A cada grfico se le
coloca un ttulo y las leyendas respectivas en cada uno de los ejes de representacin.

Funcin pushbutton2_Callback (Botn Cancelar)


El GUI se cierra presionando el botn con la leyenda Cancelar. A continuacin se
muestra el cdigo escrito para la function pushbutton2_Callback que debe ejecutarse
al presionar el botn Cancelar

% --- Executes on button press in pushbutton2.


function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
selection = questdlg(['Desea cerrar ' get(handles.figure1,'Name') '?'],...
[get(handles.figure1,'Name') '...'],...
'Yes','No','No');
if strcmp(selection,'No')
return;
end
clear, close all;

Antes de cerrarse el GUI se despliega una caja de dilogo de pregunta con un ttulo
una leyenda y dos botones de presin como la que muestra la Figura 8.9. El
condicional ifend cumple la funcin de determinar el botn de presin sobre el
cual se hizo clic. En caso de ser No no cierra el GUI, es decir, lo mantiene abierto y
en caso de presionar Yes cierra todos los objetos abiertos y borra toda la memoria.

Figura 8.9. Cuadro de dilogo de pregunta


139

Melanio A. Coronado H.

Funcin pushbutton3_Callback (Botn Ayuda)


El siguiente es el cdigo escrito como la funcin que se desarrolla al presionar el
botn Ayuda
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
helpwin('SISODOS.m')

Con el comando helpwin se despliega una ventana que muestra Matlab y que
contiene, a modo de ayuda, todo lo escrito como comentario en el archivo punto
eme (SISODOS.m) inmediatamente despus de la funcin encabezamiento de
todo el programa, en este caso function varargout = SISODOS(varargin). La
Figura 8.10 muestra la ventana de ayuda que se observa en este caso.

Figura 8.10. Ventana de ayuda de Matlab para el archivo SISODOS.m

Al comparar lo observado en la ventana de ayuda con lo escrito como comentario en


el archivo SISODOS.m se deduce que el contenido de la ayuda tiene dos partes:
SISODOS.m y See also, ambos escritos en color rojo. La primera parte es todo lo

140

Melanio A. Coronado H.

escrito despus del rengln % SISODOS M-file for SISODOS.fig y la segunda parte
es lo escrito a la derecha de % See also.

8.7. EJECUCIN DEL GUI


Al correr el GUI se despliega la ventana inicial que es la mostrada en la Figura 8.6.
Al presionar el botn Siguiente se despliega una caja de dilogo de barra de espera
como se muestra en la Figura 8.7(a) y despus de cerrarse la barra de espera la
interfaz final es la observada en la Figura 8.7 (b).
Se observa que el ttulo de la ventana es EDO SEGUNDO ORDEN SISO que es la
expresin que se asign como valor a la propiedad Name de la figura. El color del
fondo es el seleccionado dentro de una tabla de colores para la propiedad Color. Hay
un control Button Group que encierra las opciones de cambio en la variable de
entrada para seleccionar (Paso, Rampa y Seno). No son visibles los botones text6
(Frecuencia) y edit6 colocado a la derecha del anterior porque la propiedad Visible
de ellos se ajust, inicialmente, al valor off.
El manejo del GUI consiste, simplemente, en digitar en los controles sealados, los
datos requeridos para solucionar una ecuacin diferencial lineal de segundo orden
SISO y presionando el botn con la leyenda Graficar hacer desplegar la ventana de
Matlab con el cual se muestra el perfil grfico de la respuesta obtenida.

Respuesta paso de un sistema lineal de segundo orden SISO


En la Figura 8.11 (a) se muestran los valores asignados a cada uno de los parmetros
requeridos para obtener una solucin grfica a un cambio paso en la variable de
entrada y en la Figura 8.11 (b) se observa el resultado mostrado despus de
presionar el botn con leyenda Graficar.
Se pueden comprobar las caractersticas que debe mostrar este tipo de respuesta para
este tipo de sistema como el perfil de acuerdo al valor asignado al coeficiente de
amortiguamiento, el valor de la respuesta ltima, el tiempo de estabilizacin de la
respuesta, el significado de la constante de tiempo.
Se le sugiere al usuario hacer cambio en el valor de uno de los parmetros, presionar
el botn Graficar y analizar los cambios en la respuesta grfica. En especial, es
importante el cambio en la constante de tiempo, el coeficiente de amortiguamiento,
la ganancia, el tiempo muerto y la magnitud del cambio paso. La grfica de color
negro es la respuesta sin tiempo muerto y la de color rojo es la respuesta con tiempo

141

Melanio A. Coronado H.

muerto. En este caso, la respuesta es oscilatoria decreciente por el valor asignado al


coeficiente de amortiguamiento

(a)
(b)
Figura 8.11. (a) GUI y (b) Respuesta paso grfica
Ecuacin diferencial lineal de segundo orden SISO

Respuesta rampa de un sistema lineal de segundo orden SISO


En la interfaz que se tiene como lo muestra la Figura 8.11 (a) se tiene seleccionado
la opcin Cambio Paso. Al seleccionar la opcin Cambio Rampa se observa un
cambio en la leyenda Cambio Paso por la palabra Pendiente. Al digitar en el botn
de edicin de texto colocado a su derecha un valor de 0.5 y cambiar el tiempo de
simulacin a 50, el GUI y la respuesta grfica se observan como se muestra en la
Figura 8.12 despus de presionar el botn Graficar.
Se pueden comprobar las caractersticas que debe mostrar este tipo de respuesta para
este tipo de sistema como el perfil de acuerdo al valor asignado al coeficiente de
amortiguamiento.
Se le sugiere al usuario hacer cambio en el valor de uno de los parmetros, presionar
el botn Graficar y analizar los cambios en la respuesta grfica. En especial, es
importante el cambio en la constante de tiempo, el coeficiente de amortiguamiento,
la ganancia y el valor del tiempo muerto.
La grfica de color rojo es la variacin rampa en la variable de entrada, los perfiles
negro y azul son las respuestas sin tiempo muerto y con tiempo muerto,
respectivamente. En este caso, la respuesta es inicialmente oscilatoria con respecto a
la rampa de entrada y posteriormente toma un perfil lineal paralelo a la misma.

142

Melanio A. Coronado H.

(a)
(b)
Figura 8.12. (a) GUI y (b) Respuesta rampa grfica
Ecuacin diferencial lineal de segundo orden SISO

Respuesta seno de un sistema lineal de segundo orden SISO


En la interfaz que se tiene como lo muestra la Figura 8.12 (a) se tiene seleccionado
la opcin Cambio Rampa. Al seleccionar la opcin Cambio seno se observa un
cambio en la leyenda Pendiente por la palabra Amplitud y adicionalmente se hacen
visibles la leyenda Frecuencia y un botn de edicin de texto a su derecha. Al
digitar los valores observados en la Figura 8.13 (a) y presionar el botn Graficar se
despliega la respuesta grfica mostrada en la Figura 8.13 (b).

(a)

(b)

Figura 8.13. (a) GUI y (b) Respuesta seno grfica


Ecuacin diferencial lineal de segundo orden SISO

Comportamiento del botn Cancelar


Al presionar el botn Cancelar se despliega una caja de dilogo de pregunta que
interroga al usuario para que antes de cerrar definitivamente el GUI confirme con un
143

Melanio A. Coronado H.

Si o No su decisin. La Figura 8.14 muestra el despliegue de la caja de dilogo por


encima del GUI antes de presionar alguno de los botones con que se responde la
pregunta.

Figura 8.14. Caja de dilogo de pregunta

8.8. ASIGNACIONES
Hacer los cambios que se requieran en los parmetros del GUI de tal manera que se
obtengan
1.
2.
3.
4.

Respuesta paso sobreamortiguada


Respuesta rampa oscilatoria
Respuestas paso, rampa y seno sin tiempo muerto
Respuesta seno subamortiguada

144

Melanio A. Coronado H.

Leccin 9. CONTROL TOGGLE BUTTON


9.1. INTRODUCCIN.
En esta leccin se elabora un GUI para la solucin grfica de ecuaciones
diferenciales lineal SISO de primer y segundo orden para cambios paso y rampa en
la variable de entrada. La Figura 9.1 muestra el GUIDE construido para el GUI
anterior.

Figura 9.1. Interfaz grfica de usuario

En el GUIDE se instalan dos botones Button Group titulados Orden de la dinmica


y Funcin de entrada y tres botones paneles titulados Parmetros dinmicos,
Parmetros de entrada y Simulacin. El Button Group titulado Orden de la
dinmica encierra dos botones Toggle Button que aparecen con las leyendas Primer
orden y Segundo orden. El Button Group titulado Funcin de entrada encierra dos
radio botones con las leyendas Escaln y Rampa. En cada uno de los botones Button
Group, el botn que aparece seleccionado, por defecto, es el que se instala de
primero, con esto se ajusta su propiedad Value al valor de 1 y a cualquiera que se
instale posteriormente dicha propiedad se ajusta al valor 0 (cero). Por defecto se
muestra el botn de edicin para introducir el valor del cambio paso en la variable
de entrada y el botn de edicin para la frecuencia de un cambio seno en la variable
de entrada.
En el panel titulado Parmetros dinmicos se encierran tres botones Static Text con
las leyendas Ganancia, Constante de tiempo y Coeficiente de amortiguamiento,
cuatro botones Edit Text y un botn de conmutacin (Toggle Button) que aparece
145

Melanio A. Coronado H.

con la leyenda Sin tiempo muerto. La propiedad Enable del botn de texto esttico
Coeficiente de amortiguamiento y de dos botones de edicin de texto se ajusta
inicialmente al valor Off y la propiedad Value del botn Toggle Button titulado Sin
tiempo muerto se ajusta al valor 0 para que no aparezca resaltado en color o azul (o
seleccionado) al desplegar el GUI por primera vez.
En el panel titulado Parmetros de entrada se encierra un botn de texto esttico
con la leyenda Cambio paso y un botn de edicin de texto
En el panel titulado Simulacin se encierra un botn de texto esttico con la leyenda
Tiempo de simulacin, un botn de edicin de texto y un botn de presin o Push
Button con la leyenda Ver respuesta.
La Figura 6.1 muestra el GUIDE elaborado y cuya construccin y programacin se
explica en esta leccin. Se puede observar en la barra de ttulo del GUIDE que los
archivos se denominan UsandoElToggleButton.fig y UsandoElToggleButton.m.

9.2. CONTROL TOGGLE BUTTON (Botn de conmutacin)


El control Toggle Button es un control tipo push button que genera una accin e
indica si se encuentra en modo activo o inactivo. En el panel de ttulo Orden de la
dinmica se observa que el control Toggle Button con leyenda Primer orden se
encuentra resaltado con un color azul mientras que el control Toggle Button con
leyenda Segundo orden no lo muestra. Lo anterior indica que, al ejecutar el GUI, el
primer Toggle Button est activo mientras que el segundo est inactivo. Si se hace
un clic izquierdo sobre el toggle button con leyenda Segundo orden, entonces se
resalta el botn con el color azul mientras que el toggle button con leyenda Primer
orden se desvanece en su color. Lo anterior quiere decir que, ahora el botn activo
es el segundo toggle button
En el GUIDE mostrado en la Figura 9.1, los toggle button estn encerrados dentro
de un button group, es decir que estn administrados por este ltimo control que
solamente permite la seleccin de uno de ellos. Cuando el usuario presiona uno de
los botones button group, se activa la accin que el ejecuta y todos los otros se
desactivan. Al incluir en la programacin un button group, no se codifican callbacks
para los botones individuales encerrados en el grupo; a cambio de ello se utiliza el
callback SelectionChangeFcn para administrar las respuestas a las selecciones.
Despus de instalado el botn button group se selecciona con un clic derecho para
despegar un men contextual que incluye la opcin View Callbacks. (Observe la
Figura 9.2).

146

Melanio A. Coronado H.

Figura 9.2. Seleccin del callback para el control button group

Se nota entonces que al seleccionar esta ltima opcin se despliega otro pequeo
men contextual que incluye los diferentes tipos de callbacks aplicables al botn
button group. Entre las opciones se encuentra el callback tipo SelectionChangeFcn
que al seleccionarlo hace que se incluya dentro del archivo de extensin punto eme
de Matlab la funcin callaback correspondiente para el button group que se muestra
a continuacin.
% --- Executes when selected object is changed in uipanel1.
function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to the selected object in uipanel1
% eventdata structure with the following fields (see UIBUTTONGROUP)
% EventName: string 'SelectionChanged' (read only)
% OldValue: handle of the previously selected object or empty if none was selected
% NewValue: handle of the currently selected object
% handles structure with handles and user data (see GUIDATA)

Del cdigo anterior se deduce que la propiedad Tag del button group titulado Orden
de la dinmica se ha ajustado a su valor por defecto uipanel1. La propiedad Title
(Ttulo) se ha ajustado con la palabra Orden de la dinmica y la propiedad
TitlePosition (Posicin del ttulo) se ha ajustado al valor lefttop (Posicin superior
izquierda) seleccionado del men contextual situado a la derecha del nombre de la
propiedad.

SelectionChangeFcn (Propiedad String o funcin handle)


Es una rutina Callback que se ejecuta cuando cambia la seleccin del radio botn o
del botn de comando que encierra el button group. Si esta rutina es invocada como
una funcin, handle uibuttongroup le transfiere dos argumentos. El primer
147

Melanio A. Coronado H.

argumento, source, es el handle del uibuttongroup y el segundo argumento,


eventdata, es una estructura de datos de eventos que contiene los campos que se
muestran en la siguiente table.

Campo de la estructura
Event Data

Descripcin

EventName

'SelectionChanged'

OldValue

Handle del objeto seleccionado antes del


envento. [] si no se seleccion alguno.

NewValue

Handle del objeto seleccionado actual.

Si se tiene un button group que contiene un grupo de botones de opcin y/o


conmutacin y se quiere que ocurra una accin inmediata cuando se seleccione uno
de ellos, se debe incluir el cdigo que controla los botones de opcin o de
conmutacin dentro de la funcin callback SelectionChangeFcn del button group y
no en las funciones callback de los botones de opcin o conmutacin.
Si se quiere que otro componente, como por ejemplo un botn de presin, base su
accin en la seleccin del botn de opcin o conmutacin, entonces el callback de
dicho componente puede capturar el handle del botn de opcin o conmutacin
seleccionado desde la propiedad SelectedObject del control button group.
El siguiente cdigo es el callback SelecctionChangeFcn del button group instalado
en el GUIDE mostrado en la Figura 9.1 y cuya propiedad Tag es uipanel1, razn por
la cual la function se llama uipanel1_SelectionChangeFcn(hObject, eventdata,
handles).

% --- Executes when selected object is changed in uipanel1.


function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to the selected object in uipanel1
% eventdata structure with the following fields (see UIBUTTONGROUP)
% EventName: string 'SelectionChanged' (read only)
% OldValue: handle of the previously selected object or empty if none was selected
% NewValue: handle of the currently selected object
% handles structure with handles and user data (see GUIDATA)
switch get(eventdata.NewValue, 'tag')
148

Melanio A. Coronado H.

case 'togglebutton1'
set(handles.text3, 'enable', 'off')
set(handles.edit3, 'enable', 'off')
case 'togglebutton2'
set(handles.text3, 'enable', 'on')
set(handles.edit3, 'enable', 'on')
end

En el cdigo se captura la propiedad Tag del objeto seleccionado con la sentencia


get(eventdata.NewValue, 'Tag') y mediante un lazo de control switch se plantean los
cdigos a ejecutar segn la propiedad Tag del botn de opcin seleccionada y
capturada (las propiedades Tag de los botones de conmutacin son togglebutton1 y
radiobutton2). La propiedad Tag de cada componente es un string que identifica a
ese componente y que debe ser nico en el GUI.
Los argumentos hObject and eventdata estn disponibles en los callback solamente
si el valor de la propiedad Callback es especificada como una funcin handle.

9.3. ECUACIN DIFERENCIAL LINEAL SISO


Las ecuaciones diferenciales lineales SISO de primer y segundo orden, en trminos
de las variables desviacin son:

dY (t )
Y (t ) KX (t )
dt

d 2Y (t )
dY (t )

2
Y (t ) KX (t )
2
dt
dt
2

(9.1)

(9.2)

La constante K recibe la denominacin de ganancia en estado estacionario del


sistema, puesto que representa la relacin entre la variable de salida y(t) y la variable
de entrada x(t) para t . La constante , que tiene dimensin de tiempo, se llama
constante de tiempo del sistema y representa un atraso dinmico. El coeficiente de
amortiguamiento es una caracterstica de los sistemas de segundo orden
determinante del tipo de estabilidad de la respuesta. Las funciones de transferencia
correspondientes a las ecuaciones 9.1 y 9.2 son las siguientes:

G(s)

Y ( s)
K

X ( s) s 1

(9.3)

149

Melanio A. Coronado H.

G( s)

Y ( s)
K
2
X ( s) s 2 s 1

(9.4)

Se desarrollan a continuacin las respuestas de un sistema diferencial lineal de


primer orden a cambios en la entrada que presentan especial inters en las
aplicaciones como son las respuesta paso, rampa y seno.

Respuestas de un sistema lineal de primer orden


A continuacin se muestran las respuestas paso y pendiente de un sistema lineal de
primer orden SISO como un concepto bsico relacionado con el desarrollo del GUI
de esta leccin.

Respuestas paso
Para este tipo de cambio en la variable de entrada, la transformada de Laplace de la
respuesta de un sistema lineal de primer orden SISO es dada as:
1 Kh
Y ( s)
s s 1

(9.5)

Siendo h la magnitud del cambio paso. La forma de la ecuacin (9.5) hace fcil la
obtencin de su respuesta grfica porque basta con aplicar el comando step a la
expresin encerrada dentro del corchete.

Respuesta rampa
Para este tipo de cambio en la variable de entrada, la transformada de Laplace de la
respuesta de un sistema lineal de primer orden SISO es dada as:

Y (s)

r
s2

K 1 Kr
s 1 s s 2 s

(9.6)

Siendo r la magnitud de la pendiente del cambio rampa. La forma de la ecuacin


(9.6) hace fcil la obtencin de su respuesta grfica porque basta con aplicar el
150

Melanio A. Coronado H.

comando step a la expresin encerrada dentro del corchete. Tngase en cuenta que el
denominador es de un grado tres.

Respuestas de un sistema lineal de segundo orden


A continuacin se muestran las respuestas paso y pendiente de un sistema lineal de
primer orden SISO como un concepto bsico relacionado con el desarrollo del GUI
de esta leccin.

Respuesta paso
Para este tipo de cambio en la variable de entrada, la transformada de Laplace de la
respuesta del sistema es dada as:

1
Kh
Y ( s) 2 2
s s 2 s 1

(9.7)

Siendo h la magnitud del cambio paso. La forma de la ecuacin (9.7) hace fcil la
obtencin de su respuesta grfica porque basta con aplicar el comando step a la
expresin encerrada dentro del corchete.

Respuesta rampa
Para este tipo de cambio en la variable de entrada, la transformada de Laplace de la
respuesta del sistema es dada as:

Y ( s)

r
s2

K
Kr
2 s 2 2 s 1 s 2 s 3 2 s 2 s

(9.8)

Siendo r la magnitud de la pendiente del cambio rampa. La forma de la ecuacin


(9.8) hace fcil la obtencin de su respuesta grfica porque basta con aplicar el
comando step a la expresin encerrada dentro del corchete. Tngase en cuenta que el
denominador es de un grado tres.

151

Melanio A. Coronado H.

Tiempo Muerto
El tiempo muerto es un atraso adicional al dinmico, que se observa en la respuesta
de un sistema y que se atribuye al tiempo que se requiere para transportar el efecto
de la perturbacin del sistema hasta puntos localizados a una cierta distancia. En el
dominio de Laplace este atraso se observa en la inclusin de un trmino exponencial
en la funcin de transferencia. Para sistemas SISO de primer y segundo orden lineal,
las funciones de transferencia con tiempo muerto corresponden a las siguientes
ecuaciones
Primer Orden:

Ke sto
Y ( s)
X (s)
s 1

Segundo Orden:

Ke sto
Y (s) 2 2
X ( s)
s 2s 1

Las respuestas grficas muestran claramente el atraso en la respuesta del sistema


cuando se observa un tiempo muerto.

9.4. CONFIGURACIN DEL GUI


A continuacin se describe la elaboracin de una interfaz grfica que facilite, al
usuario de Matlab, la solucin grfica de una ecuacin diferencial lineal de primero
y segundo orden SISO mediante la introduccin de los parmetros dinmicos y las
condiciones iniciales de un sistema, el tipo de perturbacin en la variable de entrada
con sus correspondientes especificaciones y la consideracin de un tiempo muerto
en el transporte dinmico. Para ello se instalan en el GUIDE un conjunto de
elementos (o controles) que o muestran leyendas (Static Text) o capturen datos (Edit
Text) o seleccionan procedimientos (Radio Button, Toggle Button) o ejecutan
procedimientos (Push Button)

Instalacin de los controles en la interfaz de usuario GUI:


Una vez iniciado GUIDE, en el rea de diseo se instalan los diferentes controles y
se observa una interfaz con la configuracin que muestra la Figura 9.1. Para todos
los controles se deja la propiedad Tag con sus asignaciones por defecto. Al archivo
se le asigna el nombre UsandoElToggleButton.fig y UsandoElToggleButton.m.

152

Melanio A. Coronado H.

1. Controles Button Group: Se instalan dos controles de esta clase (uipanel1 y


uipanel3) para encerrar controles de tipo Toggle Button y Radio Button. En el
control uipanel1 se encierran los controles de conmutacin Primer orden y
Segundo orden que se presionan para seleccionar el tipo de ecuacin
diferencial que se quiere resolver y en el control uipanel3 se encierran los
controles de opcin Escaln y Rampa para seleccionar el tipo de cambio en la
variable de entrada de la ecuacin diferencial.
2. Controles Toggle Button: Se instalan tres controles de esta clase
(togglebutton1, togglebutton2 y togglebutton5) con leyendas Primer orden,
Segundo orden y Sin tiempo muerto.
Propiedad Value de los botones de comando
La propiedad Value de un botn de comando es de tipo binario (valor uno o
cero), de modo que cuando el botn es seleccionado toma el valor de uno, en
caso contrario es cero. El propsito de los botones de comando es generar y
activar una accin cuando se presiona y cuando se vuelve a presionar se
desactiva la accin que puede generar.
El Toggle Button con leyenda Primer orden al instalarlo, dentro del Button
Group con propiedad Tag uipanel1, automticamente se ajusta su propiedad
Value al valor 1 lo que hace que aparezca resaltado en color azul y hace que
al desplegarse el GUI sea el botn de comando activado. El Toggle Button
con leyenda Segundo orden, instalado dentro del mismo Button Group, ajusta
su propiedad Value al valor 0, lo que hace que al desplegarse el GUI el botn
de comando est desactivado. El Toggle Button con leyenda Sin tiempo
muerto se le ajusta su propiedad Value al valor 0 para que se encuentre
desactivado cuando se despliegue el GUI.
3. Controles Radio Button: Se instalan dos controles de esta clase
(radiobutton1 y radiobutton2) para seleccionar el tipo de cambio en la
variable de entrada que se quiere aplicar a la ecuacin diferencial. Se asignan
las propiedades String con las leyendas que se observan en la Figura 9.1, es
decir, Escaln y Rampa.
Los radio botones estn encerrados dentro de un control Button Group cuya
propiedad Tag es la asignada por defecto, es decir uipanel3. El primero de los
radio botones instalados (Escaln) se ajusta su propiedad Value al valor de 1
en forma automtica, de tal manera que al instalar el segundo radio botn
(Rampa) su propiedad Value queda ajustada al valor 0.

153

Melanio A. Coronado H.

3. Controles Static Text: Se instalan cinco controles de esta clase (text1, text2,
text3, text5 y text8) para anexar leyendas a los botones (Edit Text) donde se
introducen datos requeridos para la solucin de la ecuacin diferencial. Se
asignan las propiedades String con las leyendas que se observan en la
Figura 9.1, es decir, Ganancia, Constante de Tiempo, Coeficiente de
amortiguamiento, Cambio paso y Tiempo de simulacin.
El botn de texto esttico (text5) cuya propiedad String se ajusta a la leyenda
Cambio paso cambia el valor de dicha propiedad a la leyenda Pendiente
cuando se seleccione el radio botn con leyenda Rampa
Propiedad Enable de los botones de texto
La propiedad Enable de un botn de texto (tanto esttico como de edicin) es
de tipo binario (valor off - on), de tal manera que cuando se le asigna a la
propiedad el valor off el botn sea visible pero inactivo y cuando se le asigna
a la propiedad el valor on el botn es visible y activo.
El botn de texto esttico (text3) con leyenda Coeficiente de amortiguamiento
se le ha ajustado su propiedad Enable al valor off para que se observe pero en
forma inactiva al desplegarse el GUI por primera vez o cuando se encuentre
activo el Toggle Button con leyenda Primer orden.
4. Controles Edit Text: Se instalan seis controles de esta clase (edit1, edit2,
edit3, edit4, edit5 y edit8) para que el usuario introduzca los parmetros
requeridos para la solucin de la ecuacin diferencial (Ganancia, Constante
de tiempo, Coeficiente de amortiguamiento, Tiempo muerto, Cambio paso, y
Tiempo de simulacin). Los valores asignados, por defecto, a la propiedad
String de cada uno de ellos son los que se observan en la Figura 9.1.
A dos botones de edicin de texto (edit3 y edit4) se le ha ajustado su
propiedad Enable al valor off para que se observen pero en forma inactiva al
desplegarse el GUI por primera vez o cuando se encuentre activo el Toggle
Button con leyenda Primer orden o cuando se encuentre inactivo el Toggle
Button con leyenda Sin tiempo muerto
5. Controles Push Button: Se instalan un botones de presin para ejecutar, el
GUI. A la propiedad String se le asigna el nombre Ver respuesta.
6. Controles Panel: Se instalan tres botones de esta clase (uipanel2, unipanel5
y uipanel6) para encerrar los botones en cuadros separados para observarlos
agrupados dentro de un marco. El uipanel 2 encierra tres botones de texto
esttico (text1, text2 y text3), cuatro botones de edicin de texto (edit1, edit2,
154

Melanio A. Coronado H.

edit3 y edit4) y un botn de comando (togglebutton5). El uipanel5 encierra


un botn de texto esttico (text5) y un botn de edicin de texto (edit5). El
uipanel6 encierra un botn de texto esttico (text8), un botn de edicin de
texto (edit8) y un botn de presin (pushbutton1). A cada uno de los paneles
instalados se le asigna la propiedad Title con el nombre de Parmetros
dinmicos, Parmetros de entrada y Simulacin, respectivamente. La
propiedad TitlePosition (posicin del nombre del ttulo) a lefttop
(izquierda arriba)

Corrida del GUI


Concluida la instalacin y distribucin de los componentes del GUI se puede correr
con el objeto de verificar que los controles se despliegan como se explica
anteriormente cuando se inicia el GUI (Ver Figura 9.3).

Figura 9.3. GUI al inicio de su corrida

Terminada la configuracin del GUI se puede proceder a la elaboracin del cdigo


de programacin para el funcionamiento de la interfaz. Para ello presione el botn
M-File Editor de la barra de herramientas para acceder al editor de MatLab para su
construccin.
155

Melanio A. Coronado H.

9.5. PROGRAMACIN DEL GUI


La programacin se explica empezando por describir el cdigo elaborado para el
grupo de botones titulado Orden de la dinmica considerando que dentro de l se
encuentran los botones con quienes se elige el orden de la dinmica que se quiere
resolver.
Con una alguna consideracin secuencial, se explica despus el cdigo elaborado
para el grupo de botones titulado Funcin de entrada debido a que dentro de l se
encuentran los botones con quienes se elige el tipo de cambio en la variable de
entrada.
Por tratarse del objeto de esta leccin, se explica posteriormente el cdigo elaborado
para el botn con propiedad Tag ajustada al valor togglebutton5 y que aparece en el
GUI con la leyenda Sin tiempo muerto.
Finalmente, se explica el cdigo elaborado para que se ejecuten las acciones de
solucin de la ecuacin diferencial cuando se presione el botn con leyenda Ver
respuesta y cuya propiedad Tag es pushbutton1. Las ecuaciones diferenciales se
transforman en el dominio de Laplace, es decir, se plantean sus funciones de
transferencia y se le aplican las operaciones requeridas para obtener la respuesta
mediante la aplicacin de un cambio paso.

Button Group Orden de la dinmica (uipanel1)


Como quiera que la propiedad Tag de este botn es uipanel1 y encierra a un par de
botones de tipo Toggle Button, su funcin es del tipo SelecstionChangeFcn y por lo
tanto el nombre completo de la funcin es uipanel1_SelectionChageFcn (hObject,
eventdata, handles). El cdigo elaborado para dicha funcin es el que se muestra a
continuacin:

% --- Executes when selected object is changed in uipanel1.


function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to the selected object in uipanel1
% eventdata structure with the following fields (see UIBUTTONGROUP)
% EventName: string 'SelectionChanged' (read only)
% OldValue: handle of the previously selected object or empty if none was selected
% NewValue: handle of the currently selected object
% handles structure with handles and user data (see GUIDATA)
switch get(eventdata.NewValue, 'Tag')
156

Melanio A. Coronado H.

case 'togglebutton1'
set(handles.text3, 'enable', 'off')
set(handles.edit3, 'enable', 'off')
case 'togglebutton2'
set(handles.text3, 'enable', 'on')
set(handles.edit3, 'enable', 'on')
end

En el cdigo se captura la propiedad Tag del objeto seleccionado con la sentencia


get(eventdata.NewValue, 'Tag') y mediante un lazo de control switch se plantean los
cdigos a ejecutar segn la propiedad Tag del botn de comando seleccionado. Si se
presiona o selecciona el botn de comando cuya propiedad Tag es togglebutton1 se
ajusta la propiedad Enable de los botones text3 y edit3 al valor off, es decir se hacen
visibles pero inactivos, pero si se presiona o selecciona el botn de comando cuya
propiedad Tag es togglebutton2 se ajusta la propiedad Enable de los botones text3 y
edit3 al valor on, es decir se hacen visibles y activos. El usuario puede hacer las
verificaciones de lo propuesto en el cdigo.

Button Group Funcin de entrada (uipanel3)


Como quiera que la propiedad Tag de este botn es uipanel3 y encierra a un par de
botones de tipo Radio Button su funcin es del tipo SelecstionChangeFcn y por lo
tanto el nombre completo de la funcin es uipanel3_SelectionChageFcn (hObject,
eventdata, handles). El cdigo elaborado para dicha funcin es el que se muestra a
continuacin:
% --- Executes when selected object is changed in uipanel3.
function uipanel3_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to the selected object in uipanel3
% eventdata structure with the following fields (see UIBUTTONGROUP)
% EventName: string 'SelectionChanged' (read only)
% OldValue: handle of the previously selected object or empty if none was selected
% NewValue: handle of the currently selected object
% handles structure with handles and user data (see GUIDATA)
switch get(eventdata.NewValue, 'tag')
case 'radiobutton1'
set(handles.text5, 'string', 'Cambio paso')
case 'radiobutton2'
set(handles.text5, 'string', 'Pendiente')
end

157

Melanio A. Coronado H.

En el cdigo se captura la propiedad Tag del objeto seleccionado con la sentencia


get(eventdata.NewValue, 'Tag') y mediante un lazo de control switch se plantean los
cdigos a ejecutar segn la propiedad Tag del botn de comando seleccionado. Si se
presiona o selecciona el botn de opcin cuya propiedad Tag es radiobutton1
(Respuesta Escaln) se ajusta la propiedad String del botn text5 al valor Cambio
paso, pero si se presiona o selecciona el botn de comando cuya propiedad Tag es
radiobutton2 (Respuesta Rampa) se ajusta la propiedad String del botn text5 al
valor Pendiente. El usuario puede hacer las verificaciones de lo propuesto en el
cdigo

Toggle Button Sin tiempo muerto (togglebutton5)


Como quiera que la propiedad Tag de este botn es togglebutton5 y su accin se
ejecuta al presionarlo su funcin es del tipo Callback y por lo tanto el nombre
completo de la funcin es uipanel5_Callback (hObject, eventdata, handles). El
cdigo elaborado para dicha funcin es el que se muestra a continuacin:

% --- Executes on button press in togglebutton5.


function togglebutton5_Callback(hObject, eventdata, handles)
% hObject handle to togglebutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of togglebutton5
if get(hObject, 'value') == true
set(hObject, 'string', 'Con tiempo muerto')
set(handles.edit4, 'enable', 'on')
else
set(hObject, 'string', 'Sin tiempo muerto')
set(handles.edit4, 'enable', 'off')
end

En el cdigo se captura la propiedad Value del objeto seleccionado con la sentencia


get(hObject, 'value') == true y mediante un lazo de control if se plantean los cdigos
a ejecutar segn que se satisfaga el condicional anterior. Si se presiona el botn de
comando y la propiedad Value es true (verdadera o igual a 1) se ajusta la propiedad
String del botn togglebutton5 al valor Con tiempo muerto y se ajusta la propiedad
Enable del botn edit4 a la propiedad on (se hace visible y activo), pero si se
presiona o selecciona el botn de comando y la propiedad Value no es igual a true
(no es verdadera o igual a 0) se ajusta la propiedad String del botn togglebutton5 al
valor Sin tiempo muerto y se ajusta la propiedad Enable del botn edit4 a la

158

Melanio A. Coronado H.

propiedad off (es visible pero inactivo), El usuario puede hacer las verificaciones de
lo propuesto en el cdigo

Push Button Ver respuesta (pushbutton1)


En este cdigo se encuentran las funciones de botones que no se han incluido en las
descripciones anteriores como los de edicin de texto y se explica el procedimiento
para la solucin grfica de la ecuacin diferencial seleccionada. La funcin se llama
function pushbutton1_Callback(hObject, evendata, handles) y las rdenes son las
siguientes:

% --- 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)
% procesa los parametros dinamicos
K = str2double(get(handles.edit1, 'string'));
Tau = str2double(get(handles.edit2, 'string'));
Xi = str2double(get(handles.edit3, 'string'));
if get(handles.togglebutton1, 'value') == true
num = K;
den = [Tau 1];
elseif get(handles.togglebutton2, 'value') == true
num = K;
den = [Tau^2 2*Tau*Xi 1];
end
% procesa el tiempo muerto
T0 = str2double(get(handles.edit4, 'string'));
if get(handles.togglebutton5, 'value') == false
T0 = 0;
end
% Tiempo de simlulacion
Tf = str2double(get(handles.edit8, 'string'));
% evalua la funcion de transferencia con la respectiva entrada
fg = figure();
if get(handles.radiobutton1, 'value') == true
159

Melanio A. Coronado H.

G = tf(num, den, 'inputdelay', T0);


step(G, Tf)
elseif get(handles.radiobutton2, 'value') == true
G = tf(num, [den 0], 'inputdelay', T0);
step(G, Tf)
end

El programa est dividido en tres secciones precedidas de un comentario y cuya


descripcin es la siguiente:
Debajo del comentario % procesa los parametros dinmicos se capturan las
propiedades String en los botones de edicin de texto edit1, edit2 y edit3 y se
asignan a los parmetros K (Ganancia), Tau (Constante de tiempo) y Xi (Coeficiente
de amortiguamiento), como valores numricos previa conversin. Con el lazo de
control ifelseifend se captura inicialmente el botn de conmutacin o Toggle
Button seleccionado y segn se satisfaga el condicional se escribe la funcin de
transferencia para un sistema de primer orden o de segundo orden.
Debajo del comentario % procesa el tiempo muerto se captura la propiedad String
del botn de edicin de texto edit4 y se asigna al parmetro To (Tiempo muerto),
como valor numrico previa conversin. Con el lazo de control ifend se captura el
valor de la propiedad Value del botn de conmutacin togglebutton5, si es falso
(valor de la propiedad igual a 0) quiere decir que la seleccin activa es la de un
sistema Sin tiempo muerto razn por lo cual se ajusta el valor del To (Tiempo
muerto) a un valor de 0.
Debajo del comentario % Tiempo de simulacin se captura la propiedad String del
botn de edicin de texto edit8 y se asigna al parmetro Tf (Tiempo de simulacin),
como valor numrico previa conversin. Con el lazo de control ifelseifend se
captura inicialmente el botn de conmutacin o Toggle Button seleccionado y segn
se satisfaga el condicional se escribe la funcin de transferencia para un sistema de
primer orden o de segundo orden.
Debajo del comentario % evalua la funcion de transferencia con la respectiva
entrada primero se declara la apertura de una ventana de imagen asignada al
parmetro fg. Con el lazo de control ifelseifend se captura la propiedad Value
del radiobutton1 (Escaln) y se comprueba si es cierto el valor de dicha propiedad,
si el condicional es verdadero se plantea la funcin de transferencia para aplicarle el
comando step y con esto obtener la respuesta grfica; pero si no es verdadero el
condicional, se verifica si la propiedad Value del radiobutton2 (Rampa) es cierta y si
se cumple el condicional se plantea la funcin de transferencia con el denominador
amplificado para aplicarle el comando step y hallar de esta manera la respuesta
grfica de un cambio Rampa.
160

Melanio A. Coronado H.

9.6.

EJECUCIN DEL GUI

La interfaz completamente elaborada en su configuracin y programacin se


encuentra en condiciones de ensayar su ejecucin y cuando se despliega por primera
vez el GUI se observa como lo muestra la Figura 9.3. Si se ejecuta el GUI con los
valores y selecciones por defecto, se obtiene la repuesta escaln de un sistema lineal
de primer orden SISO sin tiempo muerto como lo muestra la Figura 9.4.

Figura 9.4. Respuesta paso de un sistema lineal de primer orden SISO

Al presionar el toggle button con leyenda Segundo orden se observa que se activan
el botn de texto esttico con leyenda Coeficiente de amortiguamiento y el botn de
edicin de texto que est a su derecha y que por defecto muestra un valor de 0.5. Si
se presiona el botn Ver respuesta se despliega la respuesta grfica para un sistema
de segundo orden subamortiguado como lo muestra la Figura 9.5.

Figura 9.5. Respuesta paso de un sistema lineal de segundo orden SISO


161

Melanio A. Coronado H.

Si ahora se presiona el botn Sin tiempo muerto y se ejecuta el GUI con tiempo
muerto asignando un valor de 2 en el botn de edicin de texto que aparece
colocado a su derecha se observa una respuesta grfica similar a la anterior pero con
un tiempo muerto de 2 unidades de tiempo. (Observe la Figura 9.6)

Figura 9.6. Respuesta paso de un sistema de segundo orden con tiempo muerto
Si ahora se presiona el radio botn Rampa y se dejan todos los valores asignados
anteriormente, se obtiene la respuesta rampa subamortiguada de un sistema de
segundo orden lineal como la que muestra la Figura 9.7.

Figura 9.7. Respuesta rampa con tiempo muerto de un sistema de segundo orden
lineal

162

Melanio A. Coronado H.

Leccin 10. CONTROL LISTBOX


10.1. INTRODUCCIN.
En esta leccin se elabora un GUI para la estimacin del volumen de un gas a partir
de la ecuacin de estado de los gases ideales y las ecuaciones de estado cbicas
debidas a Van der Waals, Redlich-Kwong, Soave-Redlich-Kwong y Peng-Robinson.
Observe la Figura 10.1.

(a)

(b)

Figura 10.1. (a) GUIDE (b) GUI

En el GUIDE elaborado, toda la construccin se encierra dentro de un panel sin


ttulo, dentro de un botn Static Text se coloca un ttulo ESTIMACION DEL
VOLUMEN DE UN GAS, los nombres de las ecuaciones anteriores se colocan
dentro de un control Listbox en donde se har la seleccin de una de ellas (arriba de
este se coloca un botn Static Text con la leyenda Ecuaciones de Estado), en el
panel titulado Condiciones de operacin se agrupan los tres botones Edit Text en
donde se digitan la temperatura, la presin y el nmero de moles del gas (los tres
primeros) en el panel titulado Propiedades crticas se digitan los valores de la
temperatura crtica, la presin crtica y la temperatura de ebullicin normal de la
sustancia porque dichos valores se requieren en las ecuaciones cbicas de estado
anteriores y en el panbel titulado Volumen estimado aparece el botn Edit text donde
se despliega el resultado del volumen calculado. En el botn axes1 se despliega una
163

Melanio A. Coronado H.

imagen representativa de un tomo. El GUIDE y el GUI se elabora mediante los


archivos
denominados
Ecuacionescubicas_proyecto.m
y
Ecuacionescubicas_proyecto.fig que se explican a continuacin.
El color observado en el fondo de la figura se seleccion desplegando el Inspector
de propiedades y seleccionando el cuadro de colores anexo a la propiedad Color. En
forma similar se procedi para la seleccin del color del fondo de los otros botones,
pero en este caso la propiedad correspondiente es BackgroundColor.
Se observan, adems, tres botones de presin, con el de leyenda Calcular se ejecuta
el clculo del volumen con los datos insertados, con el de leyenda Reset se reinicia
la interfaz para disponerla para un nuevo uso y con el de leyenda Salir se cierra el
GUI previa confirmacin a travs de una caja de dilogo.

10.2. ECUACIONES DE ESTADO CBICAS


Las ecuaciones cbicas de estado son ciertas ecuaciones de grado tres con respecto
al volumen que relacionan a ste con la presin y la temperatura de una sustancia.
Algunas de las ecuaciones cbicas de estado contienen dos parmetros y pueden
escribirse en forma generalizada as:

RT
a
2
V b V ubV wb 2

(10.1)

Siendo a y b los parmetros de la ecuacin que dependen de las propiedades crticas


de la sustancia, mientras que u y w son valores fijos para cada una de las diferentes
ecuaciones.
Una forma equivalente de la ecuacin (10.1) es la siguiente para el factor de
compresibilidad Z:
Z 3 (1 B* uB* )Z 2 ( A* wB*2 uB* uB*2 )Z A* B* wB*2 wB*3 0

Siendo

A*

(10.2)

aP
bP
y B*
2 2
RT
RT

164

Melanio A. Coronado H.

Cuatro ecuaciones de estado cbicas muy conocidas son las de Van der Waals,
Redlich-Kwong (RK), Soave-Redlich-Kwong (SRK) y Peng-Robinson (PR). Para
estas cuatro ecuaciones u y w tienen valores enteros y cuyos valores son los que
aparecen en la Tabla 10.1.

Tabla 10.1. Constantes para las Ecuaciones de estado cbicas

Ecuacin

Van der Waals

RTc
8 Pc

0.08664 RTc
Pc

Soave-Redlich-Kwong 1

0.08664 RTc
Pc

Redlich-Kwong

a
27 R 2Tc
64 Pc

2.5

0.42748R 2Tc
PcT 0.5

0.42748R 2Tc
1 f 1 Tr0.5
Pc

f 0.48 1.574 0.176 2


Peng-Robinson

-1

0.07780 RTc
Pc

0.45724 R 2Tc
1 f 1 Tr0.5
Pc

f 0.37464 1.54226 0.26992 2

Se observa, en la Tabla 10.1, que los parmetros a y b para las cuatro ecuaciones
cbicas son funciones de la temperatura crtica Tc y la presin crtica Pc , pero en las
ecuaciones de Soave-Redlich-Kwong y Peng-Robinson, el parmetro a depende,
adicionalmente, del factor acntrico . La ecuacin utilizada, en esta leccin, para
calcular el factor acntrico de una sustancia es:

Siendo

3
log Pc 1
7 1

(10.3)

Tb
y Tb la temperatura de ebullicin normal de la sustancia.
Tc

165

Melanio A. Coronado H.

10.3. CONFIGURACIN DEL GUI


A continuacin se describe la elaboracin de una interfaz grfica que facilite, al
usuario de Matlab, la solucin de la ecuacin cbica de estado seleccionada
mediante la introduccin de los valores de las condiciones de operacin y los valores
de las propiedades crticas de la sustancia problema. Para ello se instalan en el
GUIDE un conjunto de elementos (o controles) que o muestran leyendas (Static
Text) o capturen o muestren datos (Edit Text) o seleccionan una opcin (ListBox) o
ejecutan procedimientos (Push Button)

Instalacin de los controles en la interfaz de usuario GUI:


Una vez iniciado GUIDE, en el rea de diseo se instalan los diferentes controles y
se observa una interfaz con la configuracin que muestra la Figura 10.1. Para todos
los controles se deja la propiedad Tag con sus asignaciones por defecto.
1. Controles Panel: Se instalan cuatro controles de esta clase (uipanel1,
uipanel2, uipanel3 y uipanel4) para encerrar, en cada uno, varios controles.
En el uipanel 1 se encierran todos los otros controles insertados en el GUIDE
con el objeto de que el GUI se vea como un marco. La propiedad Title del
uipanel1 se deja sin nombre. En el uipanel2 se instalan tres controles de tipo
Static Text y tres controles de tipo Edit Text. La propiedad Title del uipanel2
se ajusta a la expresin Condiciones de operacin y la propiedad
TitlePosition se ajusta al valor centertop. En el control uipanel3 se instalan
tres controles de tipo Static Text y tres controles de tipo Edit Text. La
propiedad Title del uipanel2 se ajusta a la expresin Propiedades crticas y la
propiedad TitlePosition se ajusta al valor centertop. En el control uipanel4 se
instala un control de tipo Static Text y un control de tipo Edit Text. La
propiedad Title del uipanel2 se ajusta a la expresin Volumen estimado y la
propiedad TitlePosition se ajusta al valor centertop. El color observado en el
fondo de cada uno de los paneles se asigna ajustando la propiedad
BackgroundColor.
2. Control Axes: Este control se instala con el objeto de mostrar una imagen de
un tomo cuando se abra el GUI. Todas sus propiedades se dejan en los
valores asignados por defecto.
3. Controles Static Text: Se instalan nueve controles de esta clase (text1, text2,
text3, text4, text5, text6, text7, text8 y text9) para anexar leyendas ilustrativas
dentro del GUI. Se asignan las propiedades String con las leyendas que se
observan en la Figura 10.1, es decir, ESTIMACION DEL VOLUMEN DE
166

Melanio A. Coronado H.

UN GAS, Ecuaciones de estado, Temperatura, C, Presion, Bar,


Moles, Moles, Temperatura crtica, C, Presin crtica, Bar,
Temperatura de ebullicin normal, C y Volumen, Litros. Todas las
otras propiedades se dejan en los valores asignados por defecto
4. Control Listbox: Se instalan un control de esta clase (listbox1) para presentar
la lista de los nombres de las ecuaciones cbicas de estado que se dispondrn
para que el usuario seleccione una de ellas. Para lo anterior se ajusta la
propiedad String con los nombres Ideal, Van der Waals, Redlich Kwong,
Soave-Redlich-Kwong y Peng-Robinson. La Figura 10.2 muestra la ventan
Inspector de Propiedades del botn listbox1 en donde se ha presionado el
icono que aparece a la derecha del cuadro String y con ello se ha desplegado
un cuadro donde se digitan las asignaciones anteriores.

Figura 10.2. Propiedad String del botn listbox1

Propiedad Value de los botones listbox


La propiedad Value de un botn de lista (listbox) es de tipo numrico. En la
Figura 10.2 se observa que cuando la propiedad String seleccionada es la
opcin Ideal, la propiedad Value correspondiente tiene como valor 1. (Esta es
la opcin que se despliega por defecto en el GUI).
Se da una asociacin entre la propiedad String y la propiedad Value en forma
tal que a la propiedad Value se le asigna el valor numrico que le corresponde
167

Melanio A. Coronado H.

a la propiedad String siguiendo, en orden ascendente, la escritura de los


valores de esta ltima. Es decir, que la correspondencia es Propiedad String
Ideal Propiedad Value 1, Propiedad String Van der Waals Propiedad
Value 2, Propiedad String Redlich-Kwong Propiedad Value 3, Propiedad
String Soave-Redlich-Kwong Propiedad Value 4, Propiedad String PengRobinson Propiedad Value 5
4. Controles Edit Text: Se instalan siete controles de esta clase (edit1, edit2,
edit3, edit4, edit5, edit6 y edit7). En los primeros tres, encerrados dentro del
panel uipanel2, se capturan los valores de la temperatura, la presin y la
cantidad de moles de gas. En los controles Edit Text, encerrados dentro del
panel uipanel3 se capturan los valores de la temperatura crtica, la presin
crtica y la temperatura de ebullicin normal y en control Edit Text encerrado
dentro del panel uipanel4 se muestra el resultado calculado para el volumen
del gas segn la ecuacin escogida y los valores asignados a las condiciones
y a las propiedades crticas del gas. Todas sus propiedades se dejan para sus
valores por defecto.
5. Controles Push Button: Se instalan tres botones de presin para ejecutar, el
GUI. Las propiedades String se les asigna, respectivamente, el nombre
Calcular, Reset y Salir. Al presionar el botn Calcular se resuelve
la ecuacin cbica seleccionada con los valores introducidos y se muestra el
resultado en el botn Edit Text que aparece a la derecha de la leyenda
Volumen, Litros. Al presionar el botn Reset se borran los valores
asignados en los botn de edicin de texto y con ello se deja el GUI en
condiciones de nuevo uso, y al presionar el botn Salir se cierra el GUI
previa confirmacin de a travs de un cuadro de dilogo de tipo
interrogacin.

Corrida del GUI


Concluida la instalacin y distribucin de los componentes del GUI se puede correr
con el objeto de verificar que los controles se despliegan como se explica
anteriormente cuando se inicia el GUI (Ver Figura 10.1 (b)).

10.4. PROGRAMACIN DEL GUI


La programacin se explica empezando por describir el cdigo elaborado para la
funcin Ecuacionescubicas_proyecto_OpeningFcn(hObject, eventdata, handles,
varargin) porque contiene las instrucciones que hacen que se muestre en botn Axes
la imagen de un tomo que se ha guardado como un archivo de extensin jpg dentro
168

Melanio A. Coronado H.

de la misma carpeta donde se guardan los archivos Ecuacionescubicas_proyecto.m y


Ecuacionescubicas_proyecto.fig. Con una alguna consideracin secuencial, se
explica despus el cdigo elaborado para el botn listbox debido a que dentro de l
se encuentran las opciones sobre las ecuaciones cbicas de estado que incluye el
GUI y que el usuario puede seleccionar. Por tratarse del objeto de esta leccin, se
explica posteriormente el cdigo elaborado para el botn de presin con propiedad
String ajustada al valor Calcular porque con l se ejecutan: la captura de los datos
necesarios, los clculos que resuelven la ecuacin cbica de estado seleccionada y se
muestra el resultado obtenido.
Finalmente, se explican los cdigos elaborados para los botones de presin Reset y
Salir con los cuales se limpian los valores que se hayan digitado en los botones de
edicin de texto y se cierra el GUI.

function Ecuacionescubicas_proyecto_OpeningFcn(hObject,
handles, varargin)

eventdata,

En esta funcin de tipo OpeningFcn se escribe un cdigo que se elabora al abrirse el


GUI. En la funcin se hace la lectura (con el comando imread) de un archivo de
extensin jpg archivado con el nombre de Atomo y se guarda dicha lectura en un
espacio denominado Inteligencia. Con el comando axis off se borran los ejes del
botn axes instalando en el GUIDE y con el comando imshow se hace que se
muestre la imagen almacenada con el nombre de Inteligencia. El cdigo elaborado
es el siguiente:
% --- Executes just before Ecuacionescubicas_proyecto is made visible.
function Ecuacionescubicas_proyecto_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Ecuacionescubicas_proyecto (see VARARGIN)
% guidata(hObject, handles);
% axes(handles.axes1);
Inteligencia=imread('Atomo.jpg');
axis off;
imshow(Inteligencia);
% Choose default command line output for Ecuacionescubicas_proyecto
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
169

Melanio A. Coronado H.

Botn listbox1
El cdigo elaborado para la funcin listbox1_Callback(hObject, evendata, handles)
es el que se muestra a continuacin:
% --- Executes on selection change in listbox1.
function listbox1_Callback(hObject, eventdata, handles)
% hObject handle to listbox1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns listbox1 contents as cell array
%
contents{get(hObject,'Value')} returns selected item from listbox1
inf=get(hObject,'Value');
gos=get(hObject,'String');
msgbox('Debe suministrar la siguiente informacin en las unidades correspondientes.','Mensaje');

En el cdigo se captura el valor de la propiedad Value que ser el nmero asignado


segn sea la propiedad String seleccionada en el botn de lista y se guarda un
espaci denominado inf. Tambin se captura la propiedad String de la opcin
seleccionada y se guarda en un espacio llamado gos. Con el comando msgbox se
despliega un cuadro de mensaje con la leyenda Debe suministrar la siguiente
informacin en las unidades correspondientes cuando selecciona una de las
opciones de la lista, la palabra Mensaje colocada como segundo argumento es el
ttulo del cuadro de mensaje. El usuario puede hacer las verificaciones de lo
propuesto en el cdigo.

Push Button Calcular (pushbutton1)


Como quiera que la propiedad Tag de este botn es pushbutton1 las ejecuciones que
se desarrollan al presionarlo se codifican dentro de la function
pushbutton1_Callback(hObject, evendata, handles) que se muestra a continuacin:

% --- 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
170

Melanio A. Coronado H.

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


% Constante de los gases: L bar/(mol K)
R = 0.08314;
n = str2double(get(handles.edit3, 'string'));
P = str2double(get(handles.edit2, 'string'));
T = str2double(get(handles.edit1, 'string')) + 273.15;
Tc = str2double(get(handles.edit4, 'string')) + 273.15;
Pc = str2double(get(handles.edit5, 'string'));
Tb = str2double(get(handles.edit6, 'string')) + 273.15;
if get(handles.listbox1, 'value') == 1
Raices = [1 0 0];
Ra = Raices;
elseif get(handles.listbox1, 'value') == 2
a = 27*(R*Tc)^2/(64*Pc);
b = (R*Tc)/(8*Pc);
A = (a*P)/(R*T)^2;
B =(b*P)/(R*T);
Raices = roots([1 -(1+B) A -(A*B)])

elseif get(handles.listbox1,'value') == 3
u = 1;
a = 0.42748*(R^2)*(Tc^2.5)/(Pc*(T^0.5));
b = 0.08664*R*Tc/(Pc);
A = (a*P)/(R*T)^2;
B = (b*P)/(R*T);
Raices = roots([1 -1 (A -B - B^2) -(A*B)]);

elseif get(handles.listbox1,'value') == 4
Theta = Tb/Tc;
Tr = T/Tc;
w = ((3/7)*(Theta/(1 - Theta))*log(Pc)) - 1;
fw = 0.48 + 1.574*w - 0.176*(w^2);
u = 1;
a = (0.42748*(R^2)*(Tc^2)/(Pc))*(1 + fw*(1 - (Tr^0.5)))^2;
b = 0.08664*R*Tc/(Pc);
A = (a*P)/(R*T)^2;
B = (b*P)/(R*T);
Raices = roots([1 -1 (A - B - B^2) -(A*B)]);

elseif get(handles.listbox1, 'value') == 5


Theta = Tb/Tc;
Tr = T/Tc;
w = ((3/7)*(Theta/(1 - Theta))*log(Pc)) - 1;
fw = 0.37464 + 1.54226*w - 0.26992*(w^2);
u = 1;
171

Melanio A. Coronado H.

a = (0.45724*(R^2)*(Tc^2)/(Pc))*(1 + fw*(1 - (Tr^0.5)))^2;


b = 0.07780*R*Tc/(Pc);
A = (a*P)/(R*T)^2;
B = (b*P)/(R*T);
Raices = roots([1 -(1-B) (A-2*B-3*B^2) -(A*B-B^2-B^3)]);
end
for i = 1:3
M = isreal(Raices(i));
if M == 1
Ra(i) = Raices(i);
elseif M == 0
Ra(i) = 0;
else
end
end

Z = max(Ra);
V = n*R*T*Z/P;
set(handles.edit7, 'string', num2str(V));

En el cdigo, inicialmente, se capturan los datos requeridos para el clculo del


volumen de un gas aplicando una de las ecuaciones incluidas en la lista.
A continuacin y mediante un lazo de control ifelseifelseend se calculan las
constantes incluidas y de acuerdo a la ecuacin cbica elegida conforme aparecen en
la Tabla 10.1, y se resuelve la ecuacin 10.2 para hallar las races cuyos valores
numricos corresponden a los factores de compresibilidad Z.
Despus de cerrado el ciclo anterior, entonces se determinan las races reales
mediante un lazo de control forend. Se verifica la naturaleza real de cada raz
mediante el comando isreal y se construye una matriz Ra con las races reales,
asignando el valor cero para el caso en que la raz no sea real.
Finalmente, se halla el valor mximo de los valores reales de las races y dicho valor
es el corresponde a un estado gaseoso. En caso de que las tres races sean reales, el
valor mayor es el que corresponde a un estado gaseoso; para cuando solo sea una
raz real, dicho valor corresponde al estado gaseoso.
172

Melanio A. Coronado H.

Push Button Reset (pushbutton2)


Como quiera que la propiedad Tag de este botn es pushbutton2 y su accin se
ejecuta al presionarlo su funcin es del tipo Callback y por lo tanto el nombre
completo de la funcin es pushbutton2_Callback (hObject, eventdata, handles).
El cdigo elaborado para dicha funcin es el que se muestra a continuacin:

% --- Executes on button press in pushbutton2.


function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%Ajuste del Botn Pushbutton2 para resetear la calculadora
ini = char(' ');
set(handles.edit1,'String',ini);
set(handles.edit2,'String',ini);
set(handles.edit3,'String',ini);
set(handles.edit4,'String',ini);
set(handles.edit5,'String',ini);
set(handles.edit6,'String',ini);
set(handles.edit7,'String',ini);

En el cdigo se asigna un valor de naturaleza char sin caracteres a un espacio


llamado ini. Posteriormente se ajusta la propiedad String de cada uno de los botones
Edit Text al valor ini. Es decir, que los cuadros se observan vacios.

Push Button Salir (pushbutton3)


En este cdigo se encuentran las rdenes para cerrar el GUI (close all), borrar la
memoria (clear) y el espacio de trabajo de Matlab (clc). La funcin se llama
function pushbutton3_Callback(hObject, evendata, handles) y las rdenes son las
siguientes:

function pushbutton3_Callback(hObject, eventdata, handles)


% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
ans = questdlg('Desea salir del programa?', 'SALIR', 'Si', 'No', 'No');
173

Melanio A. Coronado H.

if strcmp(ans, 'No')
return;
end
clear, clc, close all

Al presionar el botn Salir se despliega un cuadro de dilogo de interrogacin


(comando questdlg) como el que se muestra en la Figura 10.3

Figura 10.3. Cuadro de dilogo de pregunta de confirmacin de salir


Observando la Figura 10.3 se deducen los argumentos del comando questdlg asi:
El primer argumento, Desea salir del programa?, es la leyenda que se coloca como
texto de interrogacin.
El segundo argumento, SALIR, es el ttulo del cuadro de dilogo.
El tercer y cuarto argumento, Si, No, son las propiedades String de dos botones de
presin con los cuales se responde a la pregunta del cuadro de dilogo.
El quinto argumento, No, es el botn de presin que aparece seleccionado y
resaltado por defecto.

174

Melanio A. Coronado H.

10.5. EJECUCIN DEL GUI


La interfaz completamente elaborada en su configuracin y programacin se
encuentra en condiciones de ensayar su ejecucin y cuando se despliega por primera
vez el GUI se observa como lo muestra la Figura 10.1 (b).
Para ejecutar el GUI se toma como compuesto el 2, 2, 3-Trimetilpentano cuyas
propiedades son las siguientes:
Temperatura crtica:
Presin crtica.
Temperatura de ebullicin normal:

290.5 C
27.3 bares
110 C

Se sugiere al usuario hacer observaciones sobre los resultados que arroja el GUI
para condiciones por encima y por debajo de las crticas y a comparar los resultados
obtenidos cambiando la ecuacin de estado. La Figura 10.4 muestra el resultado del
volumen calculado con la ecuacin ideal y con la ecuacin de Redlich-Kwong para
unas condiciones del gas de:
Temperatura:
Presin.
Nmero de moles:

500 C
40 bares
2

Figura 10.4. Volumen de un gas (a) Gas ideal (b) Redlich-Kwong


Las propiedades crticas para el compuesto 1, 2, 3, 4-Tetrafluorobenceno son las siguientes:

Temperatura crtica:

277.8C
175

Melanio A. Coronado H.

Presin crtica.
Temperatura de ebullicin normal:

37.9 bares
94.5 C

La Figura 10.5 muestra el resultado del volumen calculado con la ecuacin de


Soave-Redlich-Kwong y con la ecuacin de Peng-Robinson para unas condiciones
del gas de:
Temperatura:
Presin.
Nmero de moles:

500 C
40 bares
2

Figura 10.5. Volumen de un gas (a) Soave-Redlich-Kwong (b) Peng-Robinson

176

Melanio A. Coronado H.

Leccin 11. CONTROL TABLE


11.1. INTRODUCCIN.
En esta leccin se elabora un GUIDE para la solucin grfica de ecuaciones
diferenciales lineal SISO de primer y segundo orden para cambios escaln y rampa
en la variable de entrada, en donde adems se muestre una tabulacin del conjunto
de valores numricos calculados para la respuesta del sistema en cada uno de los
tiempos estimados. La Figura 11.1 muestra el GUIDE construido, con el control tipo
tabla seleccionado para que se observe, en el extremo inferior izquierdo, la
propiedad Tag de dicho elemento que es uitable1.

Figura 11.1. Interfaz grfica de usuario

En el GUIDE se instalan cuatro botones Panel titulados Dinmica, Funcin de


entrada, Simulacin y Resultados. En el panel titulado Dinmica se encierra los
botones en donde se especifican los parmetros dinmicos del sistema; en el panel
Funcin de de entrada se encierran los botones en donde se especifica la
perturbacin en la variable de entrada, en el panel Simulacin se encierran los
botones en donde se especifica el tiempo de simulacin y la ejecucin del GUI y en
el panel Resultados se encierran los botones que muestran la respuesta grfica y la
respuesta numrica de la ecuacin diferencial seleccionada y especificada.
En el panel titulado Dinmica se incluye los siguientes controles:
Un botn Pop-up Menu donde se selecciona el tipo de perturbacin en la
variable de entrada y cuya propiedad String se ajusta para que al desplegar el
GUI, la opcin visible sea Escaln
177

Melanio A. Coronado H.

Tres botones de texto esttico con leyendas Ganancia, Constante de tiempo y


Coeficiente de amortiguamiento
Cuatro botones de edicin de texto donde se digitan los parmetros dinmicos
de la ecuacin diferencial seleccionada y
Un control Toggle Button en donde se selecciona la opcin del tiempo muerto
y cuya leyenda es Sin tiempo muerto.
En el panel titulado Funcin de entrada se incluye los siguientes controles:
Un botn Pop-up Menu donde se selecciona la dinmica del sistema y cuya
propiedad String se ajusta para que al desplegar el GUI, la opcin visible sea
Primer orden
Un botn de texto esttico con leyenda Escaln
Un botn de edicin de texto donde se digita el valor del tiempo de
simulacin para la solucin de la ecuacin diferencial
En el panel titulado Simulacin se incluye los siguientes controles:
Un botn de texto esttico con leyenda Tiempo de simulacin
Un botn de edicin de texto donde se digita el valor del cambio escaln en la
variable de entrada y
Un botn de presin que al hacer clic sobre l se ejecuta la solucin de la
ecuacin diferencial y se despliegan las respuestas grficas y numricas.
En el panel titulado Resultados se incluye los siguientes controles:
Un botn axes donde se muestra la respuesta grfica de la ecuacin
diferencial
Un botn Table en donde se muestran los valores numricos del tiempo y de
la respuesta del sistema calculada con el procedimiento de solucin de la
ecuacin diferencial.
La Figura 11.1 muestra el GUIDE elaborado y cuya construccin y programacin se
explica en esta leccin. Se puede observar en la barra de ttulo del GUIDE que los
archivos se denominan UsandoUiTable.fig y UsandoUiTable.m.

11.2. ECUACIN DIFERENCIAL LINEAL SISO


Las ecuaciones diferenciales lineales SISO de primer y segundo orden, en trminos
de las variables desviacin son:

178

Melanio A. Coronado H.

dY (t )
Y (t ) KX (t )
dt

d 2Y (t )
dY (t )

2
Y (t ) KX (t )
2
dt
dt
2

(11.1)

(11.2)

La constante K recibe la denominacin de ganancia en estado estacionario del


sistema, puesto que representa la relacin entre la variable de salida y(t) y la variable
de entrada x(t) para t . La constante , que tiene dimensin de tiempo, se llama
constante de tiempo del sistema y representa un atraso dinmico. El coeficiente de
amortiguamiento es una caracterstica de los sistemas de segundo orden
determinante del tipo de estabilidad de la respuesta. Las funciones de transferencia
correspondientes a las ecuaciones 11.1 y 11.2 son las siguientes:

G(s)

Y ( s)
K

X ( s) s 1

(11.3)

G( s)

Y ( s)
K
2
X ( s) s 2 s 1

(11.4)

Se desarrollan a continuacin las respuestas de un sistema diferencial lineal de


primer orden a cambios en la entrada que presentan especial inters en las
aplicaciones como son las respuesta paso, rampa y seno.

Respuestas de un sistema lineal de primer orden


A continuacin se muestran las respuestas paso y pendiente de un sistema lineal de
primer orden SISO como un concepto bsico relacionado con el desarrollo del GUI
de esta leccin.

Respuestas paso
Para este tipo de cambio en la variable de entrada, la transformada de Laplace de la
respuesta de un sistema lineal de primer orden SISO es dada as:

179

Melanio A. Coronado H.

1 Kh
Y ( s)
s s 1

(11.5)

Siendo h la magnitud del cambio paso. La forma de la ecuacin (11.5) hace fcil la
obtencin de su respuesta grfica porque basta con aplicar el comando step a la
expresin encerrada dentro del corchete.

Respuesta rampa
Para este tipo de cambio en la variable de entrada, la transformada de Laplace de la
respuesta de un sistema lineal de primer orden SISO es dada as:

Y (s)

r
s2

K 1 Kr
s 1 s s 2 s

(11.6)

Siendo r la magnitud de la pendiente del cambio rampa. La forma de la ecuacin


(11.6) hace fcil la obtencin de su respuesta grfica porque basta con aplicar el
comando step a la expresin encerrada dentro del corchete. Tngase en cuenta que el
denominador es de un grado tres.

Respuestas de un sistema lineal de segundo orden


A continuacin se muestran las respuestas paso y pendiente de un sistema lineal de
seegundo orden SISO como un concepto bsico relacionado con el desarrollo del
GUI de esta leccin.

Respuesta paso
Para este tipo de cambio en la variable de entrada, la transformada de Laplace de la
respuesta del sistema es dada as:

1
Kh
Y ( s) 2 2
s s 2 s 1

(11.7)

180

Melanio A. Coronado H.

Siendo h la magnitud del cambio paso. La forma de la ecuacin (11.5) hace fcil la
obtencin de su respuesta grfica porque basta con aplicar el comando step a la
expresin encerrada dentro del corchete.

Respuesta rampa
Para este tipo de cambio en la variable de entrada, la transformada de Laplace de la
respuesta del sistema es dada as:

Y ( s)

r
s2

K
Kr
2 s 2 2 s 1 s 2 s 3 2 s 2 s

(11.8)

Siendo r la magnitud de la pendiente del cambio rampa. La forma de la ecuacin


(11.8) hace fcil la obtencin de su respuesta grfica porque basta con aplicar el
comando step a la expresin encerrada dentro del corchete. Tngase en cuenta que el
denominador es de un grado tres.

Tiempo Muerto
El tiempo muerto es un atraso adicional al dinmico, que se observa en la respuesta
de un sistema y que se atribuye al tiempo que se requiere para transportar el efecto
de la perturbacin del sistema hasta puntos localizados a una cierta distancia. En el
dominio de Laplace este atraso se observa en la inclusin de un trmino exponencial
en la funcin de transferencia. Para sistemas SISO de primer y segundo orden lineal,
las funciones de transferencia con tiempo muerto corresponden a las siguientes
ecuaciones
Primer Orden:

Ke sto
Y ( s)
X (s)
s 1

Segundo Orden:

Ke sto
Y (s) 2 2
X ( s)
s 2s 1

Las respuestas grficas muestran claramente el atraso en la respuesta del sistema


cuando se observa un tiempo muerto.

181

Melanio A. Coronado H.

11.3. CONFIGURACIN DEL GUI


A continuacin se describe la elaboracin de una interfaz grfica que facilite, al
usuario de Matlab, la solucin grfica de una ecuacin diferencial lineal de primero
y segundo orden SISO mediante la introduccin de los parmetros dinmicos y las
condiciones iniciales de un sistema, el tipo de perturbacin en la variable de entrada
con sus correspondientes especificaciones y la consideracin de un tiempo muerto
en el transporte dinmico. Para ello se instalan en el GUIDE un conjunto de
elementos (o controles) que o muestran leyendas (Static Text) o capturen datos (Edit
Text) o seleccionan procedimientos (Pop-up Menu y Toggle Button) o ejecutan
procedimientos (Push Button). Varios de los anteriores botones son agrupados en
controles tipo pneles (Panel). Adems, se agrega un control tipo axes para mostrar
la respuesta grfica y un control tipo tabla (Table) para mostrar los valores
numricos de los tiempos y sus respectivos valores de respuesta calculados por el
procedimiento de solucin de la ecuacin diferencial.

Instalacin de los controles en la interfaz de usuario GUI:


Una vez iniciado GUIDE, en el rea de diseo se instalan los diferentes controles y
se observa una interfaz con la configuracin que muestra la Figura 11.1. Para todos
los controles se deja la propiedad Tag con sus asignaciones por defecto. Al archivo
se le asigna el nombre UsandoUiTable.fig y UsandoUiTable.m.
1.

Controles Panel: Se instalan cuatro botones de esta clase (unipanel1,


uipanel2, unipanel3 y uipanel4) para encerrar los botones en cuadros
separados y observarlos agrupados dentro de un marco. Para cada uno de los
paneles, la propiedad Tag es la que se asigna por defecto y la propiedad
TitlePosistion se ajusta al valor leftop.
El uipanel1 es el panel a cuya propiedad String se le asigna la expresin
Dinmica y dentro de l se encierra un botn men desplegable (popupmenu2)
tres botones de texto esttico (text1, text2 y text3), cuatro botones de edicin de
texto (edit1, edit2, edit3 y edit4) y un botn de comando (togglebutton1).
El uipanel2 es el panel a cuya propiedad String se le asigna la expresin
Funcin de entrada y dentro de l se encierra un botn de tipo men
desplegable (popupmenu1), un botn de texto esttico (text4), y un botn de
edicin de texto (edit5).

182

Melanio A. Coronado H.

El uipanel3 es el panel a cuya propiedad String se le asigna la expresin


Simulacin y dentro de l se encierra un botn de texto esttico (text5), un
botn de edicin de texto (edit5) y un botn de tipo pushbutton.
El uipanel4 es el panel a cuya propiedad String se le asigna la expresin
Resultados y dentro de l se encierra un botn de tipo axes, y un botn tipo
tabla cuya propiedad Tag es uitable1.
2.

3.

Controles Pop-up Menu: Se instalan dos controles de esta clase (popumenu1


y propupmenu2) para crear los mens donde se seleccionan la funcin de
entrada (popupmenu1) y la dinmica del sistema (popupmenu2). En el control
popupmenu1 se incluyen las opciones Escaln y Rampa para la propiedad
String. En el control popupmenu2 se incluyen las opciones Primer orden y
Segundo orden para la propiedad String.
Controles Static Text: Se instalan cinco controles de esta clase (text1, text2,
text3, text5 y text8) para anexar leyendas a los botones (Edit Text) donde se
introducen datos requeridos para la solucin de la ecuacin diferencial. Se
asignan las propiedades String con las leyendas que se observan en la
Figura 9.1, es decir, Ganancia, Constante de Tiempo, Coeficiente de
amortiguamiento, Escaln y Tiempo de simulacin. Al botn de
edicin de texto (text3) se le ha ajustado su propiedad Enable al valor off para
que se observe pero en forma inactiva al desplegarse el GUI por primera vez o
cuando la opcin elegida como dinmica sea la de Primer orden.
El botn de texto esttico (text5) cuya propiedad String se ajusta a la leyenda
Escaln cambia el valor de dicha propiedad a la leyenda Pendiente cuando se
seleccione la opcin Rampa incluida en el pop-up men donde se selecciona
la funcin de entrada

4.

Control Toggle Button: Se instala un control de esta clase (togglebutton5) con


la propiedad String ajustada a la expresin Sin tiempo muerto. La propiedad
Value se ajusta al valor 0 para que se encuentre desactivado cuando se
despliegue el GUI. Cuando se presione el botn con el GUI desplegado se
ajusta la propiedad String a la expresin Con tiempo muerto.

5.

Controles Edit Text: Se instalan seis controles de esta clase (edit1, edit2,
edit3, edit4, edit5 y edit8) para que el usuario introduzca los parmetros
requeridos para la solucin de la ecuacin diferencial (Ganancia, Constante de
tiempo, Coeficiente de amortiguamiento, Tiempo muerto, Cambio paso, y
Tiempo de simulacin). Los valores asignados, por defecto, a la propiedad
String de cada uno de ellos son los que se observan en la Figura 11.1.

183

Melanio A. Coronado H.

Al botn de edicin de texto (edit3) se le ha ajustado su propiedad Enable al


valor off para que se observen pero en forma inactiva al desplegarse el GUI
por primera vez o cuando se encuentre seleccionada la opcin Primer orden
en el Pop-up men donde se selecciona la dinmica del sistema con leyenda
Primer orden o cuando se encuentre inactivo el Toggle Button con leyenda
Sin tiempo muerto.
Al botn de edicin de texto (edit5) se le ajusta su propiedad Enable al valor
off para que se observe en forma inactiva al desplegarse el GUI y mientras el
botn de comando con leyenda Sin tiempo muerto se encuentre activo.
Cuando se presione el botn de comando su propiedad String cambia a la
expresin Con tiempo muerto y se activa el botn de edicin de texto text5.
6.

Control Push Button: Se instala un botn de presin para ejecutar el GUI. A


la propiedad String se le asigna el nombre Ver respuesta.

7.

Control Axes: Se instala un control de esta clase (axes1) para desplegar el


perfil grfico de la respuesta obtenida para la solucin de la ecuacin que se
ejecuta al presionar el botn Ver respuesta.

8.

Control Table: Se instala un control de esta clase (axes1) para desplegar los
valores numricos de la respuesta obtenida para la solucin de la ecuacin que
se ejecuta al presionar el botn Ver respuesta. Se muestran en una columna los
valores de los tiempos y en otra columna los respectivos valores de la
respuesta obtenida

11.4. CONTROL TABLE (Tabla)


En una interfaz grfica, con la instalacin de un control tipo Table se crea una tabla
bidimensional que puede definirse para que muestre un comportamiento en ciertos
aspectos como el nmero de columnas, el nmero de filas, los encabezados en
columnas y filas, el ancho de las columnas, el formato de los valores editados en las
celdas, etc.
La propiedad Tag del control Table instalado en el GUIDE se deja en su valor por
defecto, es decir, uitable1. Al desplegar el inspector de propiedades de dicho control
se observa la ventana mostrada en la Figura 11.2.
En la interfaz desarrollada, para la solucin de las ecuaciones diferenciales incluidas
en el GUIDE, se quiere mostrar la solucin grfica en el botn cuya propiedad Tag
es axes1 y, adems, la solucin numrica en el control cuya propiedad Tag es
unitable1. Se hace necesario definir las propiedades de uitable1 que permiten el
184

Melanio A. Coronado H.

anterior propsito y que son, principalmente, ColumnEditable, ColumnFormat,


ColumnName y ColumnWidth, adems de la propiedad denominada RowName.
Estas propiedades se pueden definir con la ayuda de la propiedad Data que incluye
toda la informacin requerida sobre ellas.

Figura 11.2. Inspector de propiedades de un control tipo Table

Al presionar el icono que aparece a la derecha del nombre de la propiedad


ColumnEditable se despliega una ventana como la que se observa en la Figura 11.3.

Figura 11.3. Table Property Editor - Columns


185

Melanio A. Coronado H.

Se deduce que con esta propiedad se definen, para la tabla, los ttulos o encabezados
de las columnas, el ancho de las columnas, la opcin de permitir la edicin de los
datos en la columna y el formato de los valores insertados en una columna. Debajo
del cuadro Column Headers se selecciona el radio botn que dice Show names
entered below as the column headers (Muestre los nombres ingresados abajo como
los encabezados de las columnas). En el panel titulado Column Definitions se han
definido dos columnas con encabezados Tiempo y Respuesta. Para cada una de estas
columnas se ha definido un ancho (Width(px)) de 90 pixeles y un formato numrico
(Numeric) para los valores a insertar en sus celdas. A la derecha se observa un
conjunto de iconos con los cuales se puede hacer edicin de las definiciones en las
columnas.
Al regresar a la ventana del inspector de propiedades del control uitable1 y presionar
el icono que aparece a la derecha del nombre de las propiedades ColumnFormat,
ColumName y ColumnWidth se despliega una ventana como la que se observa en la
Figura 11.3. Es decir, que son rutas alternas para definir las especificaciones de las
columnas de la tabla.
Al seleccionar la pgina Rows que se observa debajo de Columns en la ventana
Table Property Editor (Figura 11.3) se explican las definiciones introducidas para
las filas en la tabla instalada en el GUIDE de la Figura 11.1. Ver Figura 11.4.

Figura 11.4. Table Property Editor - Rows

Se selecciona el radio botn que dice Show numbered row headers (Muestre
nmeros como los encabezados de las filas). Debajo se han insertado cuatro filas que
aparecern visibles cuando se despliegue el GUI. A la derecha se observa un
conjunto de iconos con los cuales se puede hacer edicin de las definiciones en las
filas.
186

Melanio A. Coronado H.

Al regresar a la ventana del inspector de propiedades del control uitable1 y presionar


el icono que aparece a la derecha del nombre de las propiedades RowName se
despliega una ventana como la que se observa en la Figura 11.4.
Al seleccionar la pgina Data que se observa debajo de Rows en la ventana Table
Property Editor (Figura 11.3) se explican las definiciones introducidas para los
datos en la tabla instalada en el GUIDE de la Figura 11.1. Ver Figura 11.5. Se
selecciona el radio botn que dice Do not set data value and leave the table empty
(No ajuste datos y deje la table vaca).

Figura 11.5. Table Property Editor - Data

Al regresar a la ventana del inspector de propiedades del control uitable1 y presionar


el icono que aparece a la derecha del nombre de las propiedades Data se despliega
una ventana como la que se observa en la Figura 11.5.
Al seleccionar la pgina Colors que se observa debajo de Data en la ventana Table
Property Editor (Figura 11.3) se explican las definiciones introducidas para los
colores (Background y Foreground) en la tabla instalada en el GUIDE de la Figura
11.1. Ver Figura 11.6.
Para la definicin del Background Color se selecciona el radio botn con leyenda
Show row striping effect (Muestre un efecto de colores alterno en las filas). Para este
caso, tanto para las filas impares (Odd Rows) se selecciona un color blanco y para
las filas pares un color grisceo. Para el Foreground Color se define, para todas las
filas, el color negro.

187

Melanio A. Coronado H.

Figura 11.6. Table Property Editor - Colors

Al regresar a la ventana del inspector de propiedades del control uitable1 y presionar


el icono que aparece a la derecha del nombre de las propiedades RowStriping se
despliega una ventana como la que se observa en la Figura 11.6.

Corrida del GUI


Concluida la instalacin y distribucin de los componentes del GUI se puede correr
con el objeto de verificar que los controles se despliegan como se explica
anteriormente cuando se inicia el GUI (Ver Figura 11.7).

Figura 11.7. GUI Solucin dinmica de sistemas de primero y Segundo orden

188

Melanio A. Coronado H.

Terminada la configuracin del GUI se puede proceder a la elaboracin del cdigo


de programacin para el funcionamiento de la interfaz. Para ello presione el botn
M-File Editor de la barra de herramientas para acceder al editor de MatLab para su
construccin

11.5. PROGRAMACIN DEL GUI


La programacin se explica empezando por describir el cdigo elaborado para la
function UsandoUiTable_OpeningFcn(hObject, eventdata, handles, varargin)
porque se ha incluido la propiedad movegui y se ha ajustado al valor center. Con
esto se define que al abrir el GUI se coloque en el centro de la pantalla del monitor.
El cdigo elaborado es:

% --- Executes just before UsandoUiTable is made visible.


function UsandoUiTable_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to UsandoUiTable (see VARARGIN)
% Choose default command line output for UsandoUiTable
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
movegui(hObject, 'center');

Botn Pop-up Menu Dinmica (popupmenu2)


En este men se encuentran las opciones de dinmicas de primer y segundo orden
disponibles en el GUI. El cdigo elaborado para dicha funcin es el que se muestra a
continuacin:

% --- Executes on selection change in popupmenu2.


function popupmenu2_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
189

Melanio A. Coronado H.

% handles

structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu2 contents as cell array


%
contents{get(hObject,'Value')} returns selected item from popupmenu2
switch get(hObject,'Value')
case 1
set(handles.text3, 'enable', 'off')
set(handles.edit3, 'enable', 'off')
case 2
set(handles.text3, 'enable', 'on')
set(handles.edit3, 'enable', 'on')
end

Se captura la propiedad Value de la opcin seleccionada dentro del men


desplegable y mediante un lazo de control switchcaseend, se ajusta la propiedad
Enable de los botones de texto esttico text3 y de edicin de texto edit3. Al
seleccionar la opcin Primer orden permanecen inactivos ambos botones, pero al
seleccionar la opcin Segundo orden se activan ambos botones y se observan
claramente.

Botn Pop-up Menu Funcin de entrada (popupmenu1)


En este men se encuentran las opciones de las funciones de entrada Escaln y
Rampa disponibles en el GUI. El cdigo elaborado para dicha funcin es el que se
muestra a continuacin:

% --- Executes on selection change in popupmenu1.


function popupmenu1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array
%
contents{get(hObject,'Value')} returns selected item from popupmenu1
switch get(hObject,'Value')

190

Melanio A. Coronado H.

case 1
set(handles.text5, 'string', 'Escaln')
case 2
set(handles.text5, 'string', 'Pendiente')
end

Se captura la propiedad Value de la opcin seleccionada dentro del men


desplegable y mediante un lazo de control switchcaseend, se ajusta la propiedad
String del botn de texto esttico text5. Al seleccionar la opcin Escaln se
despliega la leyenda Escaln, pero al seleccionar la opcin Rampa se despliega la
leyenda Pendiente.

Botn de comando Sin tiempo muerto (togglebutton5)


Este botn se define para, inicialmente, resolver la dinmica seleccionada sin tiempo
muerto, pero si se presiona se activa para solucionar la dinmica con tiempo muerto
y, por lo tanto se activa el botn de edicin de texto edit4 para permitir la digitacin
del valor del tiempo muerto. El cdigo elaborado para dicha funcin es el que se
muestra a continuacin:

% --- Executes on button press in togglebutton5.


function togglebutton5_Callback(hObject, eventdata, handles)
% hObject handle to togglebutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of togglebutton5
if get(hObject, 'value') == true
set(hObject, 'string', 'Con tiempo muerto')
set(handles.edit4, 'enable', 'on')
else
set(hObject, 'string', 'Sin tiempo muerto')
set(handles.edit4, 'enable', 'off')
end
191

Melanio A. Coronado H.

Se captura la propiedad Value del botn de comando y si es verdadera, es decir que


el valor de la propiedad es 1, la propiedad String del botn cambia a Con tiempo
muerto y se ajusta la propiedad Enable del botn edit4 al valor on. Si se presiona el
botn de comando y con ello su propiedad Value no es verdadera, entonces su
propiedad String cambia a Sin tiempo muerto y se ajusta la propiedad Enable dela
botn edit4 al valor off.

Push Button Ver respuesta (pushbutton1)


Al presionar este botn se resuelve la ecuacin diferencial seleccionada y
especificada y se muestra la respuesta tanto grfica como numrica. La funcin que
desarrolla los procedimientos para lo anterior se llama function
pushbutton1_Callback(hObject, evendata, handles) y las rdenes son las siguientes:

% --- 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)
% procesa los parametros dinamicos
K = str2double(get(handles.edit1, 'string'));
Tau = str2double(get(handles.edit2, 'string'));
Xi = str2double(get(handles.edit3, 'string'));
switch get(handles.popupmenu2, 'value')
case 1
num = K;
den = [Tau 1];
case 2
num = K;
den = [Tau^2 2*Tau*Xi 1];
end
% procesa el tiempo muerto
T0 = str2double(get(handles.edit4, 'string'));
if get(handles.togglebutton5, 'value') == false
192

Melanio A. Coronado H.

T0 = 0;
end
% Tiempo de simlulacion
Tf = str2double(get(handles.edit8, 'string'));
% evalua la funcion de transferencia con la respectiva entrada
cla()
switch get(handles.popupmenu1, 'value')
case 1
G = tf(num, den, 'inputdelay', T0);
[y, t] = step(G, Tf);
case 2
G = tf(num, [den 0], 'inputdelay', T0);
[y, t] = step(G, Tf);
end
% genera el respectivo grafico
cla(handles.axes1)
plot(handles.axes1, t, y, 'b')
grid(handles.axes1, 'on')
xlabel('Tiempo')
ylabel('Respuesta')
xlabel('Tiempo')
% escribe los resultados en la tabla
set(handles.uitable1, 'data', [t y])

Debajo del comentario % procesa los parametros dinmicos se capturan las


propiedades String en los botones de edicin de texto edit1, edit2 y edit3 y se
asignan a los parmetros K (Ganancia), Tau (Constante de tiempo) y Xi (Coeficiente
de amortiguamiento), como valores numricos previa conversin. Se captura,
inicialmente, el valor de la propiedad Value del botn popupmenu2 y con ello se
define la dinmica que se quiere resolver (Primer orden o Segundo orden). Con el
lazo de control switchcaseend y segn se satisfaga el condicional se escribe la
funcin de transferencia para un sistema de primer orden o de segundo orden sin
tiempo muerto
193

Melanio A. Coronado H.

Debajo del comentario % procesa el tiempo muerto se captura la propiedad String


del botn de edicin de texto edit4 y se asigna al parmetro To (Tiempo muerto),
como valor numrico previa conversin. Con el lazo de control ifend se captura el
valor de la propiedad Value del botn de conmutacin togglebutton5, si es falso
(valor de la propiedad igual a 0) quiere decir que la seleccin activa es la de un
sistema Sin tiempo muerto razn por lo cual se ajusta el valor del To (Tiempo
muerto) a un valor de 0.
Debajo del comentario % Tiempo de simulacin se captura la propiedad String del
botn de edicin de texto edit8 y se asigna al parmetro Tf (Tiempo de simulacin),
como valor numrico previa conversin.
Debajo del comentario % evalua la funcion de transferencia con la respectiva
entrada primero se borran los ejes de todos los objetos grficos incluidos en el GUI
con el comando cla(). Con el lazo de control ifelseifend se captura la propiedad
Value del popupmenu1 (Escaln) y se comprueba si es cierto el valor de dicha
propiedad, si el condicional es verdadero se plantea la funcin de transferencia con
tiempo muerto para aplicarle el comando step con la sintaxis que permite almacenar
los valores de tiempo y respuesta del cambio escaln; pero si no es verdadero el
condicional, se verifica si la propiedad Value del popupmenu1 (Rampa) es cierta y si
se cumple el condicional se plantea la funcin de transferencia con tiempo muerto
con el denominador amplificado para aplicarle el comando step con la sintaxis que
permite almacenar los valores de tiempo y respuesta del cambio rampa.
Debajo del comentario % genera el respectivo grafico se borra el objeto grfico
desplegado en el botn axes1, se grafican sobre el objeto axes1 los valores de la
respuesta en funcin del tiempo en color azul, se activa la cuadriculacin del objeto
grfico y se ordenan las leyendas para el ttulo y cada uno de los ejes de la
representacin grfica.
Debajo del comentario % escribe los resultados en la tabla se ajusta la propiedad
Data del control tipo Table instalado con la matriz de dos columnas, la primera con
los valores de tiempo y la segunda con los valores de la respuesta del sistema.

11.6. EJECUCIN DEL GUI


La interfaz completamente elaborada en su configuracin y programacin se
encuentra en condiciones de ensayar su ejecucin y cuando se despliega por primera
vez el GUI se observa como lo muestra la Figura 11.7. Si se ejecuta el GUI con los
valores y selecciones por defecto, se obtiene la repuesta escaln de un sistema lineal
de primer orden SISO sin tiempo muerto como lo muestra la Figura 11.8.

194

Melanio A. Coronado H.

Figura 11.8. Respuesta paso de un sistema lineal de primer orden SISO

Al seleccionar en el popupmenu2 la opcin Segundo orden se observa que se activan


el botn de texto esttico con leyenda Coeficiente de amortiguamiento y el botn de
edicin de texto que est a su derecha y que por defecto muestra un valor de 0.5. Si
se presiona el botn Ver respuesta se despliega la respuesta grfica para un sistema
de segundo orden subamortiguado como lo muestra la Figura 11.9.

Figura 11.9. Respuesta paso de un sistema lineal de segundo orden SISO

Si ahora se presiona el botn Sin tiempo muerto y se ejecuta el GUI con tiempo
muerto asignando un valor de 2 en el botn de edicin de texto que aparece
colocado a su derecha se observa una respuesta grfica similar a la anterior pero con
un tiempo muerto de 2 unidades de tiempo. (Observe la Figura 11.10)
Si ahora se presiona la opcin Rampa, se asigna un coeficiente de amortiguamiento
de cero y se dejan todos los otros valores asignados anteriormente, se obtiene la

195

Melanio A. Coronado H.

respuesta rampa subamortiguada de un sistema de segundo orden lineal como la que


muestra la Figura 11.11.

Figura 11.10. Respuesta paso de un sistema de segundo orden con tiempo muerto

Figura 11.11. Respuesta rampa con tiempo muerto de un sistema de segundo orden
lineal

196

Melanio A. Coronado H.

Leccin 12. CONTROL SLIDER


12.1. INTRODUCCIN.
En esta leccin se elabora un GUIDE para la solucin grfica de ecuaciones
diferenciales lineal SISO de segundo orden para cambio escaln en la variable de
entrada, en donde se cambien los parmetros dinmicos del sistema y de la
simulacin mediante la utilizacin de controles tipo Slider y se observen los efectos
en la respuesta del sistema desplegada. La Figura 12.1 muestra el GUIDE
construido, con los controles tipo Slider para ejecutar la variacin de los valores en
los parmetros dinmicos del sistema.

Figura 12.1. Interfaz grfica de usuario

En el GUIDE se instalan cinco botones Static Text titulados Atraso dinmico,


Ganancia estacionaria, Coeficiente de amortiguamiento, Tiempo de simulacin y
Cambio escaln. A la derecha de cada uno de los anteriores botones de texto esttico
se instala un botn tipo Slider con un intervalo de valores para cada uno y que se
asignarn a los parmetros enunciados con la leyenda colocada a su izquierda. A la
derecha de cada uno de los anteriores botones tipo slider se coloca un botn tipo
Edit Text en donde se despliega el valor que se le asigna al botn tipo slider situado
a su izquierda. Y, finalmente se instala un control tipo axes en donde se despliega la
grfica obtenida con la solucin de la ecuacin diferencial de segundo orden con los
parmetros de ella fijados en cada uno de los botones slider.
La Figura 12.1 muestra el GUIDE elaborado y cuya construccin y programacin se
explica en esta leccin. Se puede observar en la barra de ttulo del GUIDE que los
archivos se denominan BarraSlider.fig y BarraSlider.m.

197

Melanio A. Coronado H.

12.2. ECUACIN DIFERENCIAL DE SEGUNDO ORDEN SISO


Las ecuaciones diferenciales lineales SISO de segundo orden, en trminos de las
variables desviacin se escriben en la siguiente forma:

d 2Y (t )
dY (t )
2
Y (t ) KX (t )
2
dt
dt

(12.1)

La constante K recibe la denominacin de ganancia en estado estacionario del


sistema, puesto que representa la relacin entre la variable de salida y(t) y la variable
de entrada x(t) para t . La constante , que tiene dimensin de tiempo, se llama
constante de tiempo del sistema y representa un atraso dinmico. El coeficiente de
amortiguamiento es una caracterstica de los sistemas de segundo orden
determinante del tipo de estabilidad de la respuesta. La funcin de transferencia
correspondiente a la ecuaciones 12.1 es la siguiente:

G( s)

Y ( s)
K
2
X ( s) s 2 s 1

(12.2)

Se desarrollan, a continuacin, la respuesta escaln de un sistema diferencial lineal


de segundo orden.

Respuesta escaln de un sistema lineal de segundo orden


A continuacin se muestra la respuesta escaln de un sistema lineal de segundo
orden SISO como un concepto bsico relacionado con el desarrollo del GUI de esta
leccin. Para este tipo de cambio en la variable de entrada, la transformada de
Laplace de la respuesta del sistema es dada as:

1
Kh
Y ( s) 2 2
s s 2 s 1

(12.3)

Siendo h la magnitud del cambio paso. La forma de la ecuacin (12.3) hace fcil la
obtencin de su respuesta grfica porque basta con aplicar el comando step a la
expresin encerrada dentro del corchete.
198

Melanio A. Coronado H.

El perfil grfico de la respuesta escaln de un sistema lineal de segundo orden


depende del valor del coeficiente de amortiguamiento. Si es mayor o igual que uno
la respuesta es de un perfil grfico monotnico exponencial estable, pero si el valor
del coeficiente de amortiguamiento es menor que 1 y mayor que 0 la respuesta es de
un perfil grfico oscilatorio con amplitud decreciente hasta alcanzar un valor
estable. Si el valor del coeficiente de amortiguamiento es igual a 0 la respuesta es de
un perfil grfico oscilatorio con amplitud constante, pero si el valor del coeficiente
de amortiguamiento es negativo la respuesta es inestable.

12.3. CONFIGURACIN DEL GUI


A continuacin se describe la elaboracin de una interfaz grfica que facilite, al
usuario de Matlab, la solucin grfica de una ecuacin diferencial lineal de segundo
orden SISO mediante la introduccin de los valores de los parmetros dinmicos.
Para ello se instalan en el GUIDE un conjunto de elementos (o controles) que o
muestran leyendas (Static Text o Edit Text) o ejecutan procedimientos (Slider).
Adems, se agrega un control tipo axes para mostrar la respuesta grfica, los botones
tipo slider son programados para que cuando sean manipulados se observe
inmediatamente el cambio en el perfil grfico de la respuesta

Instalacin de los controles en la interfaz de usuario GUI:


Una vez iniciado GUIDE, en el rea de diseo se instalan los diferentes controles y
se observa una interfaz con la configuracin que muestra la Figura 12.1. Para todos
los controles se deja la propiedad Tag con sus asignaciones por defecto. Al archivo
se le asigna el nombre BarraSlider.fig y BarraSlider.m.
1.

Controles Static Text: Se instalan cinco controles de esta clase (text1, text2,
text3, text4 y text5) para anexar leyendas a los botones (Slider) donde se
manipulan los valores de los datos requeridos para la solucin de la ecuacin
diferencial. Se asignan las propiedades String con las leyendas que se
observan en la Figura 12.1, es decir, Atraso dinmico, Ganancia
estacionaria, Coeficiente de amortiguamiento, Tiempo de simulacin y
Cambio escaln.

2.

Controles Edit Text: Se instalan cinco controles de esta clase (edit2, edit3,
edit4, edit5 y edit6) para que se muestre el valor numrico asignado en cada
correspondiente slider. A cada control Edit Text se le asigna como propiedad
String el valor asignado a la propiedad Value del botn slider que se encuentra
a su izquierda, dichos valores se pueden observar en la Figura 12.1. Adems,
199

Melanio A. Coronado H.

se fija la propiedad Enable con el valor off con el objeto de que estos botones
no sean editables y que el cambio en su propiedad String sea ordenada por el
cdigo programado en el archivo de matlab.
3.

Control Axes: Se instala un control de esta clase (axes1) para desplegar el


perfil grfico de la respuesta obtenida para la solucin de la ecuacin de
segundo orden de acuerdo a los valores de los parmetros definidos en los
botones slider.

12.4. CONTROL SLIDER


El control tipo slider es una barra deslizante que expresa un intervalo de valores
entre un mnimo y un mximo. En el GUIDE que se muestra en la Figura 12.1 se
instalan cinco controles tipo slider para cambiar el valor de cada uno de los
parmetros dinmicos entre un valor mnimo y un valor mximo.
La propiedad Tag que se fija para cada uno de estos controles es slider1, slider2,
slider3, slider4 y slider5, respectivamente. La propiedad String que se fija para cada
uno de estos controles es la que se asigna, por defecto, que es Slider. La propiedad
Min es el valor mnimo del intervalo, la propiedad Max es el valor mximo del
intervalo y la propiedad Value es el valor que se asigna inicialmente y que se
observa en la localizacin del botn deslizante.
La propiedad Min (Mnimo), la propiedad Max (Mximo) y la propiedad Value que
se asigna a cada botn slider son las siguientes:

Slider

Propiedad Min

Propiedad Max

Value

Slider1
Slider2
Slider3
Slider4
Slider5

0
0
-3
0
0

10
10
+3
200
10

5
5
0
100
5

La propiedad String de los botones Edit Text se ajusta a los valores de la propiedad
Value de los botones slider que se observan en la tabla anterior.
En la Figura 12.3 se muestra la ventana inspector de propiedades del botn slider1
en donde se observan los valores de las propiedades Min (Valor 0), Max (Valor 10) y

200

Melanio A. Coronado H.

Value (Valor 5) asignados segn la tabla anterior. En forma similar, se especifican


las propiedades anteriores para cada uno de los otros botones slider.

Figura 12.2. Inspector de propiedades slider1

Corrida del GUI


Concluida la instalacin y distribucin de los componentes del GUI se puede correr
con el objeto de verificar que los controles se despliegan como se explica
anteriormente cuando se inicia el GUI (Ver Figura 12.3).

Figura 12.3. GUI Solucin dinmica de sistemas de segundo orden


201

Melanio A. Coronado H.

Terminada la configuracin del GUI se puede proceder a la elaboracin del cdigo


de programacin para el funcionamiento de la interfaz. Para ello presione el botn
M-File Editor de la barra de herramientas para acceder al editor de MatLab para su
construccin

12.5. PROGRAMACIN DEL GUI


La programacin se explica empezando por describir el cdigo elaborado para la
function BarraSlider_OpeningFcn(hObject, eventdata, handles, varargin) porque se
ha incluido el cdigo que se ejecuta con cada uno de los botones slider con el
propsito de que al abrir el GUI se despliegue en el control axes el grfico
correspondiente a la respuesta del sistema con los valores de los parmetros
asignados por defecto. El cdigo elaborado es:

function BarraSlider_OpeningFcn(hObject, eventdata, handles, varargin)


% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to BarraSlider (see VARARGIN)
tau = get(handles.slider1, 'Value');
K = get(handles.slider2, 'Value');
psi = get(handles.slider3, 'Value');
tiempo = get(handles.slider4, 'Value');
escalon = get(handles.slider5, 'Value');
funtrans = tf(K*escalon, [tau^2 2*tau*psi 1]);
[y, t] = step(funtrans, tiempo);
plot(t,y, 'r');
xlabel('Tiempo', 'Fontsize', 10);
ylabel('Respuesta', 'Fontsize', 10);
title({'Sistema de segundo orden', 'Respuesta escaln'}, 'Fontsize', 10);
grid
% Choose default command line output for BarraSlider
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes BarraSlider wait for user response (see UIRESUME)
% uiwait(handles.figure1);

202

Melanio A. Coronado H.

Inicialmente se capturan los valores de los parmetros dinmicos del sistema en cada
uno de los botones tipo slider. Se plantea entonces la funcin de transferencia de un
sistema de segundo orden capturando la matriz de los datos de tiempo y respuesta
evaluados en el procedimiento de solucin de la ecuacin. Finalmente se grafican
los datos anteriores y se colocan las leyendas para el eje x, el eje y y el ttulo del
grfico. Todo lo anterior dentro de la funcin hace que cuando se despliegue el GUI
se muestre como se observa en la Figura 12.3.

Botn slider1
Con el deslizamiento de la barra de este botn se cambia el valor de la constante de
tiempo y se ejecuta la solucin de la ecuacin diferencial con los valores asignados a
los parmetros de la ecuacin en cada uno de los otros botones slider. El cdigo
elaborado para dicha funcin es el que se muestra a continuacin:

% --- Executes on slider movement.


function slider1_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
%
get(hObject,'Min') and get(hObject,'Max') to determine range of slider
tau = get(handles.slider1, 'Value');
K = get(handles.slider2, 'Value');
psi = get(handles.slider3, 'Value');
tiempo = get(handles.slider4, 'Value');
escalon = get(handles.slider5, 'Value');
set(handles.edit2, 'String', num2str(tau));
funtrans = tf(K*escalon, [tau^2 2*tau*psi 1]);
[y, t] = step(funtrans, tiempo);
plot(t,y, 'r');
xlabel('Tiempo', 'Fontsize', 10);
ylabel('Respuesta', 'Fontsize', 10);
title({'Sistema de segundo orden', 'Respuesta escaln'}, 'Fontsize', 10);
grid

Al analizar el cdigo elaborado para la funcin que cumple el botn slider1 se


observa que se ajusta la propiedad String del botn de edicin de texto edit2

203

Melanio A. Coronado H.

colocado a la derecha del slider con el valor correspondiente a la posicin de la


barra deslizante (set(handles.edit2, 'String', num2str(tau))).

Botn slider2
Con el deslizamiento de la barra de este botn se cambia el valor de la ganancia
estacionaria y se ejecuta la solucin de la ecuacin diferencial con los valores
asignados a los parmetros de la ecuacin en cada uno de los otros botones slider.
El cdigo elaborado para dicha funcin es el que se muestra a continuacin:

% --- Executes on slider movement.


function slider2_Callback(hObject, eventdata, handles)
% hObject handle to slider2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
%
get(hObject,'Min') and get(hObject,'Max') to determine range of slider
tau = get(handles.slider1, 'Value');
K = get(handles.slider2, 'Value');
psi = get(handles.slider3, 'Value');
tiempo = get(handles.slider4, 'Value');
escalon = get(handles.slider5, 'Value');
set(handles.edit3, 'String', num2str(K));
funtrans = tf(K*escalon, [tau^2 2*tau*psi 1]);
[y, t] = step(funtrans, tiempo);
plot(t,y, 'r');
xlabel('Tiempo', 'Fontsize', 10);
ylabel('Respuesta', 'Fontsize', 10);
title({'Sistema de segundo orden', 'Respuesta escaln'}, 'Fontsize', 10);
grid

Al analizar el cdigo elaborado para la funcin que cumple el botn slider2 se


observa que se ajusta la propiedad String del botn de edicin de texto edit3
colocado a la derecha del slider con el valor correspondiente a la posicin de la
barra deslizante (set(handles.edit3, 'String', num2str(K)));

204

Melanio A. Coronado H.

Botn slider3
Con el deslizamiento de la barra de este botn se cambia el valor del coeficiente de
amortiguamiento y se ejecuta la solucin de la ecuacin diferencial con los valores
asignados a los parmetros de la ecuacin en cada uno de los otros botones slider.
El cdigo elaborado para dicha funcin es el que se muestra a continuacin:

% --- Executes on slider movement.


function slider3_Callback(hObject, eventdata, handles)
% hObject handle to slider3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
%
get(hObject,'Min') and get(hObject,'Max') to determine range of slider
tau = get(handles.slider1, 'Value');
K = get(handles.slider2, 'Value');
psi = get(handles.slider3, 'Value');
tiempo = get(handles.slider4, 'Value');
escalon = get(handles.slider5, 'Value');
set(handles.edit4, 'String', num2str(psi));
funtrans = tf(K*escalon, [tau^2 2*tau*psi 1]);
[y, t] = step(funtrans, tiempo);
plot(t,y, 'r');
xlabel('Tiempo', 'Fontsize', 10);
ylabel('Respuesta', 'Fontsize', 10);
title({'Sistema de segundo orden', 'Respuesta escaln'}, 'Fontsize', 10);
grid

Al analizar el cdigo elaborado para la funcin que cumple el botn slider3 se


observa que se ajusta la propiedad String del botn de edicin de texto edit4
colocado a la derecha del slider con el valor correspondiente a la posicin de la
barra deslizante (set(handles.edit4, 'String', num2str(psi)));

Botn slider4
Con el deslizamiento de la barra de este botn se cambia el valor del tiempo de la
simulacin y se ejecuta la solucin de la ecuacin diferencial con los valores

205

Melanio A. Coronado H.

asignados a los parmetros de la ecuacin en cada uno de los otros botones slider.
El cdigo elaborado para dicha funcin es el que se muestra a continuacin:

% --- Executes on slider movement.


function slider4_Callback(hObject, eventdata, handles)
% hObject handle to slider4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
%
get(hObject,'Min') and get(hObject,'Max') to determine range of slider
tau = get(handles.slider1, 'Value');
K = get(handles.slider2, 'Value');
psi = get(handles.slider3, 'Value');
tiempo = get(handles.slider4, 'Value');
escalon = get(handles.slider5, 'Value');
set(handles.edit5, 'String', num2str(tiempo))
funtrans = tf(K*escalon, [tau^2 2*tau*psi 1]);
[y, t] = step(funtrans, tiempo);
plot(t,y, 'r');
xlabel('Tiempo', 'Fontsize', 10);
ylabel('Respuesta', 'Fontsize', 10);
title({'Sistema de segundo orden', 'Respuesta escaln'}, 'Fontsize', 10);
grid

Al analizar el cdigo elaborado para la funcin que cumple el botn slider4 se


observa que se ajusta la propiedad String del botn de edicin de texto edit5
colocado a la derecha del slider con el valor correspondiente a la posicin de la
barra deslizante (set(handles.edit5, 'String', num2str(tiempo)));

Botn slider5
Con el deslizamiento de la barra de este botn se cambia el valor del cambio escaln
en la variable de entrada y se ejecuta la solucin de la ecuacin diferencial con los
valores asignados a los parmetros de la ecuacin en cada uno de los otros botones
slider. El cdigo elaborado para dicha funcin es el que se muestra a continuacin:

206

Melanio A. Coronado H.

% --- Executes on slider movement.


function slider5_Callback(hObject, eventdata, handles)
% hObject handle to slider5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
%
get(hObject,'Min') and get(hObject,'Max') to determine range of slider
tau = get(handles.slider1, 'Value');
K = get(handles.slider2, 'Value');
psi = get(handles.slider3, 'Value');
tiempo = get(handles.slider4, 'Value');
escalon = get(handles.slider5, 'Value');
set(handles.edit6, 'String', num2str(escalon))
funtrans = tf(K*escalon, [tau^2 2*tau*psi 1]);
[y, t] = step(funtrans, tiempo);
plot(t,y, 'r');
xlabel('Tiempo', 'Fontsize', 10);
ylabel('Respuesta', 'Fontsize', 10);
title({'Sistema de segundo orden', 'Respuesta escaln'}, 'Fontsize', 10);
grid

Al analizar el cdigo elaborado para la funcin que cumple el botn slider5 se


observa que se ajusta la propiedad String del botn de edicin de texto edit6
colocado a la derecha del slider con el valor correspondiente a la posicin de la
barra deslizante (set(handles.edit6, 'String', num2str(escalon)));

12.6. EJECUCIN DEL GUI


La interfaz completamente elaborada en su configuracin y programacin se
encuentra en condiciones de ensayar su ejecucin y cuando se despliega por primera
vez el GUI se observa como lo muestra la Figura 12.3. Es la respuesta grfica del
cambio escaln de un sistema de segundo orden lineal SISO con los valores de los
parmetros asignados a la propiedad Value de cada uno de los botones slider
desarrollado con el cdigo programado dentro de la
function
BarraSlider_OpeningFcn(hObject, eventdata, handles, varargin)
A continuacin se sugiere al usuario observar el cambio en el perfil grfico
observado, cambiando el valor de un parmetro dinmico del sistema mediante el

207

Melanio A. Coronado H.

movimiento del cuadro deslizante del correspondiente slider y dejando los valores
de los otros parmetros constantes.

Cambio en el coeficiente de amortiguamiento


El grfico que se despliega al abrir el GUI es oscilatorio sostenido con amplitud
constante porque el valor asignado, por defecto, al coeficiente de amortiguamiento
es cero. Si la barra deslizante correspondiente se desplaza lentamente a la derecha se
observa que mientras el valor del coeficiente de amortiguamiento sea mayor que 0
pero menor que 1 la grfica toma un perfil oscilatorio decreciente (Ver Figura 12.4
para un coeficiente de amortiguamiento de 0.3), y si se continua desplazando hacia
la derecha para valores mayores e iguales que 1, entonces el grfico toma un perfil
monotnico estable (Ver Figura 12.5 para un coeficiente de amortiguamiento de 3 y
un tiempo de simulacin de 140)

Figura 12.4. Respuesta escaln


(Coeficiente de amortiguamiento 0.3)

Figura 12.5. Respuesta escaln


(Coeficiente de amortiguamiento 3)
208

Melanio A. Coronado H.

Si se desplaza el cuadro mvil hacia la izquierda del 0, el grfico muestra un perfil


oscilatorio creciente mientras el valor del coeficiente de amortiguamiento sea menor
que -1 y se sigue desplazando hacia la izquierda cuando tome valores iguales o
menor que -1 la grfica muestra un perfil monotnico inestable.

Cambio en la ganancia estacionaria


Observando las respuestas obtenidas para los cambios en el coeficiente de
amortiguamiento realizados anteriormente, se nota que el valor ltimo de la
respuesta estable es 25. Esto se explica porque el valor de la ganancia estacionaria es
5 y el cambio escaln tambin es de 5 y, por lo tanto, el valor ltimo de la respuesta
es el producto entre estos dos parmetros.
Si la barra deslizante correspondiente al valor de la ganancia estacionaria se
desplaza a la derecha se observa que los perfiles grficos no cambian porque el
coeficiente de amortiguamiento se deja constante (0.3) pero el valor ltimo de la
respuesta es mayor con un valor de 40 (Ver Figura 12.6 para un ganancia de 8 y un
coeficiente de amortiguamiento de 0.3).

Figura 12.6. Respuesta escaln


(Ganancia estacionaria 8 Cambio escaln 5 Amortiguamiento 0.3)
Si se asigna un coeficiente de amortiguamiento igual o mayor que 1, entonces la
respuesta es monotnica estable pero su valor ltimo es el producto del valor de la
ganancia estacionaria multiplicado por el valor del cambio escaln. En la Figura
12.7 se muestra el perfil grfico de la respuesta obtenida para un coeficiente de
amortiguamiento de 3, una ganancia de 4 y un cambio escaln de 2. Es un perfil
monotnico estable con un valor ltimo para la respuesta de 8.

209

Melanio A. Coronado H.

Figura 12.7. Respuesta escaln


(Ganancia estacionaria de 4 Cambio escaln de 2 Amortiguamiento de 3)

Cambio en el atraso dinmico


Observando las respuestas obtenidas para los cambios introducidos en todos los
casos considerados anteriormente, se nota que las respuestas se estabilizan en un
determindo tiempo. Esto depende del valor asignado al parmetro atraso dinmico.
Si el cuadro deslizable correspondiente al atraso dinmico se mueve hacia la derecha
(se aumenta el atraso dinmico), entonces la respuesta es mas atrasada (es decir, se
estabiliza en un tiempo mayor) pero si se mueve hacia la izquierda (se disminuye el
atraso dinmico), entonces la respuesta muestra menos atraso (es decir, se estabiliza
en un tiempo menor). En la Figura 12.8 se muestra el perfil obtenido al aumentar el
atraso dinmico de 5 a 8 en el caso considerado en la Figura 12.6. Para una mejor
observacin se aumenta el tiempo de simulacin a 200 unidades de tiempo.

Figura 12.7. Respuesta escaln


(Ganancia estacionaria 8 Cambio escaln 5 Atraso dinmico de 8)

210

Melanio A. Coronado H.

13. FIGURE Propiedades MenuBar y Toolbar


El entorno para el desarrollo de una interfaz o GUIDE es un componente Figure con
un conjunto de atributos entre los cuales se encuentra la propiedad MenuBar y la
propiedad Toolbar que se pueden ajustar a una opcin que permita mostrar la barra
de mens y la barra de herramientas que, por defecto despliega Matlab en sus
interfaces. Otro ejemplo de Figure es la ventana de Matlab donde se despliegan
grficos y que por defecto incluye la barra de men y la barra de herramientas
estndar

13.1. BARRA DE MENS EN UNA FIGURA (Propiedad MenuBar)


Esta propiedad permite al usuario mostrar o esconder la barra de men que Matlab
ubica en el tope de la ventana de la figura. Para incluir la barra de men dentro de un
GUI se despliega el inspector de propiedades de la Figure, se despliega el botn que
aparece a la derecha de la propiedad MenuBar y se selecciona la opcin Figure. Con
esta seleccin se logra que al correr la interfaz se muestre una barra como la
observada en la Figura 13.1, con varios mens cuyos nombres son: File, Edit, View,
Insert, Tools, Desktop, Window y Help.

Figura 13.1. Barra de mens

Men File (Archivo)


El men File (Archivo) contiene las opciones New, Open, Close, Save, Save As,
Generate Code, Import Data, Save Workspace As, Preferences, Export Setup, Print
Preview y Print. En la Figura 13.2 se muestra la ventana de ttulo Figure 1 donde se
despliega el grfico de la funcin peaks insertada dentro de la librera de Matlab y
que, por defecto, incluye la barra de mens y la barra de herramientas Para obtener
lo anterior basta con digitar peaks en el editor de comando de Matlab. En la Figura
13.2(a) se depliega el men File mientras que en la Figura 13.2(b) se despliega el
men Edit.

Men Edit (Edicin)


Este men contiene las opciones muy conocidas en la edicin de un grfico que se
encuentre en la interfaz como Undo, Redo, Cut, Copy, Paste, Clear Clipboard,
211

Melanio A. Coronado H.

Delete y Select All adems de otros submens importantes como Figure properties,
Axes properties, Current Object Properties y Colormap. Otras opciones incluidas
para el borrado de algunos recursos son Clear Figure, Clear Command Window,
Clear Command History y Clear Workspace. A continuacin se explican apartes de
algunas de las opciones incluidas en el men Edit.

(a)

(b)

Figura 13.2. (a) Men File (Archivo) (b) Men Edit

Opcin Figure Properties (Propiedades de la Figura)


Al escoger la opcin Figure Properties del men Edit se despliega una ventana
como la que aparece en la Figura 13.3.

Figura 13.3. Ventana Figure Properties


212

Melanio A. Coronado H.

Por defecto aparece las opciones para modificar el color de la interfaz (Colormap y
Figure Color), y tambin se puede mostrar o esconder el nmero de la figura (Show
Figure Number) y cambiar el nombre de la ventana (Figure Name). Al presionar el
botn More Properties se despliega el inspector de propiedades de la figura. Si sobre
la interfaz se encuentra algn objeto como una flecha o un rectngulo por ejemplo,
al seleccionarlo se despliega sobre la misma ventana las opciones para cambiar sus
propiedades como color, estilo de lnea, tipo de lnea, etc., adems del botn More
properties que despliega el inspector de propiedades de dicho objeto.

Opcin Axes Properties (Propiedades de los ejes)


Es similar a la ventana anterior, salvo que esta opcin permite la edicin de algunas
propiedades de los ejes del grfico como: el ttulo del grfico (Propiedad Title), los
colores (Colors), las cuadrculas (Grid), la caja (Box), la leyenda sobre el eje (X
Label, Y Label, Z Label), los valores numricos lmites (X Limits, Y Limits, Z Limits)
y la escala numrica (X Scale, Y Scale, Z Scale) en cada uno de los ejes (X Axis, Y
Axis, Z Axis, el estilo y el tamao de letra en las leyendas sobre los ejes (Font), etc.
(Observe la Figura 13.4)

Figura 13.4. Ventana Axes Properties

Opcin Current Object Properties (Propiedades actuales del objeto)


Al seleccionar esta opcin, se despliega una ventana semejante a la explicada
anteriormente en donde se pueden ver y modificar las propiedades de los objetos que
se encuentren en la interfaz. En la ventana Current Object Properties se observan
los cuadros para editar las mismas propiedades que se editan cuando se selecciona la
213

Melanio A. Coronado H.

opcin Figure Properties, es decir, Figure Name, Colormap, Figure Color, Show
Figure Number.

Opcin Colormap. (Mapa de colores)


Al seleccionar esta opcin dentro del men Edit se despliega una ventana con el
ttulo Colormap Editor, en donde se encuentran las opciones para definir el contorno
de una imagen con color (Ver Figura 13.5). Los colores que muestra la funcin
peaks desplegada en la Figura 13.5(a) es fijada en la ventana Colormap Editor segn
se observa en la Figura 13.5(b).

(a)

(b)

Figura 13.5. (a) Funcin peaks, (b) Ventana Colormap


Se puede definir la escala de colores moviendo cada una de las barras que se
encuentran all ya sea a la izquierda o a la derecha, dependiendo del color que se
quiera que prevalezca. Adems en esta ventana se encuentran unos contornos
preestablecidos por Matlab en el men Tools de dicha ventana. En la Figura 13.5(a)
se muestra, adicionalmente, la barra que muestra la distribucin de los colores y que
se despliega abriendo el men Insert y seleccionando la opcin Colorbar. Las otras
opciones incluidas dentro del men Edit se dejan para el estudio del lector.

Men View (Ver)


En el men View se tienen las opciones que permiten la insercin, dentro del GUI,
de recursos tiles como Figure Toolbar (barra de herramienta de la figura), Camera
214

Melanio A. Coronado H.

Toolbar (barra de herramientas de la cmara), Plot Edit Toolbar (barra de


herramientas para la edicin de grficos), Figure Palette (paleta de objetos de la
figura), Plot Browser (Mostrador de grfico) y Property Editor (Editor de
propiedades).

Opcin Figure Toolbar (Propiedad ToolBar)


La propiedad Toolbar permite al usuario mostrar la barra de herramientas que
Matlab ubica debajo de la barra de men en el tope de la ventana de la figura y que
se muestra en la Figura 13.6.

Figura 13.6. Barra de herramientas Figure Toolbar

Para incluir la barra de herramientas dentro de un GUI se despliega el inspector de


propiedades de la Figure, se despliega el botn que aparece a la derecha de la
propiedad ToolBar y se selecciona la opcin Figure. Con esta seleccin se logra que
al correr la interfaz se muestre una barra con los iconos o atajos mostrados en la
Figura 10.5 y cuyos nombres son: New Figure, Open File, Save Figure, Print
Figure, Edit Plot, Zoom in, Zoom out, Pan, Rotate 3D, Data Cursor, Brush/Select
Data, Link Plot, Insert Colorbar, Insert Legend, Hide Plot Tools y Show Plot Tools
and Dock Figure. La Figura 13.7 muestra una figura con el men View desplegado y
con la barra de herramientas incluida.

Figura 13.7. Men View y barra de herramientas


215

Melanio A. Coronado H.

Las ejecuciones que se alcanzan al presionar cada uno de los botones incluidos en la
barra de herramienta son ampliamente conocidas. Son rutas ms cortas para realizar
ciertas funciones que tambin se pueden ejecutar por otras rutas ms largas como
por ejemplo a travs de opciones incluidas en alguno de los mens.

Opcin Camera Toolbar


Esta opcin del men View permite al usuario mostrar la barra de herramientas de la
cmara que Matlab ubica debajo de la barra de men en el tope de la ventana de la
figura y que se muestra en la Figura 13.8.

Figura 13.8. Barra de herramientas Camera Toolbar

Con las opciones incluidas en esta barra se manejan aspectos visuales de la figura
como por ejemplo la orientacin espacial, el desplazamiento horizontal o vertical y
la iluminacin, entre otros. Si se acerca el puntero del mouse se pueden observar los
nombres de los atajos as, de izquierda a derecha: Orbit Camera, Orbit Scene Light,
Pan/Tilt Camera, Move Camera Horizontally/Vertically, Move Camera
Forward/Back, Zoom Camera, Roll Camera, Principal Axis X, Principal Axis Y,
Principal Axis Z, No Principal Axis, Toggle Scene Light, Orthografic Projection,
Perspective Projection, Reset Camera and Scene Light y Stop Camera/Light Motion.

Opcin Plot Edit Toolbar


Esta opcin del men View permite al usuario mostrar la barra de herramientas que
contiene iconos o atajos que permiten editar algunas propiedades de la figura como
su color, los textos, la alineacin, la inclusin de lneas o flechas o figuras
geomtricas, etc. Observe la Figura 13.9.

Figura 13.9. Barra de herramientas Plot Edit Toolbar

216

Melanio A. Coronado H.

Si se acerca el puntero del mouse a cada uno de los iconos de la barra se pueden
observar los nombres de los atajos as, de izquierda a derecha: Color, Edge Color,
Text Color, Font, Bold, Italic, Align Left, Align Center, Align Right, Insert Line,
Insert Arrow, Insert Double Arrow, Insert Text Arrow, Insert TextBox, Insert
Rectangle, Insert Elipse, Pin to axes y Align/Distribute. La Figura 13.10 muestra un
grfico de la funcin peaks incluyendo la barra de herramientas Camera Toolbar,
adems de la barra de mens y de la barra de herramientas Figure Toolbar.
La Figura 13.10 muestra el grfico de la funcin peaks incluyendo la barra Figure
Toolbar, la barra Camera Toolbar y la barra Plot Edit Toolbar.

Figura 13.10. Figura Barra de mens Barras de herramientas


Se deja como asignacin para el estudiante el ensayar la funcin de cada uno de los
atajos de cada una de las barras de herramientas explicadas anteriormente; as como
tambin las ltimas tres opciones del men View, es decir, Figure Palette, Plot
Browser y Property Editor.

Men Insert (Insertar)


El men Insert contiene un conjunto de opciones con los cuales se pueden insertar
ciertos elementos adicionales sobre la grfica como el ttulo y las leyendas sobre los
ejes, lneas simples o con saetas, textos adicionales, etc. La Figura 13.11 muestra
una figura con el grfico de la funcin peaks y el men Insert desplegado. Se lee que

217

Melanio A. Coronado H.

las opciones son: X Label, Y Label, Z Label, Title, Legend, Colorbar, Line, Arrow,
Text Arrow, Double Arrow, TextBox, Rectangle, Elipse, Axes y Light.

Figura 13.11. Men Insert

Se observa que algunas de las opciones incluidas en el men Insert tambin


aparecen en la barra de herramientas Plot Edit Toolbar, como Line, Arrow, Text
Arrow y otras.

Men Tools (Herramientas)


En el men Tools se encuentran un conjunto de opciones con los cuales se logran
objetivos de diferente naturaleza. El listado de opciones es el siguiente: Edit Plot,
Zoom In, Zoom Out, Pan, Rotate 3D, Data Cursor, Brush, Link, Reset View,
Options, Pin to Axes, Snap To Layout Grid, View Layout Grid, Smart Align and
Distribute, Align Distribute Tool, Align, Distribute, Brushing, Basic Fitting, Data
Statistics.
Algunas opciones son de amplio conocimiento como por ejemplo, Zoom In y Zoom
Out son herramientas para aumentar o disminuir el tamao de la figura, Rotate 3D se
utiliza para girar el grfico, Align Distribute Tool y Align son recursos disponibles
para la alineacin de varios objetos sobre la figura. Pero otras opciones son
herramientas especficas para la manipulacin de la figura.

Men Desktop (Escritorio)


El men Desktop solamente contiene la opcin Dock Figure 1, que al seleccionarla
hace que la grfica se incruste dentro del espacio de trabajo de Matlab en su parte
218

Melanio A. Coronado H.

superior. La Figura 13.12 muestra el grfico de la funcin peaks dentro del espacio
de trabajo de Matlab 2013a despus de haber seleccionado la opcin Dock Figure 1
del men Desktop.

Figura 13.12. Figura dentro del espacio de trabajo de Matlab

Alrededor de la figura se observan las secciones que se abren, por defecto, con el
espacio de trabajo de Matlab, a la izquierda Current Folder, Details, debajo
Command Window y a la derecha Workspace y Command History. En la parte
superior derecha de la figura incrustada se encuentran un botn para cerrarla y otro
botn que al presionarlo se despliega el men contextual que aparece con las
opciones Minimize, Maximize, Undock, Undock Figure 1 y Close. Si se quiere
desvincular la figura del espacio de trabajo de Matlab se selecciona la opcin
Undock Figure 1 del men contextual.
Se observa que el panel abierto, en este caso, de Matlab es el denominado FIGURE
que muestra las barras que aparecen en la figura. Como un ejemplo de la utilidad de
algunos recursos no explicados anteriormente, se consideran los iconos de la barra
de herramientas nombrados como Hide Plot Tools y Show Plot Tools and Dock
Figure. Al seleccionar el segundo de los anteriores, se anexa a la derecha de la
figura una seccin titulada Plot Browser como se muestra en la Figura 13.13 con dos
cuadros de verificacin seleccionados. Si se omite la verificacin de la opcin
219

Melanio A. Coronado H.

Peaks, entonces solo se ve el grfico y se esconden los ejes y la caja en donde se ha


visto encerrada la figura.

Figura 13.13. Opcin Show Plot Tools and Dock Figure

Si a continuacin se presiona el icono Hide Plot Tools se oculta la ventana Plot


Browser y la grfica se observa incrustada en el espacio de trabajo de Matlab como
se observa en la Figura 13.14.

Figura 13.14. Opcin Hide Plot Tools

220

También podría gustarte