PROPAGACIÓN Y SATÉLITES INGENIERÍA ELECTRÓNICA INTERFAZ GRÁFICA DE USUARIO EN MATLAB PARA CALCULAR PÉRDIDAS EN EL MODELO DE PROPAGACIÓN DE TIERRA PLANA. Ingrid V. Sarabia Muñoz Jesús E. Amaya Bermúdez Randi Y. Amaya Ibañez
Cod: 0161011 Cod: 0161059 Cod: 0161052
Presentado A: Ing. José Alejo Alejo Rangel Rolón. Rolón.
INTRODUCCIÓN
y
Matlab es un programa interactivo para cálculo numérico y tratamiento de datos. Contiene muchas herramientas y utilidades que permiten además diversas funcionalidades, como la presentación gráfica en 2 y 3 dimensiones. Esos útiles están agrupados en "paquetes" ( toolboxes). Matlab es un programa command-driven, es decir, que se introducen las órdenes escribiéndolas una a una a continuación del prompt ) que aparece en una símbolo » ( prompt interfaz de usuario (una ventana). A Matlab se le pueden añadir paquetes especializados para algunas tareas (por ejemplo, para tratamiento de imágenes). Trabajar con Matlab, aprender un lenguaje simple. En esta introducción se explica el uso de una de las herramientas más utilizadas como el GUIDE . GUIDE es un entorno de programación visual disponible en MATLAB para realizar y ejecutar programas que necesiten ingreso continuo de datos. datos. Tiene las características características básicas de todos los programas visuales como Visual Basic o Visual C++. 1.
y
OBJETIVOS
OBJETIVOS GENERALES Realizar un entorno grafico para calcular un parámetro del modelo de propagación de tierra plana utilizando la herramienta GUIDE de MATLAB.
y
y
OBJETIVOS ESPECÍFICOS ESPECÍFICOS Utilizar la herramienta GUIDE para calcular las pérdidas de acuerdo al modelo de propagación. Realizar la presentación adecuada del programa para darle un aspecto agradable. Personalizar los botones de la interfaz para darle un aspecto casi real al modelo de tierra plana. 2.
MARCO TEORICO
INICIO DEL GUIDE Se puede Iniciar este proyecto, de dos maneras: Ejecutando la siguiente instrucción en la ventana de comandos: >> guide Haciendo un click en el ícono que muestra la figura 1:
cono GUIDE. Í cono
Se presenta el siguiente cuadro de diálogo:
Ventana de inicio de GUI.
PROPAGACIÓN Y SATÉLITES INGENIERÍA ELECTRÓNICA opciones que se encuentran en el menú despegable y haciendo click en el botón de comando. d) Modal Question Dialog Con esta opción se muestra en la pantalla un cuadro de diálogo común, el cual consta de una pequeña imagen, una etiqueta y dos botones Yes y No, dependiendo del botón que se presione, el GUI retorna el texto seleccionado (la cadena de caracteres µYes¶ o µNo¶).
Fig.1 Icono Guide. Posteriormente se cuadro de dialogo:
presenta
el
siguiente
Se elije la primera opción, Blank GUI, y se tiene:
Fig.3. Entorno De Diseño De Gui. Fig.2 Cuadro De Dialogo. Se presentan las siguientes opciones: a) Blank GUI (Default) La opción de interfaz gráfica de usuario en blanco (viene predeterminada), nos Presenta un formulario nuevo, en el cual se puede diseñar el programa.
PROPIEDADES DE LOS COMPONENTES Cada uno de los elementos de GUI, tiene un conjunto de opciones que se puede acceder con click derecho (como se muestra en la figura .4).
b) GUI with Uicontrols Esta opción presenta un ejemplo en el cual se calcula la masa, dada la densidad y el volumen, en alguno de los dos sistemas de unidades. c) GUI with Axes and Menu Esta opción contiene el menú File con las opciones Open, Print y Close. En el formulario tiene un Popup menu, un push button y un objeto Axes, se puede ejecutar el programa eligiendo alguna de las seis
Fig.4 Opciones Del Componente.
PROPAGACIÓN Y SATÉLITES INGENIERÍA ELECTRÓNICA Para personalizar cada elemento se utiliza la opción Property Inspector . El cual permite ver y editar las propiedades de un objeto; Al hacer click derecho en el elemento ubicado en el área de diseño, la opción View Callbacks, que al ejecutarla, abre el archivo .m, asociado al diseño y lo posiciona en la parte del programa; que corresponde a la subrutina que se ejecutará cuando se realice una determinada acción sobre el elemento que se está editando .
Con la opción Property Inspector descrita anteriormente se pude cambiar el nombre con el que aparecerá la función del pushbutton en el m-file, simplemente editando el campo Tag, Se continúa editando los demás componentes, hasta llegar a tener la presentación requerida por el programador dejando por insertar la imagen jpg para finalizada la pantalla. Ejecutando Ctrl+T, se guarda el programa con el nombre asignado en la carpeta MIS_MATLAB. A continuación en la ventana Current Directory aparecen el archivo nombre.fig y .m.
PERSONALIZAR BOTONES
Fig.5.Property Inspertor
FUNCIONAMIENTO DE LA APLICACIÓN GUI Una aplicación GUIDE consta de dos archivos: .m y .fig . El archivo .m es el que contiene el código con las correspondencias de los botones de control de la interfaz y el archivo .fig contiene los elementos gráficos. Cada vez que se adicione un nuevo elemento en la interfaz gráfica, se genera automáticamente un código en el archivo .m.
PRESENTACIÒN DEL PROGRAMA Para la presentación del programa, se va a programar una pantalla donde se va a colocar el tema de la interfaz, que en este caso es el modelo de propagación de tierra plana, el nombre y código de los programadores y la imagen tipo jpg correspondiente al tema de comunicaciones.
La interfaz gráfica de usuario de MATLAB permite personalizar la presentación del botón que selecciona el modelo como lo muestra la figura.7. Para lograr esto, se edita el código correspondiente en la parte del mfile destinada a la inicialización del programa. Primero hay que cargar la imagen de fondo el cual es opcional y se realiza utilizando el código siguiente: %Carga la imagen de fondo (opcional) [x,map]=imread('hammerfall.jpg' ,'jpg'); image(x),colormap(map),axis off ,hold on Segundo se edita el código que coloca una imagen en cada botón: [a,map]=imread(funcion .jpg'); [r,c,d]=size(a); x=ceil(r/30); y=ceil(c/30); g=a(1:x:end,1:y:end,:); g(g==255)=5.5*255; set(handles.pushbutton1, 'CData',g); Este código se repite, de manera que lo único que cambia es el tipo de función en la
PROPAGACIÓN Y SATÉLITES INGENIERÍA ELECTRÓNICA instrucción [a,map]=imread(función.jpg); pues esto indica las funciones de cada pushbutton. Para personalizar aún más, se puede hacer aparecer el nombre del botón cuando se acerca el cursor, simplemente llenando el campo TooltipString en el Property Inspector .
INTERFAZ DE MODELOS PROPAGACION MÓDULO GUI CREADOS
DE
La secuencia de las figuras a continuación muestra la manera como se ejecuta la interfaz creada en GUI.
'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Tierra_Plana_OpeningFcn, ... 'gui_OutputFcn', @Tierra_Plana_OutputFcn, ... 'gui_LayoutFcn', [], ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function Tierra_Plana_OpeningFcn(hObject, eventdata, handles, varargin) background = imread('background.jpg'); %Leer imagen axes(handles.background); %Carga la imagen en background axis off; imshow(background); handles.output = hObject; guidata(hObject, handles);
function varargout = Tierra_Plana_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;
Fig. 6. Proceso de construcción de la interfaz gráfica.
CÓDIGO REALIZADO EN MATLAB % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ...
function pushbutton1_Callback(hObject, eventdata, handles) A=handles.edit1; B=handles.edit2; C=handles.edit6; D=handles.edit7; E=handles.edit8; F=handles.edit14; G=handles.edit15; H=handles.edit16; I=handles.edit17; J=handles.edit18;
PROPAGACIÓN Y SATÉLITES INGENIERÍA ELECTRÓNICA lose=((J)+(H)+(I)(32.4+20*Log10(A)+20*log10(B))-((F) + (G) + ((6/100)*D))-((F) + (G) + ((6/100)*E))); set(handles.perdidas,'String',lose);
end
function edit1_Callback(hObject, eventdata, handles) Val=get(hObject,'String'); %Almacenar valor ingresado NewVal = str2double(Val); %Transformar a formato double handles.edit1=NewVal; %Almacenar en identificador guidata(hObject,handles); %Salvar datos de la aplicación function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit2_Callback(hObject, eventdata, handles) Val=get(hObject,'String'); %Almacenar valor ingresado NewVal = str2double(Val); %Transformar a formato double handles.edit2=NewVal; %Almacenar en identificador guidata(hObject,handles); %Salvar datos de la aplicación function edit2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
Val=get(hObject,'String'); %Almacenar valor ingresado NewVal = str2double(Val); %Transformar a formato double handles.edit6=NewVal; %Almacenar en identificador guidata(hObject,handles); %Salvar datos de la aplicación
function perdidas_Callback(hObject, eventdata, handles) function perdidas_CreateFcn(hObject, eventdata, handles) if ispc isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
function edit6_Callback(hObject, eventdata, handles)
function edit6_CreateFcn(hObject, eventdata, handles) if ispc isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
&&
function edit7_Callback(hObject, eventdata, handles) % Val=get(hObject,'String'); %Almacenar valor ingresado NewVal = str2double(Val); %Transformar a formato double handles.edit7=NewVal; %Almacenar en identificador guidata(hObject,handles); %Salvar datos de la aplicación function edit7_CreateFcn(hObject, eventdata, handles) if ispc isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
&&
function edit8_Callback(hObject, eventdata, handles)
&& NewVal = str2double(Val); %Transformar a formato double
PROPAGACIÓN Y SATÉLITES INGENIERÍA ELECTRÓNICA handles.edit8=NewVal; %Almacenar en identificador guidata(hObject,handles); %Salvar datos de la aplicación function edit8_CreateFcn(hObject, eventdata, handles) if ispc isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
&&
function edit16_Callback(hObject, eventdata, handles)
&&
function edit14_Callback(hObject, eventdata, handles) NewVal = str2double(Val); %Transformar a formato double handles.edit14=NewVal; %Almacenar en identificador guidata(hObject,handles); %Salvar datos de la aplicación function edit14_CreateFcn(hObject, eventdata, handles) if ispc isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
if ispc isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
&&
function edit15_Callback(hObject, eventdata, handles) Val=get(hObject,'String'); %Almacenar valor ingresado NewVal = str2double(Val); %Transformar a formato double handles.edit15=NewVal; %Almacenar en identificador guidata(hObject,handles); %Salvar datos de la aplicación function edit15_CreateFcn(hObject, eventdata, handles)
Val=get(hObject,'String'); %Almacenar valor ingresado NewVal = str2double(Val); %Transformar a formato double handles.edit16=NewVal; %Almacenar en identificador guidata(hObject,handles); %Salvar datos de la aplicación function edit16_CreateFcn(hObject, eventdata, handles) if ispc isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
&&
function edit17_Callback(hObject, eventdata, handles) Val=get(hObject,'String'); %Almacenar valor ingresado NewVal = str2double(Val); %Transformar a formato double handles.edit17=NewVal; %Almacenar en identificador guidata(hObject,handles); %Salvar datos de la aplicación function edit17_CreateFcn(hObject, eventdata, handles) if ispc isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
&&
function edit18_Callback(hObject, eventdata, handles)
PROPAGACIÓN Y SATÉLITES INGENIERÍA ELECTRÓNICA
Val=get(hObject,'String'); %Almacenar valor ingresado NewVal = str2double(Val); %Transformar a formato double handles.edit18=NewVal; %Almacenar en identificador guidata(hObject,handles); %Salvar datos de la aplicación
En el pantallazo del modelo es posible calcular las pérdidas presentes dependiendo de los parámetros suministrados por el usuario, tales como las distancias y alturas del receptor o transmisor según sea el caso.
CONCLUSIONES
Una interfaz grafica de usuario puede interactuar con otra herramienta de MATLAB como SIMULINK para poder realizar funciones especificas.
Se puede cambiar el tamaño de la interfaz grafica de usuario Haciendo doble click en el área de diseño de la interfaz y activar el parámetro resize .
Cuando se cambia el nombre a una GUI con rename se produce un error, esto es consecuencia de que el nombre de la interfaz debe ser el mismo de la función principal. Entonces para cambiar el nombre a la interfaz simplemente se usa Save As en el archivo .fig .
La Herramienta GUI es una excelente opción para realizar un ambiente agradable para el usuario y a la vez utilizar el gran potencial matemático que posee Matlab.
function edit18_CreateFcn(hObject, eventdata, handles) if ispc isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
&&
function popupmenu1_Callback(hObject, eventdata, handles) function popupmenu1_CreateFcn(hObject, eventdata, handles) if ispc isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
&&
WEBGRAFÌA
Fig. 7. Modelo Tierra Plana
Información sobre las herramientas de MATLAB www.mathworks.com. Manual de interfaz grafica de usuario en MATLAB http://www.mathworks.com/matlabcentr al/fileexchange/loadFile.do?objectId=12 122&objectType=FILE Nise, N.Sistemas de control para Ingeniería , 2004, 1ª edición ,CECSA S.A., México, 970 páginas