Está en la página 1de 10

Matlab: Conceptos Básicos

Primera y Segunda Reunión

SERVICIOS DE EXTENSIÓN UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE MINAS SEDE MEDELLÍN Julio de 2009 Autor: Esteban Jiménez Mejía

Matlab: Conceptos Básicos

Matlab: Conceptos Básicos | Julio de 2009

Primera y Segunda Reunión

ENTORNO DE TRABAJO MATLAB

Matlab Desktop

Esta es la ventana completa de entorno, la más general del programa, en ella están organizadas todas los componentes de MATLAB según usted como usuario las organice.

Para organizar el entorno de trabajo de MATLAB (Desktop Layout), se usa el menú:

Desktop Desktop Layout

Allí existen varias configuraciones predeterminadas, pero usted puede generar su propia configuración y guardarla, mediante el menú:

Desktop Save Layout

Cuando usted guarda un Desktop Layout este queda almacenado en el menú para su selección.

Entre las componentes más utilizadas dentro del entorno de trabajo de MATLAB (Matlab Desktop) se encuentran:

Command Windowentorno de trabajo de MATLAB (Matlab Desktop) se encuentran: Workspace Current Directory Editor/Debbuger Array Editor

Workspacede MATLAB (Matlab Desktop) se encuentran: Command Window Current Directory Editor/Debbuger Array Editor Command

Current Directory(Matlab Desktop) se encuentran: Command Window Workspace Editor/Debbuger Array Editor Command Window Esta es la

Editor/Debbugerse encuentran: Command Window Workspace Current Directory Array Editor Command Window Esta es la ventana fundamental

Array EditorCommand Window Workspace Current Directory Editor/Debbuger Command Window Esta es la ventana fundamental de MATLAB, se

Command Window

Esta es la ventana fundamental de MATLAB, se asemeja al SHELL de las distribuciones de Linux o a la consola MS DOS de Windows, en cuanto a su uso.

Desde el Command Window se pueden ejecutar todas las funciones anteriormente programadas 1 el efecto de las mismas es inmediato. Cuando desde el Command Window se invoca una función su resultado es mostrado de manera posterior a la ejecución de la misma y el Workspace se carga de las variables actuales usadas por la función 2 .

Al igual que las consolas (el uso del Tab después de escribir las letras iniciales del nombre de la función, MATLAB despliega el conjunto de las posibles funciones que usted está pensando usar, esto le da agilidad a la hora de escribir) mediante el Command Window puede moverse entre ficheros con el comando cd usando una dirección

1 Esto depende fundamentalmente del Current Directory y del Search Path. Más adelante se dará una breve explicación de esto.

2 Sólo cuando las variables de las funciones no mueren al finalizar la ejecución de las mismas.

Matlab: Conceptos Básicos | Julio de 2009

local o global, incluso si su deseo es devolverse puede hacer uso de cd Puede además ver el contenido de las carpetas mediante el comando ls.

Para identificar en cual directorio se encuentra situado, basta con teclear pwd.

Es posible también crear subdirectorios mediante el comando mkdir rmdir.

Se sugiere al lector probar dichos comandos con el objetivo de que interiorice la aplicación de los mismos y gane habilidad para su implementación.

y eliminarlos mediante el comando

tal como si de un Shell se tratase.

Para una personalización del Command Window se puede usar el siguiente menú:

File Preferences Command Window

WorkSpace

Se traduce al español como el espacio de trabajo, el Workspace funciona básicamente como la interfaz entre el usuario y lo que existe actualmente en la memoria o pila (stack) de trabajo. En este complemento del entorno de trabajo usted puede observar el nombre de la variable, el tipo, el valor, el peso en Bytes y otra cantidad de opciones que pueden ser sacadas dando click derecho sobre la barra de título y escogiendo otras propiedades que le pueden ser útiles como la media, la moda la desviación estándar, etc (sólo para versiones superiores a la 7.0).

Puede además preguntar por las variables presentes en el Workspace desde un comando en el Command Window, dicho comando es whos o who. Las salidas de ambos comandos se refieren a las variables existentes en el Workspace, la diferencia radica en que whos es más detallada que who. Para ver sus efectos y diferencias use ambas funciones.

Desde el Workspace se puede acceder a las variables y editarlas. La edición se hace mediante la ventana del Editor Array (Editor de Vectores o matrices). Esta ventana es una interfaz gráfica con los mismos perfiles de una tabla en Excel, incluso hacer copias de datos desde Excel es muy fácil e intuitivo de lograr mediante el uso esta ventana.

