Skip to content Skip to navigation

OpenStax-CNX

You are here: Home » Content » Introducción a MATLAB, comandos básicos y uso de GUIDE

Navigation

Recently Viewed

This feature requires Javascript to be enabled.
 

Introducción a MATLAB, comandos básicos y uso de GUIDE

Module by: José Miguel Hobaica Alvarado. E-mail the author

Summary: Tutorial de MATLAB. Se incluye un tutorial acerca comandos y funciones básicas. Los tutoriales acerca de MATLAB y GUIDE en este módulo son los usados en la cátedra Señales y Sistemas Continuos de la UCAB, y fueron realizados por la profesora Trina Adrian, al igual que los archivos tutor1Trina.m y TutorialPractica1.m

MATLAB (MATrix LABoratory) es un entorno de programación basado en matrices, ampliamente utilizado en el ámbito de la ingeniería por su versatilidad en la resolución de cálculos numéricos sin importar cuán complejos sean. Se caracteriza también por permitir visualizar los resultados fácilmente y de distintas formas.

El uso de MATLAB está bastante extendido en la rama de Comunicaciones, debido a que permite el modelado de cualquier tipo de señales por medio de funciones, las cuales, al igual que todas las variables definidas, son representadas por matrices numéricas, que pueden incluir elementos complejos. MATLAB además incorpora ciertas librerías denominadas toolboxes, que no son más que conjuntos de funciones diseñados para la resolución de problemas específicos; en particular el Communications Toolbox y el Signal Processing Toolbox son muy útiles para simular la generación, procesamiento, transmisión y recepción de señales.

La ventana de comandos (command window), ventana principal de MATLAB, guarda cierta semejanza con el Shell de un sistema operativo ya que, al igual que éste, permite ejecutar instrucciones, moverse entre directorios y gestionar el software en general. Para obtener ayuda sobre el uso de funciones predefinidas puede utilizarse la instrucción help [comando]. Siempre que una instrucción cree una variable, la misma se almacena en el workspace. Las variables se pueden guardar para futuras sesiones y se almacenarán en formato .mat, utilizando el comando save, y pueden ser cargadas de nuevo utilizando el comando load.

MATLAB permite el almacenamiento de secuencias de instrucciones en archivos por medio del editor de texto. Dichos archivos reciben el nombre de archivos .m debido a que se guardan con esta extensión. Al ejecutar un archivo .m, se ejecutarán una por una las instrucciones almacenadas por el mismo, lo que permite que se creen programas y funciones capaces de cumplir tareas específicas.

Se incluye en ESTE VINCULO un documento que incluye una explicación rápida acerca de los principales comandos y bloques utilizados en MATLAB. ESTE VINCULO contiene un archivo para ejecutarse con MATLAB (de extensión .m) en el que se ponen en práctica algunos de los comandos y operaciones básicas. Por último, ESTE VINCULO contiene otro archivo .m en el que se pone en práctica la generación de funciones y las distintas formas de graficarlas.

Si se es principiante en MATLAB, es recomendable revisar previamente el documento y los archivos antes de aprender a trabajar con GUIDE.

EJECUTAR PROGRAMAS EN MATLAB

El entorno de programación MATLAB cuenta con un editor en el que se construye el script de cada programa. En la parte superior del editor se pueden apreciar los menús de la figura 1; el botón indicado con la flecha azul sirve para ejecutar el programa.

Figura 1: Botón para correr el archivo de extensión .m
Figura 1 (Imagen 17.png)

Cuando un programa se descarga, o simplemente es guardado en otro sitio que no es la carpeta por defecto de MATLAB, al instante de correrlo aparecerá un aviso como el mostrado en la figura 2, la opción más recomendada es la de Cambiar Directorio, señalada con la flecha azul:

Figura 2: Aviso para cambio de directorio
Figura 2 (Imagen 18.png)

GUIDE

GUIDE es un ambiente de desarrollo que permite crear interfaces gráficas con el usuario, que contengan elementos tales como botones y ventanas de selección, ventanas gráficas, menús, ejes para graficar, etc.

