9. Introducción a la programación

Matlab (abreviatura de MATrix LABoratory, “laboratorio de matrices”) es uno de los paquetes más populares para realizar análisis numérico.

Ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M).

El lenguaje M es un lenguaje de alto nivel (high level): – Simple de aprender y usar. – El costo está en los tiempos de ejecución.

Un lenguaje de programación de alto nivel se caracteriza por expresar el algoritmo de una manera adecuada a la capacidad cognitiva humana, en lugar de la capacidad ejecutora de las máquinas.

Un lenguaje de programación de bajo nivel es aquel en el que sus instrucciones ejercen un control directo sobre el hardware y están condicionados por la estructura física de las computadoras que lo soportan.

El uso de la palabra bajo nivel no implica que el lenguaje sea menos potente que un lenguaje de alto nivel, sino que se refiere a la reducida abstracción entre el lenguaje y el hardware.

9.1.      Menú, ventanas y directorios.

Interfaz gráfica del usuario versión R2020a.

Matlab almacena todo en la memoria RAM del computador. Para liberar la memoria se usan los siguientes comandos:

  • La memoria se limpia con el comando clear
  • La pantalla se limpia con el comando clc.

Matlab usa el espacio de directorio como área de trabajo. Dicho directorio se denomina de trabajo y todos los archivos (que no formen parte del paquete) deben estar en dicho directorio.

  • Usar pwd para conocer el directorio de trabajo actual.
  • Usar cd(‘directorio’) para cambiar el directorio de trabajo.
  • Los usuarios de Windows deben usar las rutas en formato C:DIrSubdir.

Existen ocasiones en que se puede tener algún procedimiento que se use regularmente. Para usarlo en cada proyecto se tendría que copiar en cada carpeta de trabajo. No parece eficiente ya que se están duplicando archivos. Un mejor enfoque es llamar el directorio de procedimientos cada vez que los necesitemos.

  • Usar addpatch (‘directorio’) adicionar temporalmente un directorio en el patch de búsqueda de Matlab.

9.2.      Variables.

Matlab es un lenguaje basado en expresiones.

Las expresiones que se introducen mediante el teclado son interpretadas y evaluadas.

Cada expresión genera algún tipo de output que puede ser asignado en una variable. La asignación se realiza de la siguiente forma:

Nombrevariable=expresión

Si se introduce alguna expresión, pero no se define un nombre para la variable, Matlab asigna la expresión a una variable auxiliar temporal denominada ans.

Todas las variables son almacenadas en la memoria RAM del computador por lo que se pierden cuanto uno sale y apaga Matlab.

Para la limpieza de la memoria se emplea el comando:

clear nombrevariable1 nombrevariable2…..

Reglas al elegir los nombres de las variables:

  • Los nombres deben empezar con una letra y pueden contener letras y números.
  • Matlab es sensible a mayúsculas y minúsculas (x es diferente de X)

Tipos básicos de variables:

  • Numéricas (precisión doble – 64 bits, max $3.4×10^{38}$ y min $-3.4×10^{38}$). Reales o Imaginarias.
  • Textos (vectores en lo que cada celda tiene un código Unicode de 0 a 65536).
  • Estructura (tipo de dato que agrupa información contenida en celdas, numéricas o de texto)

Ejercicio 9.2.1. Al ejecutar el comando en el editor crea un espacio llamado a en la memoria, en el que se aguarda el valor 25. Se ha creado una variable a, cuyo valor inicial es 25 (ilustración 117).

Ilustración 117. Declaración de variable en el editor de Matlab.

Al ejecutar el programa en la ventana de comandos nos aparecerá el valor de la variable guardada como se muestra en la ilustración 118.

Ilustración 118. Ejecución del programa en la ventana de comandos.

Cambiando el valor de a del anterior 25 al nuevo valor 45 (ilustración 119), las variables pueden ser distintos tipos (numéricas, de texto, lógicas, de fecha, …). Asimismo, el contenido de una variable puede ser un único valor como en este ejemplo, o puede ser un vector, una matriz, o una estructura más compleja.

Ilustración 119. Cambio del valor de nuestra variable en el editor.

Al ejecutar la nueva instrucción la variable en la ventana de comandos cambia (ilustración 120).