Cuando usted ha modificado una variable mediante el Editor Array, no hay necesidad de guardar los cambios, pues es un enlace directo con la variable. Sin embargo es posible guardarla como un archivo para ser leída luego 3 de cerrar incluso todo el programa, la extensión con la que queda dicha variable es *.mat que es un tipo de archivo propio de MATLAB.

Las variables que son creadas por funciones que retornan el control a la función invocadora, existen en el Workspace mientras la función existe, de lo contrario mueren junto con la función a menos de que dichas variables hayan sido denominadas “persistentes” (persistent).

Función diary

La función diary, es una implementación que tiene el MATLAB para generar un archivo de texto plano con las funciones y los resultados de las mismas dentro del command Window. El uso inmediato que se le da a esta función es el de poder conservar dentro de un archivo aparte todos los resultados obtenidos de un script o función en particular.

3 Más adelante se especificará como hacer lecturas y escrituras en archivos o ficheros según su tipo.

2
2

Matlab: Conceptos Básicos | Julio de 2009

La forma de invocar el comando se presenta a continuación:

>>diary Nombre.txt

>>diary on

Hasta este punto ha creado dentro del current directory un archivo llamado Nombre.txt, este archivo es un texto plano, el cual comenzará a guardar todo lo que ocurra en el comand window. Cualquier función que usted ingrese a partir de ahora será registrada en dicho archivo. Vale aclarar que si usted desea acceder al archivo, debe de terminar la ejecución del diary de lo contrario establecerá un error de petición a un recurso que está siendo utilizado por el sistema (en este caso MATLAB). Para detener el registro de los datos se usa el comando:

>>diary off

Puede ahora entrar a revisar el contenido de su archivo Nombre.txt y verificar que efectivamente se registraron todas las entradas y salidas del command window, hasta que usted detuvo el proceso de registro.

Current Directory y el Search Path

Este es uno de los complementos más importantes a la hora de usar archivos *.m programados anteriormente.

El Current Directory es la raíz actual de donde está corriendo MATLAB; El Search Path es algo más ge neral, allí se encuentran los directorios de la aplicación como tal, incluyendo los comandos de los TOOLBOXES y las funciones privadas del usuario o de aplicaciones que corren junto a MATLAB. No necesariamente el Current Directory debe de estar incluido en el Search Path, de ahí la importancia que toma determinar de manera inicial cuales van a ser las funciones a invocar y en donde están ubicadas pues cuando se va a ejecutar una función, MATLAB sigue los siguientes pasos:

1. Verifica que el nombre de la función que se está invocando (si de verdad es una función), no coincida con el de una variable existente en el Workspace, de ser así MATLAB terminará por tomar el valor de dicha variable.

2. Recurre a los directorios propios de las funciones Matlab. De ser así usa la función intrínseca que encuentra en dicho directorio.

3. Mira si es una función o Sub función privada del usuario.

4. Recurre al Current Directory para encontrar archivos *.mex,*.dll y *.m. De ser así es prioridad el archivo *.mex, le sigue el *.dll y finalmente el *.m (que es realmente la función como tal).

5. Se dirige al Search Path, y busca en cada directorio anexado al mismo, cuando el nombre de la función coincide con alguno de los archivos que allí existen la búsqueda de la función termina y se ejecuta la que se encontró.

Lo anterior nos permitirá ubicar funciones según nuestras preferencias, incluso usar funciones con el mismo nombre.

Si usted quiere adherir un directorio al Search Path, puede hacerlo a través de la interfaz destinada para esto, incluso puede ubicar el directorio en la posición que prefiera. Por lo general los directorios agregados son puestos al principio. (Tenga en cuenta que si usted usa el mismo nombre de una función existente para su función, es posible que esté inhibiendo (ocultando) una función predeterminada de MATLAB o alguno de sus toolboxes):

File Set Path

El comando para desplegar en el Command Window los directorios del Search Path es: path.

3
3

Matlab: Conceptos Básicos | Julio de 2009

Matlab: Conceptos Básicos | Julio de 2009 Funciones Privadas Esta cualidad aplicada a una función permite

Funciones Privadas

Esta cualidad aplicada a una función permite que las funciones declaradas como privadas, sean usadas únicamente por funciones que conozcan su condición de privadas. Esto es muy útil para cuando se quieren usar funciones propias con nombres existentes, además que dan la posibilidad de manejar encapsulamiento.

Para dar la cualidad de privada a una función, ésta debe de estar ubicada en un subdirectorio llamado prívate. Toda función que quiera usar funciones de dicho subdirectorio debe de estar ubicada en el path inmediatamente superior. Si otra función que no esté ubicada dentro de dicho path, invoca una función con el nombre de la función privada que ya se había creado, esta no será llamada pues se incumple la condición.