Cuando en el ´command window´ se escribe guide, se ofrece la posibilidad de abrir hojas de trabajo ya creadas (p.ej. >>guide archivo.fig) o una nueva sobre la cual se irán agregando componentes. Lo que se cree aquí se guardará con la extensión .fig.

La primera vez que uno salva la interfaz que está diseñando se crea también un archivo .m sobre el cual habrá que programar lo que se quiere ver o controlar desde el GUI

Una vez que se diseña la interfaz gráfica (GUI) que uno desea fijando las características de botones, ventanas, etc. que la conforman, se puede entonces programar dicha interfaz con el editor de archivos .m

Herramientas:

Se selecciona una hoja en blanco (Blank GUI)

Figura 3: GUIDE Quick Start
Figura 3 (Imagen 5.png)

Aparecerá de inmediato una hoja de trabajo como la que sigue:

Figura 4: Espacio de trabajo aún sin elementos
Figura 4 (Imagen 4.png)

A la izquierda están las herramientas disponibles. Si en este momento se salva el GUI debe seleccionarse un nombre. Se almacenarán en el directorio que se seleccione los archivos nombre.fig y nombre.m

Para utilizar una herramienta se selecciona y arrastra a la posición deseada en la hoja de trabajo; se puede modificar su tamaño tal y como se hace con cualquier figura.

Figura 5: Espacio de trabajo con un solo elemento de tipo "Edit Text"
Figura 5 (Imagen 3.png)

Otras características se pueden modificar haciendo doble click. Aparecerá un editor de propiedades como el que sigue:

Figura 6: Property Inspector
Figura 6 (Imagen 2.png)

Al hacer una modificación en el editor de propiedades también cambiará el código relacionado a cada botón en el archivo .m

Una propiedad importante es el Tag (ver Property Inspector) el cual es el nombre que aparecerá en el Callback que no es más que una especie de “rutina” en el .m que se ejecutará cuando el elemento al que corresponde es manejado o cambiado su valor. Se recomienda que se coloque al tag un nombre correspondiente o alusivo a la acción del elemento.

El archivo nombre.m tiene toda una estructura de handles (manejadores) que alimentarán a la GUI. La estructura de handles es pasada como una entrada a cada callback (llamada a una parte de un programa).

Puede usarse la estructura de handles para:

  • Compartir datos entre callbacks
  • Acceder la data en el GUI

Para almacenar los datos contenidos en una variable X, se fija un campo de la estructura de handles igual a X y se salva la estructura de handles con guidata como se muestra a continuación:

handles.x=X
guidata(hObject, handles)

En cualquier momento se puede recuperar la data en cualquier callback con el comando:

X=handles.x

Código asociado a cada elemento del GUI

Automáticamente al crear el GUI y salvarlo aparece en el archivo .m una cantidad de líneas de código fijas.

En la primera parte del script aparece una cantidad de líneas de código fijo. La primera instrucción "function varargout = untitled(varargin)" indica que se está creando un GUI de nombre “untitled” con argumentos de salida “varargout” y argumentos de entrada “varagin”. Solo se muestran las dos primeras y la última línea.

Figura 7: Código generado al crear y guardar el GUI
Figura 7 (Imagen 7.png)

Aquí comienza un código de inicialización que se pide no se edite. También se muestra solo la primera y última línea.

Figura 8: Código fijo de inicialización
Figura 8 (Imagen 8.png)

Hasta aquí llega el código de inicialización. Comienza entonces lo que se desea que ocurra antes de que el GUI se haga visible.

Figura 9: Función OpeningFCN para un programa de nombre "untitled"
Figura 9 (Imagen 9.png)

Luego de esto aparecen callback dependiendo de las herramientas que se han incorporado al GUI. Por ejemplo:

Figura 10: Espacio de trabajo ya con varios elementos
Figura 10 (Imagen 1.png)

Aquí se han colocado 3 Radio Button, 1 Push Button, un Pop-Up menú y 1 eje para graficar.

A continuación se describen brevemente las herramientas disponibles, el código automático asociado a cada una de ellas y como interactuar con las mismas.

Botón pushbutton

Se ejecuta una determinada acción cuando son presionados. En el archivo .m aparecen automáticamente un grupo de instrucciones asociadas a él.