Ilustración 120. Ejecución del código del cambio de variable visualizado en la ventana de comandos.

Ejercicio 9.2.2. Asignación de variables numéricas: (código en la ilustración 121, resultado en la lustración 122).

Ilustración 121. Asignación de variables numéricas en la ventada del editor.
Ilustración 122. Ejecución del código con distintas variables numéricas.

Ejercicio 9.2.3. Asignación de variables de tipo texto (código en la ilustración 123, resultado en la lustración 124).

Ilustración 123. Variables de tipo texto en el editor.
Ilustración 124. Ejecución del código y variables de tipo texto mostradas en la ventada de comandos.

Ejercicio 9.2.4. Estructuras de variables (código en la ilustración 125, resultado en la lustración 126).

Se pueden crear estructuras con las variables que se tienen almacenadas. Las estructuras se crean definiendo un nombre para la estructura seguido de un punto y a continuación el nombre de la celda: NombreEstrutura.NombreCelda = expresion:

Ilustración 125. Creando estructuras de variables definidas en el editor.
Ilustración 126. Ejecución y formato de estructura en la ventana de comandos.

Ejercicio 9.2.5. Variables vacías (código en la ilustración 127, resultado en la lustración 128).

Adicionalmente se puede crear una variable vacía. El objetivo es reservar espacio en la memoria.

Ilustración 127. Declaración de una variable vacía.
Ilustración 128. Variable vacía ejecutada y mostrada en la ventana de comandos.

Ejercicio 9.2.6. “who y whos” (código en la ilustración 129, resultado en la lustración 130 y código en la ilustración 131 y resultado en la ilustración 132 para los comandos who y whos respectivamente).

Los comandos who y whos se utilizan para saber que objetos se han creado, el primer comando muestra nombres de todas las variables, mientras que el segundo además da información detallada del tipo y el tamaño.

Ilustración 129. Comando who en el editor de Matlab.
Ilustración 130. Muestreo de variables declaradas en Matlab.
Ilustración 131. Comando whos declarado en el editor de Matlab.
Ilustración 132. Información detallada de las variables declaradas visualizado en la ventana de comandos de Matlab.

Las variables pueden ser locales o globales. Las variables serán locales si su valor queda en memoria solo para la sesión o procedimiento con que se esté trabajando. En caso de las variables globales como se muestra en la ilustración 133, su valor se mantiene para otras sesiones o procedimientos.

Por definición todas las variables que están dentro de una función son locales.

Para declarar una variable como global se usa:

global NombreVariable1 NombreVAriable2 …

Ilustración 133. Comando para declarar variables globales en el editor de Matlab.

En la ilustración 134 se emplea el comando whos revisado anteriormente con la finalidad las nuevas variables globales declaradas.

Ilustración 134. Ventana de comandos ejecutando las nuevas variables globales.

9.3.      Imprimir resultados en pantalla.

Para mostrar el valor de las variables en pantalla se usa disp() (ilustración 135). Y para imprimirlos en pantalla con un formato determinado se usa fprintf().

El comando disp() muestra en pantalla el valor asignado a una variable (numérica o texto) como se muestra en la ilustración 136.

Ejercicio 9.3.1. diferentes maneras de usar el comando disp().

Ilustración 135. Diferentes maneras de declarar el comando disp en el editor de Matlab.
Ilustración 136. Ejecución del comando disp mostrado en la ventana de comandos de Matlab.

Se pueden declarar variables que directamente de mostraran con el comando disp (ilustración 137). Posteriormente serán desplegadas en la ventana de comandos (ilustración 138).

Ilustración 137. Variable directamente declarada y mostrada con el comando disp.
Ilustración 138. Ejecución del comando disp con variable declarada previamente y mostrado en la ventana de comandos de Matlab.

El comando fprintf se usa también para mostrar en pantalla información sobre el valor asignado a determinadas variables, con la diferencia que éste comando permite dar formato a la visualización e introducir la misma dentro un texto determinado.

La asignación dentro del texto se inicia con % (este símbolo también es utilizado para comentarios en el código)

Dentro un texto se necesitan introducir tantos signos % como valores de variables se requieran mostrar seguidos por un carácter que representa el tipo de valor que se quiere visualizar:

  • %s Imprime texto
  • %c imprime un único carácter
  • %d imprime un numero completo
  • %f imprime un numero con un numero determinado de decimales, por ejemplo %.2f imprime dos decimales.