Subfunciones

Las subfunciones tienen la cualidad de que son definidas en el mismo archivo .m de la función principal. Esto es muy común dentro de los lenguajes de programación orientada a objetos como el C++. Matlab adopta la cualidad de que la subfunción está existiendo dentro del mismo espacio de la función principal lo que le da velocidad a la hora de la ejecución.

MATLAB Executables

Estos son los denominados archivos *.mex, estos archivos son los que permiten hacer la interfaz desde el MATLAB a subrutinas de C/C++, subrutinas que usted mismo ha debido crear previamente. El efecto de poder asociar dentro de las funciones de MATLAB algunas funciones en C/C++ permiten la mejora de los tiempos de ejecución de cada uno de los programas que usted corra y además permite el uso de funciones ya programadas dentro del C/C++ sin tener que hacer la migración a los *.m reconocidos por el compilador de MATLAB. Más adelante dentro del curso, se retomará esto de manera muy breve y se harán algunos ejemplos que sirvan de ilustración a cómo se debería de hacer a la hora de la implementación.

Matlab: Conceptos Básicos | Julio de 2009

Personalización del arranque del Matlab

Como una de las aplicaciones que tiene el conocimiento del Search Path y la forma en cómo MATLAB hace la búsqueda de las funciones que son invocadas, se propone la modificación de los archivos startup.m y el archivo finish.m. Dichos archivos son los que ejecuta el MATLAB cuando se hace el inicio de sesión y cuando se hace la finalización del programa.

La siguiente actividad presentará una forma en cómo usted puede personalizar el inicio de sesión y la finalización de la misma de su versión de MATLAB.

1. Como primer paso, debe de crear una carpeta dentro de su disco duro, la ubicación de la misma no interesa y será por medio de la inclusión de dicho directorio en el PATH, lo que permita su buen funcionamiento.

en el PATH, lo que permita su buen funcionamiento. La forma en cómo usted puede crear

La forma en cómo usted puede crear una carpeta y asociarla directamente como Current Directory, es como se muestra en la figura anterior, se da clic sobre los puntos suspensivos del espacio para mostrar el Current Directory, luego se selecciona un directorio cualquiera y se genera una nueva carpeta (si usted así lo desea, porque también puede usar una existente). Para finalizar le da clic en Aceptar.

2. Hasta el momento simplemente asoció al Current Directory una nueva dirección, donde usted ubicará las funciones a modificar para el arranque, en este ejemplo se llama Inicialización, por lo que la dirección en disco, para este ejemplo en particular queda como: C:\Documents and Settings\Esteban J\Mis documentos\MATLAB\Inicializacion.

and Settings\Esteban J\Mis documentos\MATLAB\Inicializacion. 3. Debe de generar los archivos para su posterior
and Settings\Esteban J\Mis documentos\MATLAB\Inicializacion. 3. Debe de generar los archivos para su posterior

3. Debe de generar los archivos para su posterior modificación, entonces use el menú FileNewM-File

4.

Guarde el primer archivo como startup.m, mediante el comando FileSave Asstartup.m

Matlab: Conceptos Básicos | Julio de 2009

5. Genere un nuevo M-File y guárdelo como finish.m, mediante el comando FileSave Asfinish.m

6. Agregue la carpeta Inicialización al Path de MATLAB, al hacer esto obligará a MATLAB al iniciar que resuelva todo lo que dice el script allí programado. Para esto siga los pasos:

6.1. FileSet PathAdd Folder

6.2. Busque la carpeta Inicialización

6.3. Note que es agregada al tope de la lista del path

6.3. Note que es agregada al tope de la lista del path Debe de escribir los
6.3. Note que es agregada al tope de la lista del path Debe de escribir los

Debe de escribir los siguientes comandos en el archivo startup.m

% Este será el archivo con el que iniciará MATLAB cuando usted haga uso del

% programa:

tiempo=clock;

horas=tiempo(4);

minutos=tiempo(5);

segundos=tiempo(6);

msjeUser=warndlg('Acaba

Bienvenido','Iniciación Personalizada del Matlab');

uiwait(msjeUser)

de

Iniciar

el

MATLAB,

sea

Matlab: Conceptos Básicos | Julio de 2009

msgbox(sprintf('Ha iniciado sesión a las %i horas, %i minutos, %i segundos',horas,minutos,segundos),'Tiempo de Inicio de Sesión','Warn','modal')

disp('Puede Comenzar a escribir los comandos a continuación')

El script que acaba de escribir dentro de su archivo stratup.m hace lo siguiente:

Inicailmente genera un vector tiempo, que es resultado del comando del MATLAB clock, este comando devuelve un vector cuyas componentes son respectivamente:

[Año Mes Día Hora Minuto Segundo], Como se le ha asociado una variable llamada tiempo, al resultado de dicha función, al acceder en las líneas siguientes a cada una de las componentes del vector, se están extrayendo en nuevas variables los resultados correspondientes a las horas, minutos y segundos.

El siguiente comando se presenta como una ayuda dentro de la programación común, para la comunicación con el usuario. La función warndlg, devuelve una ventana de aviso, en la que el usuario es informado de algo. Esta función tiene características predeterminadas, y se usa de la forma:

warndlg('Información para el usuario','Título de la barra de Ventana')

el usuario' , 'Título de la barra de Ventana' ) Para la implementación mostrada en el

Para la implementación mostrada en el código del startup.m el resultado es el mostrado en la figura anterior.

Para el caso del programa implementado se asocia la salida del comando a una variable:

msjeUser =warndlg('Acaba

Bienvenido','Iniciación Personalizada del Matlab');

uiwait( msjeUser )

de

Iniciar

el

MATLAB,

sea

Luego se le anexa una función llamada uiwait, esto se hace con el objetivo de poder tener control sobre la respuesta del usuario, es decir, cuando se acompaña de una variable y se le aplica un uiwait a dicha variable se garantiza que el programa para su ejecución hasta que el usuario responda.

La siguiente línea es otra aplicación asociada con los mensajes de usuario, el msgbox, funciona de una manera un poco más libre que el warndlg, para este comando es posible asociar otros íconos, la forma como se usa es:

msgbox('Información para el usuario', 'Título de la barra de Ventana', 'Icono')

íconos

predeterminados.

Los

pueden

ser

imágenes

Los íconos pueden ser:

cargadas

dentro

del

„warn‟Ícono de Advertencia

„warn‟  Ícono de Advertencia

„error‟Ícono de error

„error‟  Ícono de error

programa 4 ,

sin

embargo

existen

varios

4 Más adelante en el curso cuando se haga el manejo de imágenes, se cargará dentro de uno de estos mensajes una imagen en particular.

Matlab: Conceptos Básicos | Julio de 2009

„help‟Ícono de Ayuda

Básicos | Julio de 2009 „help‟  Ícono de Ayuda Para el caso de la aplicación

Para el caso de la aplicación existe una función adicional que será tratada posteriormente con más detalle, la función sprintf, esta función permite la devolución de cadena de caracteres y el uso de variables externas.

msgbox(

sprintf('Ha iniciado sesión a las

%i

horas,

%i

minutos,

%i

segundos',

horas

,

minutos

,

segundos

),

'Tiempo

de

Inicio

de

Sesión','Warn','modal')

El msgbox sólo admite cadena de caracteres, por lo que se hace uso de la función sprintf para que pueda servir para cualquier variable. Los %i dentro de la función, se refieren a que las variables que allí aparecerán son de tipo entero.

Continuando con el análisis de la función como fue implementada se tiene:

msgbox(sprintf('Ha iniciado sesión a las %i horas, %i minutos, %i

segundos',horas,minutos,segundos),

Sesión' , 'Warn' , 'modal' )

'Tiempo

de

Inicio

de

El título será Tiempo de inicio de sesión, el ícono será de advertencia (se propone al lector usar los demás íconos por defecto para que adquiera habilidad y los recuerde posteriormente).

La última propiedad ingresada „modal‟, garantiza que el usuario obtendrá el control únicamente después de que resuelva la inquietud planteada por el msgbox. A diferencia de la asociación con el uiwait, en este no se detiene la ejecución del programa.

Como resultado se debe de obtener algo como:

del programa. Como resultado se debe de obtener algo como: Finalmente se usa un disp., este

Finalmente se usa un disp., este comando simplemente muestra en el Command Window un resultado de lo deseado.

disp('Puede Comenzar a escribir los comandos a continuación')

Para el caso anterior el argumento e una cadena de caracteres y el resultado es:

el caso anterior el argumento e una cadena de caracteres y el resultado es: Personalización la

Personalización la Finalización de Sesión

Matlab: Conceptos Básicos | Julio de 2009

Se propone que el lector implemente comandos iguales a los utilizados en el startup.m para la programación del finish.m. Pero modifique los íconos de los mensajes por los mencionados anteriormente y que están definidos por defecto dentro del MATLAB.

Para ver los resultados completos debe de finalizar e iniciar MATLAB.

Comentarios Finales a la Reunión

Puede encontrar toda la documentación del programa y cada una de sus versiones en: