Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3 Creación de La Interfaz PDF
3 Creación de La Interfaz PDF
27
Al iniciar MATLAB, el editor aparece en su diseo por defecto, incluyendo los siguientes
paneles:
Workspace: Espacio de trabajo. Explora los datos que se crean o se importan desde
archivos.
28
Una interfaz de usuario grfica (GUI) es una representacin grfica de una o ms ventanas que
contienen los controles, denominados componentes, que permiten a un usuario realizar tareas
interactivas. Los componentes de la interfaz grfica de usuario puede incluir mens, barras de
herramientas, botones, botones de radio, cuadros de lista, deslizadores, que permitirn al
usuario interactuar con el GUI y establecer el flujo de ejecucin.
Las interfaces grficas de usuario creadas con herramientas de MATLAB tambin puede
realizar cualquier tipo de clculo, leer y escribir archivos de datos, comunicarse con otras
interfaces grficas de usuario, y visualizar datos como tablas o grficos.
Se pueden construir interfaces de usuario grficas de MATLAB en dos formas:
Usar GUIDE (GUI Development Environment); un kit de construccin interactiva de
interfaz grfica de usuario.
Crear archivos de cdigo que generan interfaces grficas de usuario como funciones o
scripts (programacin de la construccin GUI).
En el primer enfoque, GUI crea un archivo de cdigo asociado que contiene las devoluciones de
llamada para la interfaz grfica de usuario y sus componentes. Consta de dos archivos; un
archivo *.m (ejecutable) y otro *.fig (parte grafica). Las dos partes estn unidas a travs de las
subrutinas Callback. Una vez que se graban los archivos desde la consola de emisin (si
salvamos la *.fig automticamente se guarda el *.m asociado) podemos ejecutar el programa en
la ventana de comando de MATLAB solamente escribiendo el nombre del archivo.
En el segundo, se crea un nico archivo de cdigo que define todas las propiedades de los
controles y objetos que componen la parte grfica, adems de las distintas subrutinas y
comportamientos de la aplicacin. Cuando el usuario ejecuta el archivo, se crea
automticamente la figura, que se llena con los componentes, y se ocupa de las interacciones del
usuario.
Dado que MATLAB ha desarrollado esta aplicacin para realizar el diseo de interfaz grfica,
el cual facilita enormemente la creacin de la misma, se proceder a utilizar esta herramienta.
Esta consta de dos etapas:
Diseo de los componentes (controles, mens y axes) que formarn el GUI.
Programacin de la respuesta de cada uno de los componentes ante la interaccin del
usuario.
Para abrir la aplicacin GUIDE desde la consola de MATLAB, basta con iniciar una nueva GUI
gracias al asistente de inicio, crendote una nueva GUI en blanco como se muestra en la figura
3-2.
Una vez seleccionado esta nueva GUI en blanco, automticamente se abre la aplicacin de
MATLAB con todos los comandos necesarios para la elaboracin de la interfaz.
29
3.2.1
Toda interfaz debe poseer una distribucin correcta de todos los comandos que la componen.
Comunes a las diferentes metodologas, las distintas interfaces se caracterizan por estar
diseadas con tres zonas de visualizacin. Estas zonas son:
Pantalla de controles
Barra de mens
Barra de herramienta
30
se caracteriza por la facilidad e intuicin del programador para disear, colocar y visualizar los
controles, utilizndose principalmente a la hora de crear por primera vez los objetos.
Las herramientas de GUIDE estn disponibles en el editor de diseo que se muestra en la figura
siguiente.
Aling object
M-file Editor
Toolbar Editor
Property Inspector
Object browser
Run GUI
Component Palett
Se diferenciaran entre dos tipos de comandos; los pertenecientes al editor de diseo, y los que se
encuentran en la paleta de componentes.
31
Pantalla de controles
Existen 14 tipos de controles diferentes. La utilizacin de cada uno vendr dada en funcin de
sus caractersticas y aplicacin. Se describen a continuacin los distintos componentes usados
en esta aplicacin:
Push Button
Este comando se utiliza para ejecutar o lanzar una orden cuando se pulsa. El aspecto
tpico de este botn es el que se muestra en la figura 3-4.
32
Paneles (Panel)
Un panel no es un control propiamente dicho. Su funcin es la de englobar una serie de
componentes para una mejor estructuracin por pantalla.
Ventanas (Axes)
Una ventana es un objeto que permite la representacin de grficas o imgenes. En este
caso es utilizado para la representacin de las curvas de ensayo.
33
Todos los controles comentados se denominan objetos. Estos presentan unas propiedades que
son editables por el programador. En funcin de las necesidades, del estado en que se encuentre
el programa y de la estructuracin del mismo, podrn modificarse durante el desarrollo de la
aplicacin. Muchas de estas propiedades son comunes a la mayora de los controles, aunque
cada uno de ellos puede presentar propiedades particulares.
La herramienta que presenta MATLAB para modificar las propiedades del objeto deseado es el
inspector de propiedades. En l se representan todas las variables modificables del objeto,
indicndose las opciones configurables. En la figura 3-11 se muestra parte del listado de
variables de un texto editable.
De entre todas las variables existentes, las que se han utilizado con una mayor frecuencia son las
que se indican a continuacin:
Enable: Control para habilitar el objeto. En el caso de que sea un Push Button, desactiva
o activa la subrutina asociada al objeto. Las opciones que presenta son on/off.
FontAngle: Aplica el formato de cursiva al texto asociado al objeto. Las opciones son
normal/italic/oblique.
34
HandleVisibility: Control para visualizar el objeto. Las opciones de este control son
on/off.
HorizontalAlignment: Control para la alineacin del texto dentro del objeto. Las
posibles opciones son left/righ/center.
Position: en l se indica tanto la posicin del objeto, como las dimensiones que posee el
mismo (ancho y alto).
Style: Indica el tipo de objeto que es (Push button, textos estticos, caja de texto
editable)
Barra de mens
En el caso de la programacin de la barra de mens, MATLAB posee la herramienta editor de
men para crear todos los controles que el programador estime oportuno.
35
En l se puede elegir el nivel que presenta cada control, as como el nombre con el que
aparecer en la interfaz y el nombre utilizado para la llamada a la subrutina.
Como se observa en la figura 3-12, aparece ordenado en forma de esquema por lo que la
creacin del men es muy visual y esquemtica. Tambin se da la opcin de programar un men
contextual, aunque no ha sido necesario introducirlo ya que con los controles utilizados es
suficiente para un manejo de la aplicacin gil y simple de manejar.
Barra de herramienta
En el caso de los controles de la barra de herramienta, MATLAB tambin dispone de su propia
herramienta. Se distinguen dos tipos de controles posibles de configurar, push tool y toggle tool.
El primero de ellos es un control el cual se ejecuta en el momento de pulsar el ojeto, mientras
que el segundo es un control que una vez pulsado, permanece activo hasta que se vuelva a
pulsar, y por tanto se desactiva.
Algunos de estos controles ya vienen predefinidos por defecto como son los relativos al manejo
de imgenes de las ventanas. De entre ellos los que se han utilizado son los de alejar y acercar la
imagen mediante zoom, y el de arrastrar la imagen. Aparte se cre el control de clculo y el de
nuevo documento.
36
3.2.2
Una vez se tiene planificada la forma de la interfaz, guardamos el proyecto y el GUIDE genera
de forma automtica un fichero *.m que controla el funcionamiento del GUI. Este fichero
inicializa el GUI y contiene la llamada a todas las subrutinas o callbacks del GUI (las rdenes
que se ejecutan cuando el usuario interacta con un elemento del GUI). Usando el editor de
MATLAB se podr aadir instrucciones de cdigo a los callbacks para realizar las funciones
que se quieran asignar.
La estructura que presenta entonces el archivo est formada por dos bloques; el de
inicializacin, el cual contiene toda la informacin requerida para el correcto arranque del
programa, y el de las subrutinas de los controles.
Inicializacin del programa
37
interactuar con ellos. La tercera presenta las salidas del programa, aunque no se usa
habitualmente, ya que se utilizarn variables globales a tal efecto.
Para poder diferenciarlas en las tres aplicaciones, se crea una variable global que posee la
informacin anteriormente comentada y que se le asigna de la siguiente manera.
function ISO_12004_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 ISO_12004 (see VARARGIN)
global data_prog_ISO manejador_prog_iso
handles.output = hObject
manejador_prog_iso=handles;
En el caso de la aplicacin desarrollada para la metodologa ISO, se crea una variable tipo
estructura que posee los identificadores de los diferentes objetos. Esta variable se denomina
handles y posee la informacin que se muestra en las siguientes lneas de texto.
handles =
figure1:
popupmenu1:
ayuda_prog_iso:
informe_prog_iso:
uipanel10:
text38:
uipanel7:
graficas_prog_iso:
uitoolbar1:
archivo_iso:
uipanel4:
axes2:
axes1:
uipanel3:
uipanel2:
268.0012
34.001
33.0015
30.0015
23.0018
342.0012
339.0012
337.0012
331.0012
327.0012
307.0012
302.0012
297.0012
290.0012
269.0012
De esta forma obtenemos una variable global que podr utilizarse en las tres aplicaciones,
pudindose hacer referencia de una aplicacin a otra. En el caso de que no se utilizara esta
variable global, no se podra acceder a la informacin de una aplicacin a otra.
38
Subrutinas
El cuerpo del programa principal presenta todas las llamadas a las subrutinas o Callbacks de los
objetos programados para tal funcin.
Al hacer click derecho en el elemento ubicado en el rea de diseo, una de las opciones ms
importantes es View Callbacks, la cual, al ejecutarla, abre el archivo .m asociado a nuestro
diseo y nos posiciona en la parte del programa que corresponde a la subrutina que se ejecutar
cuando se realice una determinada accin sobre el elemento que estamos editando. Por defecto
se crea el siguiente texto:
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)
39
Para comprender la estructura que presentan los archivos *.fig con los que se disea las
interfaces, se presentar una de las herramientas aportadas por MATLAB para visualizar todos
los objetos que lo componen. Esta herramienta es el explorador de objetos y sirve como visor de
la estructura que conforman todos los objetos utilizados en la interfaz.
40
de los objetos y controles, de desglosarn cada uno de los objetos principales que apareen en la
figura anteriormente comentada, en cada una de las tres aplicaciones desarrolladas.
3.3.1
Como se ha comentado anteriormente, el explorador de objetos contiene todos los controles que
intervienen en la interfaz. Dado la cantidad de objetos que contiene la interfaz, se muestra en la
grfica 3-16 una pequea parte del esquema completo que compone el diseo del archivo *.fig
de la aplicacin ISO 12004-2. Para poder visualizar por completo este esquema, se hace preciso
dirigirse al Anexo n 1.
Como se puede observar en la figura 3-16, la mayora de los objetos se agrupan por paneles,
obtenindose de esta forma una composicin ms estructurada de la aplicacin.
Una vez que se presenta el esquema de objetos que componen la interfaz, se pasa a comentar el
proceso de control del programa creado. Para facilitar su comprensin, se presenta en forma de
diagrama de flujo. De esta forma se observa de una forma ms clara y concisa, el
funcionamiento interno de la aplicacin.
41
Hay que hace constar, que el diagrama de flujo presentado en la figura 3-17 representa las
acciones ms representativas del esquema general de funcionamiento, pudiendo existir controles
internos de nivel inferior que no aparecen. Tambin se ha obviado el correspondiente al proceso
de clculo de los resultados, agrupado en el cuadrado Calcular procedimiento ISO 12004 por
encontrarse dicho diagrama en el apartado 2.2 y proporcionado por la norma. Como es lgico
suponer, en todo momento se puede salir de la aplicacin en el momento que el usuario desee, o
comenzar un nuevo clculo preparando la aplicacin para cargar los archivos deseados.
42
3.3.2
Al igual que en el apartado anterior, se mostrar en forma de esquema todos los objetos que
componen la interfaz. De nuevo se representa solo una pequea porcin del esquema completo
del diseo del archivo *.fig
43
Como se resalt en los comentarios para el diagrama de flujo de la aplicacin ISO, se han
representado las operaciones principales para una mayor claridad del diagrama. Aunque las
funciones secundarias se encuentran programadas, no se han representado.
44
3.3.3
Al igual que en las metodologas anteriores, se presentar la configuracin del archivo *.fig que
componen la interfaz.
45
46
47
3.4.1
Obtener valor de una propiedad de un elemento para realizar una funcin concreta
Habilitar o deshabilitar los botones para indicar al usuario que opciones pueden utilizar en
cada momento. Este es uno de los principales utensilios empleados por el programador para
poder orientar los pasos del usuario a lo largo del programa
48
3.4.2
Cargar archivos
Como se comentar en captulos posteriores, los archivos de datos que se introducen deben
tener una estructura determinada, en funcin de la metodologa que se utilice. En caso de que
estos archivos sean errneos, o estn mal estructurados, la aplicacin de MATLAB avisar con
un error.
Para realizar cargas de archivos *.txt, se dispone principalmente de las funciones uigetfile,
fullfile y importdata. A continuacin se describir el funcionamiento de cada una de estas
funciones, as como los variables que intervienen y se mostrar un ejemplo de cmo estructurar
el cdigo para que trabaje correctamente.
uigetfile
Esta funcin visualiza un cuadro de dilogo modal en donde se muestran los archivos en el
directorio actual, permitiendo que el usuario seleccione o escriba el nombre del archivo que
desea cargar. Si el nombre de archivo es vlido y si el archivo existe, cuando el usuario hace clic
en Abrir, uigetfile devuelve el nombre del archivo. Si el usuario hace clic en Cancelar o cierra la
ventana de dilogo, uigetfile devuelve un 0. La sintaxis que presenta esta funcin es la siguiente:
[Nombre direccin] = uigetfile (extensin, ttulo)
Se necesitan dos parmetros para esta funcin; extensin y ttulo. Por extensin se refiere al tipo
de archivo que se pueden importar, en este caso *.txt, mientras que el ttulo indica el nombre de
la ventana de visualizacin mostrada al usuario.
fullfile
Esta funcin construye una cadena de caracteres compuesto por los parmetros que se indiquen,
en este caso el nombre completo del directorio y el nombre del archivo especificado.
Nombre_completo = fullfile (direccin, nombre)
importdata
Esta funcin carga los datos del archivo seleccionado en el espacio de trabajo. S utilizan tres
parmetros para el correcto funcionamiento de esta orden; Nombre completo, delimitador y
lneas de cabecera. El parmetro nombre completo es el nombre del archivo. El parmetro
lneas de cabecera es un nmero que indica la cantidad de lneas que componen la cabecera,
importando los datos desde la lnea siguiente del nmero indicado hasta el final del archivo. El
delimitador establece el carcter utilizado para separar los diferentes datos ledos en el archivo.
A = importdata (Nombre completo, delimitador, lneas de cabecera)
49
La estructura completa para poder realizar la carga correcta de los archives deseados es la que se
muestra en las siguientes lneas:
[nombre direc]=uigetfile('*txt','Open');
fullname_cargar = fullfile(direc,nombre);
if nombre==0
return
else
DELIMITER = ' ';
HEADERLINES = 6;
D_ISO = importdata(fullname_cargar, DELIMITER, HEADERLINES);
end
En este caso se ha mostrado el cdigo inicial para realizar la carga de los datos en la matriz
D_ISO, aunque no se muestra la casustica de posibles errores de importacin y la correcta
ordenacin de los valores.
3.4.3
El ajuste de curvas es un proceso mediante el cual, dado un conjunto de N pares de puntos {xi,
yi} (siendo x la variable independiente e y la dependiente), se determina una funcin matemtica
f(x) de tal manera que la suma de los cuadrados de la diferencia entre la imagen real y la
correspondiente obtenida mediante la funcin ajustada en cada punto sea mnima:
En el caso particular de la norma ISO en el que se indica que la funcin a ajustar tiene que ser
una parbola inversa, la expresin se presenta a continuacin:
50
El coeficiente de determinacin, R2, definido entre 0 y 1, nos da una idea de la bondad del
ajuste, de manera que para valores cercanos a 1 el ajuste es perfecto, mientras que para valores
cercanos a cero indica inexistencia de relacin entre x e y con el modelo de ajuste propuesto. En
la siguiente expresin se muestra este valor:
Donde,
polyfit
Esta funcin encuentra los coeficientes de un polinomio p (x) de grado n que se ajusta a los
datos, p (x (i)) -y (i), en el sentido de mnimos cuadrados. El resultado p es un vector fila de
longitud n +1 que contiene los coeficientes del polinomio en potencias descendentes.
p = polyfit(x,y,n)
Por ejemplo, para el caso de n=2, se obtendra un vector de 3 componentes en el que el primer
valor hace referencia al coeficiente a, el segundo al coeficiente b y el tercero al coeficiente c de
la funcin que se representa a continuacin.
51
lsqcurvefit
lsqcurvefit resuelve los ajustes de datos de problemas no lineales. lsqcurvefit requiere una
funcin definida por el usuario para calcular la funcin vectorial F (x, xdata). El tamao del
vector devuelto por la funcin definida por el usuario debe ser el mismo que el tamao de los
vectores ydata, xdata.
x = lsqcurvefit(fun,x0,xdata,ydata)
3.4.4
Derivadas
52
El valor de la derivada segunda en el punto medio es el doble del trmino cuadrtico del
polinomio de ajuste.
El procedimiento para calcular la derivada segunda sin filtrar es similar a la filtrada, salvo que
en lugar de tomar 5 puntos de ajuste, se toman tres.
53
Como se puede observar en la figura 3-23, MATLAB presenta diferentes productos para realizar
aplicaciones o libreras en funcin del lenguaje de programacin. Segn las necesidades del
programador, podr escoger entre estos diferentes productos. Para conocer las posibilidades que
ofrece cada uno de ellos, se presenta a grandes rasgos una tabla con las aplicaciones soportadas
por cada producto.
54
Para este proyecto en cuestin, el producto que se requiere es el MATLAB Compiler, ya que es
el nico capaz de crear aplicaciones independientes en cdigo C++. El resto son capaces de
desarrollar libreras y otros componentes, pero no aplicaciones independientes.
3.5.1
MATLAB es una gran herramienta que acelera el tiempo de desarrollo. Como contrapartida, las
aplicaciones de MATLAB tienen dos problemas principales para la redistribucin. En primer
lugar, estn escritos en un lenguaje de script, por lo que cualquier persona podra leer el cdigo
de la aplicacin. En segundo lugar, se requieren para ejecutar dentro de MATLAB, que otras
personas pueden no haber instalado. Estas dificultades se pueden superar con la creacin de una
aplicacin independiente.
El producto MATLAB Compiler puede compilar archivos *.m, archivos MEX, objetos de
MATLAB, u otro cdigo de MATLAB. El producto MATLAB Compiler, puede generar
aplicaciones independientes en UNIX, Windows y Macintosh. Al empaquetar y distribuir
aplicaciones y libreras que el producto MATLAB Compiler genera, se tiene que incluir el
MATLAB Compiler Runtime (MCR), as como un conjunto de apoyo a los archivos generados
por el compilador MATLAB. Tambin establece las rutas de acceso del sistema en el equipo de
destino para que el MCR y archivos de soporte puedan ser encontrados.
Lcc-win32 C 2.4.1: Para poder compilar archivos propios de MATLAB (archivos *.m o
*.fig) que posteriormente sean ejecutados en ordenadores de 32 bit, se requiere utilizar
este compilador.
Microsoft Visual C++ 2008 Express: para compilar en ordenadores de 64 bit MATLAB
no dispone de compilador propio. En este caso se necesitara este compilador, as como
de un kit de desarrollo de software. Este compilador es gratuito. Se deber instalar en el
ordenar destinado a la creacin de la aplicacin (programador), aunque no es necesario
en el ordenar del destinatario (usuario).
La tabla 4-1 describe los compiladores que son compatibles con diversos productos de
MATLAB. Estos compiladores son proporcionados por diferentes proveedores y estn
disponibles en una variedad de trminos de origen comercial, acadmico, o abierto, pudiendo
ser visitados los sitios Web de los proveedores. Se necesita instalar los siguientes componentes:
55
MATLAB
Compiler
V.
For MEX-file
compilation, load For C and
library, and external
C++
usage of MATLAB
shared
Engine and MAT-file libraries
APIs
For all
features
For all
features
10.0
10.0
9.0
8.0 6
Intel C++ 5
11.1
11.1
3.5
3.0
2.0
1.6
For all
features
3.5.2
Comandos utilizados
56
mbuild setup
Para realizar esta seleccin, se utiliza el comando mbuild setup. Introduciendo esta
instruccin en la ventana de comandos de MATLAB, se localizan los compiladores que se
encuentran instalados en su ordenador. Tan solo se tiene que indicar el compilador deseado para
poder proseguir con el proceso.
Fig. 3-24: Pantalla de confirmacin de eleccin de compilador para creacin de aplicaciones independientes
57
En segundo lugar se indican los archivos (cdigo fuente) que son necesarios para que la
aplicacin funcione correctamente. Se diferencia archivo principal del resto de archivos.
A la hora de indicar los archivos necesarios que contienen todo el cdigo, es necesario
diferenciar la funcin principal del resto de archivos. En este caso, en la carpeta especfica para
la funcin principal se introducir el archivo PROCEDIMIENTOS.m. El resto de archivos, en
58
los cuales se incluyen las funciones secundarias, todas los archivos grficos *.fig y las imgenes
utilizadas en las interfaces, se introducirn en la carpeta Other files. En la figura 3-27 se
muestra como quedara la organizacin de los archivos antes de proceder a la compilacin.
Una vez seleccionado los archivos que componen la interfaz, se procede a su compilacin,
proceso mediante el cual se obtienen una carpeta con el nombre de la aplicacin independiente
creada. Esta carpeta contienen toda la documentacin. Los archivos que existen en el interior es
la que se muestra a continuacin.
SEENECK
distrib
sr
SEENECK.exe
Readme.txt
build.txt
mccExcludedFiles.txt
readme.txt
SEENECK.exe
SEENECK.msvc.manifest
SEENECK_delay_load.c
SEENECK_main.c
SEENECK_mcc_component_data.c
59
60