Algunas otras opciones de formato son:

  • n imprime una nueva línea (Enter)
  • t imprime una tabulación (Tab)
  • \ imprime .
  • %% imprime % (Un solo % se utiliza para comentarios)

Ejercicio 9.3.2. Utilización de algunos comandos con disp. (código en la ilustración 139 y resultado en el comando 140).

Ilustración 139. Distintas maneras de emplear los formatos para el comando fprintf en Matlab.
Ilustración 140. Resultado al ejecutar el comando disp.

Ejercicio 9.3.3. Comando fprintf para decimales (código en la ilustración 141 y resultado en el comando 142).

Ilustración 141. Comando fprintf utilizado para mostrar decimales en el editor de Matlab.
Ilustración 142. Ejecución del comando fprintf para decimales visualizado en la ventana de comandos de Matlab.

9.4.      Importando y exportando datos en Matlab

Mientras este en ejecución el Matlab, todo el espacio de trabajo se encuentra guardado en la memoria RAM del computador, por lo que al cerrar el programa toda esa memoria es liberada y la información eliminada.

Matlab puede guardar el espacio de trabajo

El formato nativo de Matlab es .mat

  • save nombre_archivo guarda todos los objetos del espacio de trabajo en el archivo nombre_archivo.mat.
  • save nombre_archivo A B C … guarda los objetos A, B y C (…) del espacio de trabajo en el archivo nombre_archivo.mat.

Todos los archivos serán guardados en el directorio de trabajo.

  • load nombre_archivo carga todos los objetos guardados en el archivo nombre_archivo.mat en el espacio de trabajo como se muestra en la ilustración 143.
Ilustración 143. Comando para guardar datos en formato .mat.

En las ilustraciones 144 y 145 se solicita el archivo donde se almacenaron las matrices desplegando la información en la ventana de comandos.

Ilustración 144. Ejecución de código haciendo llamar al archivo matrices guardado.
Ilustración 145. Ejecución de código haciendo llamar el archivo matA guardado.

Matlab también puede almacenar la información como archivos de texto (.txt).

  • save nombre_archivo.txt A -ascii guarda el objeto A en el archivo nombre_archivo.txt.
  • load nombre_archivo.txt carga el objeto guardado en el archivo nombre_archivo.txt en el espacio de trabajo.

Como alternativa se puede usar:

  • dlmwrite(‘nombre_archivo.txt’,variable) guarda el objeto variable.
  • variable = importdata(‘nombre_archivo.txt’) carga el objeto y lo guarda en el espacio de trabajo como variable.

A modelo de ejemplo vamos a crear una matriz de tamaño 100 x 5 con números aleatorios extraídos de una distribución normal con media 100 y varianza 25 y los guardaremos en formato .txt (Ilustración 146).

Ilustración 146. Generando datos aleatorios para formar una matriz y guardando un archivo .txt.

Una vez ejecutado el código se almacena el archivo generado en el directorio de trabajo de Matlab, el resultado de la matriz generada con datos aleatorios y guardado en un archivo .txt se aprecia en la ilustración 147.

Ilustración 147. Archivo .txt. generado de datos aleatorios para formar una matriz 100*5.

Matlab puede guardar y leer datos desde Excel.

  • xlswrite(‘nombre_archivo.xls’,variable) guarda el objeto variable en el archivo nombre_archivo.xls.
  • variable = xlsread(‘nombre_archivo.xls’) carga el objeto y lo guarda en el espacio de trabajo como variable.

Al importar datos de Excel es también posible definir la hoja y el rango específicos de los cuales los datos serán importados.

  • data = xlsread(‘nombre_archivo.xls’,’sheet’,’range’) con sheet el nombre de la hoja de cálculo y range el rango de datos (ejemplo A1:C4).

Ejercicio 9.4.1. Importar información de los daros reales PIB de México (código en la ilustración 148 y resultado en la ilustración 149).

Ilustración 148. Comandos para importar datos desde una hoja de datos de Excel.
Ilustración 149. Grafica de Matlab mostrando los datos recopilados de la hoja de datos de Excel.
Publica un comentario

Deja un comentario