Figura 11: Callback para elemento de tag "pushbutton1"
Figura 11 (Imagen 10.png)

Listas de selección

Aquí se puede colocar una lista de elementos para que el usuario pueda seleccionar alguno. En el archivo .m aparecen automáticamente un grupo de instrucciones asociadas a él.

Figura 12: Parte del código generado por elemento de tag "listbox1"
Figura 12 (Imagen 11.png)
Figura 13: Callback para elemento de tag "listbox1"
Figura 13 (Imagen 12.png)

Como se observa en la ayuda (Hint) que aparece en las dos últimas líneas, si dentro del callback de este elemento se coloca la instrucción “A=get(hObject,'String')”, se obtendrá un número que indica que selección se hizo. Por ejemplo si se seleccionó el tercer elemento de la lista, A valdrá 3. Lo mismo puede lograrse con la instrucción “A=get(handles.listbox1,'Value')”, donde “listbox1” es el tag de este elemento. La ventaja de esta instrucción es que no tiene obligatoriamente que ser llamada desde el callback del elemento.

Botón edit

Permite a los usuarios ingresar o modificar parámetros que se quieren introducir.

Figura 14: Callback para elemento de tag "edit1"
Figura 14 (Imagen 13.png)

Obsérvese la ayuda (HINT). Si dentro del callback de este elemento se coloca la instrucción “A=str2double(get(hObject,'String'))”, entonces, se podrá tener en A el valor del número que se escribió en la casilla

Si dentro del callback se coloca la instrucción “A= get(hObject,'String')”, se podrá almacenar en A los caracteres escritos

Una forma más recomendable de almacenar en una variable A el contenido de la casilla es con la instrucción “A= get(handles.edit1,'String')”, donde “edit1” es el tag del botón. Esta instrucción puede ser colocada en otro callback que no sea el del botón o incluso en la función OpeningFCN de la figura 9. Si se desea acceder al valor numérico escrito en la casilla, se hace uso de la instrucción “A=str2double(get(handles.edit1,'String'))”.

Si se desea colocar el valor de la variable A en la casilla, se hace uso de la instrucción “set(handles.edit1,'String',A)”

Botón RadioButton

Son botones de selección. Si hay varios generalmente son mutuamente excluyentes. Para seleccionarlo basta ubicarse y presionar el ratón.

Figura 15: Callback para elemento de tag "radiobutton1"
Figura 15 (Imagen 14.png)

Colocándose dentro de callback del elemento la instrucción “A=get(hObject,'Value')”, A valdrá 1 si el botón fue seleccionado, y 0 en caso contrario. Lo mismo puede lograrse con la instrucción “A=get(handles.radiobutton1,'Value')”, donde “radiobutton1” es el tag de este elemento. La ventaja de esta instrucción es que no tiene obligatoriamente que ser llamada desde el callback del elemento.

Ejes para graficar

Aquí no se genera nada especial en el archivo .m, pero uno debe fijar las condiciones de la gráfica y activarla o desactivarla según convenga.

Por ejemplo si la gráfica tiene asociado el nombre de axes1 (tag) y se quiere mostrar algo a través de la misma por medio de la instrucción "plot(...)" se debe agregar primero el comando "axes" como se muestra a continuación:

axes(handles.axes1);
plot(...)

PopUp menú

Cuando se hace click despliega opciones. Para agregar elementos a la lista, en el editor de propiedades se busca el elemento string y allí se coloca la lista de las opciones.

Figura 16: Parte del código generado por elemento de tag "popupmenu1"
Figura 16 (Imagen 15.png)
Figura 17: Callback para elemento de tag "popupmenu1"
Figura 17 (Imagen 16.png)

Si se coloca dentro del callback de este elemento la instrucción “A=get(hObject,'Value')”, se obtendrá un número que indica que selección se hizo. Por ejemplo si se seleccionó el tercer elemento de la lista, A valdrá 3. Lo mismo puede lograrse con la instrucción “A=get(handles.popupmenu1,'Value')”, donde “popupmenu1” es el tag de este elemento. La ventaja de esta instrucción es que no tiene obligatoriamente que ser llamada desde el callback del elemento.

Content actions

Download module as:

Add module to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks