SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
Álgebra II                                   Introducción a la Programación en MatLab



         Introducción a la Programación en MATLAB
La programación en MATLAB se realiza básicamente sobre archivos M, o M-Files. Se
los denomina de esta forma debido a su extensión “.m”.
Estos archivos son simple archivos ASCII o scripts, y como tales, pueden ser creados y
modificados desde cualquier editor de texto común; por ejemplo, el Bloc de Notas. El
MatLab incluye un editor de archivos M, orientado a la programación sobre este
software. Si se opta por otro editor , se debe vigilar siempre que los archivos escritos se
guarden con esta extensión.
De acuerdo a como se definan, estos archivos pueden separarse en dos tipos:
    1. Archivos de comandos.
    2. Funciones.


1. Archivos de Comandos

Los archivos de comandos son simplemente archivos M que contienen instrucciones del
MATLAB. Una vez editados, se los guarda con un nombre en algún directorio que se
encuentre dentro del path de búsqueda del MATLAB.
Por defecto, la carpeta de trabajo es el directorio work, que se encuentra dentro de la
carpeta de instalación del MATLAB. Para cambiar este directorio o carpeta de trabajo,
así como agregar nuevas carpetas de biblioteca, se debe usar el Path Browser, o el Set
Path. El primero se encuentra en el editor de archivos M que trae el MATLAB incluido.
Para convocar los archivos M escritos, solo se debe escribir el nombre del archivo
guardado en la ventana de comandos, y las instrucciones que hayan sido escritas serán
ejecutadas.
Aquí se debe notar algo importante; todas las variables que se hayan definido o creado
dentro de este archivo, luego de su ejecución, pasarán a formar parte de nuestro Espacio
de Trabajo, o Workspace. Se debe tratar de que las variables del workspace no
coincidan con las que aparecen en los archivos M que se han de ejecutar.

Ejemplo: Se utilizará el ya clásico “Hola Mundo”. Primeramente, abrimos un
documento de texto, ya sea desde el editor de archivos M que incluye el MATLAB, o
desde cualquier otro que nos permita editar ASCII. En él, escribimos la siguiente línea,
tal como lo muestra la figura 1.

disp(‘Hola Mundo’)

La función disp muestra en la ventana de comandos el string que se le envía como
parámetro.
Guardamos ahora el documento como Saludar.m, o el nombre que se desee, con su
extensión .m.




                                            1                  Ricardo Gustavo Miranda
Álgebra II                                 Introducción a la Programación en MatLab




 Figura 1. Primer programa.
Ahora, ingrese el nombre del archivo guardado en la ventana de comandos, sin la
extensión .m esta vez. Para el ejemplo de arriba:

>> Saludar
Hola Mundo

Este es un ejemplo bastante simple y claro de que es lo que hace un archivo de
comandos cuando es llamado. Ahora vamos a ver que sucede cuando se definen
variables dentro de éstos.

Ejemplo: Suponemos ahora que tenemos los valores 5 y 3, los dos almacenados en las
variables a y b respectivamente. Definimos ahora un archivo de comandos que
intercambie los valores de esas variables. Escribimos sobre un archivo nuevo lo que se
leen en la figura 2, y lo guardamos con el nombre de Intercambiar.m.




 Figura 2. Ejemplo de archivo de comandos con creación de variables.


Al llamarlo en la ventana de comandos obtendremos:




                                          2                 Ricardo Gustavo Miranda
Álgebra II                                  Introducción a la Programación en MatLab




 Figura 3. Ejecución del archivo M.
Puede verse ahora que las variables que se habían definido durante esta ejecución, a y b,
forman ahora parte de nuestro workspace; es decir, forman parte de nuestro conjunto de
variables que tenemos definidas en la ventana de comandos. Esto puede verse al escribir
a o b:




 Figura 4. Variables definidas dentro de la ventana de comandos.


2. Funciones

Una función es un archivo M similar al archivo M de comandos, con una diferencia en
su definición. La primera línea de una función posee la siguiente estructura:

function[argumentos_salida] = nombre(argumentos_entrada)

 • Nombre corresponde al nombre de la función.
 • Argumentos_salida representa una lista de elementos o variables de retorno de la
   función. El valor de cada uno de los elementos de salida varía a medida que se
   ejecuta el algoritmo. Los valores devueltos por la función convocada serán los
   valores que se encuentren en argumentos_salida en el momento en que termina la


                                           3                  Ricardo Gustavo Miranda
Álgebra II                                   Introducción a la Programación en MatLab

     ejecución de la función. La definición de esta salida es opcional; de no aparecer, la
     función se convertiría en un procedimiento, puesto que no devuelve nada; sólo
     acepta parámetros y ejecuta el algoritmo dado.
  • Argumentos_entrada son los parámetros que recibe la función para poder realizar
     su procesamiento. Estos argumentos, durante de la ejecución, son parámetros
     recibidos por valor (By value); es decir, se hacen duplicados de los parámetros, y
     es en éstos sobre los cuales se realizan todas las modificaciones.
Contrario a los archivos M de comandos, todas las variables que se definan dentro del
cuerpo o definición de la función, si la función es convocada desde la ventana de
comandos, no pasarán a formar parte de nuestro workspace.

 IMPORTANTE
 El nombre de la función debe coincidir con el nombre de archivo M con el cual se la
 guarda. De no hacer esto, podrían existir errores de directorio y/o de ejecución.

Dentro del cuerpo de la función, uno puede “salir” de la función mediante el comando
return. Este comando detiene la ejecución del programa, y devuelve el valor actual de
las variables de salida a la función, procedimiento o rutina que lo convocó.

Ejemplo: Vamos a crear una función que obtenga el conjunto solución para un sistema
de ecuaciones lineales compatible determinado, haciendo uso de una matriz A de
coeficientes, y un vector dado B de términos independientes; es decir, obtendremos un
X0 tal que AX0 = B. Dicho vector X0 será devuelto por la función que se escribe en un
archivo M.
Para esto, se hará uso de la función predefinida rref, la cuál obtiene una matriz de
escalones reducida.
Nuestra función ha de recibir dos parámetros, A y B. por lo tanto éstos se convertirán en
los argumentos de la función, quedando como se ve en la figura 5.




       Figura 5. Ejemplo de definición de una función.


Supongamos que tenemos dos matrices A y B, tal que
     1 0 2           12 
A=  5 4 1 , y B =  4 .
                      
     − 2 1 − 1
                     − 8
                       
En el la ventana de comandos esto queda

>> A=[1,0,2;5,4,1;-2,1,-1]




                                            4                  Ricardo Gustavo Miranda
Álgebra II                                  Introducción a la Programación en MatLab

A =

        1       0     2
        5       4     1
       -2       1    -1

>> B=[12,4,-8]'

B =

       12
        4
       -8

>> solucion(A,B)

ans =

       0.5714
      -1.1429
       5.7143

Verificándose que:

>> A*ans
ans =

       12
        4
       -8

Como puede verse, esta función siempre devuelve una “solución”, la cuál puede no ser
correcta si estamos ante un sistema incompatible.
Tampoco se consideran casos de indeterminabilidad.
Además, y este es tal vez el error más grande, no se toma en cuenta el hecho de que la
matriz A puede no ser ampliable con el vector de términos independientes B.
Con estas consideraciones, se puede concluir que este programa no es útil, o no está
completo.

Consigna:
      Ejecutar el algoritmo con otras matrices y vectores de términos independientes.
      Investigar sobre el funcionamiento de la instrucción size.
      Realizar algunos casos de prueba con sistemas de ecuaciones incompatibles e
      indeterminados.


3. Comentarios

Una de las herramientas más útiles para los programadores son los comentarios.
Mediante éstos, se puede hacer más legible el código fuente, estructurado y mantenible.
Los comentarios se introducen con el símbolo “%”; cuando este símbolo aparece, todo
lo que sigue a partir de él hasta el final de la línea se considera como un comentario.
Todo lo que sea un comentario dentro de un programa, es simplemente ignorado por el
intérprete.



                                           5                 Ricardo Gustavo Miranda
Álgebra II                                   Introducción a la Programación en MatLab

Además de las utilidades antes mencionadas, los comentarios en MatLab se usan para
crear el archivo Help de una función.
El archivo Help de una función es una especie de “Léeme” que indica el funcionamiento
básico de la función, así como su definición y los argumentos que puede recibir.
Para definir un archivo Help, o simplemente Help, de una función o un archivo de
comandos, se escribe como comentario todo lo que se quiere que este Help contenga,
justo después de la definición de la función, para el caso de los archivos de función; o al
inicio del archivo, en los archivos de comandos. El final del Help de un archivo se
marca con una separación mediante una línea en blanco.

Ejemplo: Vamos a modificar el programa antes escrito, e introduciremos un Help que
indique que es lo que el programa hace, y cuál es la forma correcta de ser convocado.
En la figura 6 puede verse como en la línea 7 se encuentra la separación antes
mencionada (línea en blanco), la cuál establece el final del archivo Help de Solución.m.




 Figura 6. Uso de los comentarios para crear el Help para un archivo M.


Consigna:
      Convocar al archivo Help de la función modificada y extraer conclusiones sobre
      su funcionamiento.




                                            6                  Ricardo Gustavo Miranda
Álgebra II                                 Introducción a la Programación en MatLab



4. Valores, Operadores y Expresiones Booleanas

Las valores booleanos, en general, sólo pueden tomar dos valores: Verdadero o Falso
(True y False en los lenguajes de programación).
MatLab no maneja los valores True y False para este tipo de expresiones, sino que
representa a True con un 1, y a False con un 0.
Los operadores de comparación son operadores que devuelven un valor booleano.
Estos operadores se listan a continuación:
       <: Menor que
       >: Mayor que
       <=: Menor o igual que
       >=: Mayor o igual que
       ~=: Distinto que
       ==: Igual que

Existen también los operadores que trabajan directamente sobre los valores booleanos,
para devolver otro valor booleano. Estos se conocen como operadores booleanos, y
aparecen a continuación:
       &: ‘y’ lógico (And)
       |: ‘ó’ lógico (Or)
       ~: ‘no’ lógico (Not)

Consigna:
      En la Command Window del MatLab escribir las siguientes líneas y sacar
      conclusiones:
       1.    23==23
       2.    51~=51
       3.    0&1
       4.    ~0

Las expresiones booleanas son expresiones cuyo resultado es un valor booleano. De
esto puede deducirse que en una expresión booleana intervienen operadores booleanos y
de comparación.

Consigna:
    En la ventana de comandos escribir las siguientes sentencias y extraer
    conclusiones:
       1.    (23>25)|(23<25)
       2.    (23>22)&(23<25)
       3.    (29==71)|1
       4.    (29<71)|((31==30)&(25==26))
       5.    ((29<71)|(31==30))&(25==26)
     Explicar la diferencia entre el punto 4 y el punto 5.
     Investigar o desarrollar otra forma realizar las operaciones booleanas, definiendo
     mediante el anillo de las clases residuales módulo 2.




                                          7                 Ricardo Gustavo Miranda
Álgebra II                                 Introducción a la Programación en MatLab



5. Estructuras de control

5.1 Bifuracciones

La estructura básica para la bifurcación es el if…then…else…end. En MatLab, se escribe

if <condición>
    <acciones a realizar por respuesta afirmativa>
else
    <acciones a realizar por respuesta negativa>
end

En donde <condición> es un valor, expresión, o función booleana.

Una forma de ampliar esta estructura es haciendo uso del elseif. Esta palabra permite
hacer varias evaluaciones, y, por lo tanto, obtener más de dos posibles alternativas.
Abajo se muestra la sintaxis para el uso del elseif.

if <condición 1>
    <acciones a realizar para condición 1>
elseif <condición 2>
    <acciones a realizar para condición 2>
else
    <acciones a realizar si ninguna condición se cumple>
end



Ejemplo:
Vamos a continuar mejorando la función “solución” planteada haciendo uso de los
comandos if... then…else…end.
Puede verse claramente que en la función nunca se controla el hecho de que la matriz A
tenga la misma cantidad de filas que el vector de términos independientes B; por lo
tanto agregamos un pequeño control que monitoree que se cumpla esta condición.
Además, tenemos que vigilar que el sistema sea compatible determinado para obtener la
solución correcta.
Luego, pediremos que el rango de la matriz A coincida con el rango de la ampliada, así
como con el número de incógnitas.
Estas modificaciones sobre la función pueden apreciarse en la figura 5.

Consigna:
    Ejecutar la función con la nueva modificación desde la ventana de comandos para
    valores válidos e inválidos de matrices A y B. Extraer conclusiones:
    1. ¿Qué devuelve el programa al ingresar dos matrices con el mismo número de
        filas?
    2. ¿Qué devuelve el programa el ingresar dos matrices con distinto número de
        filas?
    3. ¿Qué devuelve el programa al ingresar una matriz de coeficientes
        correspondiente a un sistema de ecuaciones incompatible?
    4. ¿Qué respuesta se obtiene ante un sistema que admite infinitas soluciones?
    5. ¿Cómo funciona el comando size dentro del programa?
    6. ¿Cómo funciona el comando error dentro del programa?


                                          8                 Ricardo Gustavo Miranda
Álgebra II                                                   Introducción a la Programación en MatLab




 Figura 7. Función “Solución” con el control implementado



5.2 Multifurcación (Switch)

La sentencia switch se usa para crear una estructura Case de control como la que se
muestra en la figura 6.
Esta estructura puede entenderse como varios elseif anidados, con la diferencia de que
en la estructura case no se controlan expresiones booleanas, sino valores de una
determinada expresión.




                                       Expresión a evaluar

                    Valor 1          Valor 2           …         Valor N



     Sentencias 1             Sentencias 2                   …             Sentencias N    Sentencias en
                                                                                             otro caso




 Figura 8. Esquema de una estructura Case genérica.


                                                             9                   Ricardo Gustavo Miranda
Álgebra II                                   Introducción a la Programación en MatLab

Para llevar este esquema a MatLab, se utiliza la siguiente sintaxis:

switch <Expresión      a evaluar>
    case <Valor 1>
       <Sentencias     1>
    case <Valor 2>
       <Sentencias     2>
    case <…>
       <…>
    case <Valor N>
       <Sentencias     N>
    otherwise
       <Sentencias     en otro caso>
end



5.3 Estructura For

En MatLab, la forma universal de la estructura for es:

for <Variable> = <Arreglo de elementos>
    <Sentencias>
end

La variable tomará el valor de cada columna y ejecutará las sentencias definidas, hasta
llegar al final del arreglo.
En los casos particulares para los cuales será usada esta instrucción, el arreglo de
elementos no es más que un vector de una fila y N columnas; por lo tanto, la variable
sólo tomará valores escalares, como en el ejemplo de código que sigue:

for i=1:N
    <Sentencias>
end

Aquí, el arreglo, o vector, está dado por 1:N, es decir, una matriz de la forma
[1, 2, 3,…, N].

Ejemplo:
A continuación se presenta un pequeño ejemplo del uso de esta instrucción. El
algoritmo busca un elemento dentro de un vector que recibe como parámetro.
Para este sencillo algoritmo no se consideraron todos los posibles casos, sino que se lo
presenta más bien a modo de ilustración del funcionamiento del comando For.
En la figura 9 aparece el programa, con su correspondiente Help, y algunos comentarios
que explican algunas variables.




                                            10                 Ricardo Gustavo Miranda
Álgebra II                                 Introducción a la Programación en MatLab




 Figura 9. Función “Buscar”.

5.4 Estructura While

Para definir una estructura While…Do…se usa la siguiente sintaxis:

while <Condición>
    <Sentencias>
end




                                          11                Ricardo Gustavo Miranda

Más contenido relacionado

La actualidad más candente

La actualidad más candente (12)

ESTRUCTURAS BÁSICAS
ESTRUCTURAS BÁSICASESTRUCTURAS BÁSICAS
ESTRUCTURAS BÁSICAS
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas
 
Programación modular en Introducción a la Programación
Programación modular en Introducción a la ProgramaciónProgramación modular en Introducción a la Programación
Programación modular en Introducción a la Programación
 
Glosario Términos De JAVA
Glosario Términos De JAVAGlosario Términos De JAVA
Glosario Términos De JAVA
 
Sesion 7 3 diseño diagramas de componentes
Sesion 7 3 diseño   diagramas de componentesSesion 7 3 diseño   diagramas de componentes
Sesion 7 3 diseño diagramas de componentes
 
Comandos java
Comandos javaComandos java
Comandos java
 
Santaella u5 Lenguaje C++
Santaella u5 Lenguaje C++Santaella u5 Lenguaje C++
Santaella u5 Lenguaje C++
 
Computacion3
Computacion3Computacion3
Computacion3
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas
 
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)
 
Pseint.
Pseint.Pseint.
Pseint.
 
Pseint
PseintPseint
Pseint
 

Destacado

Sesion4 matlab
Sesion4 matlabSesion4 matlab
Sesion4 matlabmatlab_usc
 
5 herramienta aprendizaje algoritmos geneticos entorno matlab
5 herramienta aprendizaje algoritmos geneticos entorno matlab5 herramienta aprendizaje algoritmos geneticos entorno matlab
5 herramienta aprendizaje algoritmos geneticos entorno matlabMaje Gonzalez
 
Matlab-una-introduccion-con-ejemplos-practicos-Amos-Gilat
Matlab-una-introduccion-con-ejemplos-practicos-Amos-GilatMatlab-una-introduccion-con-ejemplos-practicos-Amos-Gilat
Matlab-una-introduccion-con-ejemplos-practicos-Amos-Gilatalop3z
 
Algoritmica
AlgoritmicaAlgoritmica
Algoritmicasariz6
 
Tutorial funciones básicas Matlab
Tutorial funciones básicas MatlabTutorial funciones básicas Matlab
Tutorial funciones básicas Matlabkariitoorttega
 
Algoritmos genéticos con matlab
Algoritmos genéticos con matlabAlgoritmos genéticos con matlab
Algoritmos genéticos con matlabUNIV OF PERU
 
Algoritmos para matlab
Algoritmos para matlabAlgoritmos para matlab
Algoritmos para matlabVitoto96
 
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)morones.om
 

Destacado (12)

Trabajo matlab
Trabajo matlabTrabajo matlab
Trabajo matlab
 
Sesion4 matlab
Sesion4 matlabSesion4 matlab
Sesion4 matlab
 
5 herramienta aprendizaje algoritmos geneticos entorno matlab
5 herramienta aprendizaje algoritmos geneticos entorno matlab5 herramienta aprendizaje algoritmos geneticos entorno matlab
5 herramienta aprendizaje algoritmos geneticos entorno matlab
 
Matlab-una-introduccion-con-ejemplos-practicos-Amos-Gilat
Matlab-una-introduccion-con-ejemplos-practicos-Amos-GilatMatlab-una-introduccion-con-ejemplos-practicos-Amos-Gilat
Matlab-una-introduccion-con-ejemplos-practicos-Amos-Gilat
 
Algoritmica
AlgoritmicaAlgoritmica
Algoritmica
 
Tutorial funciones básicas Matlab
Tutorial funciones básicas MatlabTutorial funciones básicas Matlab
Tutorial funciones básicas Matlab
 
Matlab 2 Capitulo 2
Matlab 2 Capitulo 2Matlab 2 Capitulo 2
Matlab 2 Capitulo 2
 
Algoritmos genéticos con matlab
Algoritmos genéticos con matlabAlgoritmos genéticos con matlab
Algoritmos genéticos con matlab
 
Programacion en matlab
Programacion en matlabProgramacion en matlab
Programacion en matlab
 
Algoritmos para matlab
Algoritmos para matlabAlgoritmos para matlab
Algoritmos para matlab
 
Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)Guia rapida de matlab (comandos basicos, graficacion y programacion)
Guia rapida de matlab (comandos basicos, graficacion y programacion)
 
Matlab manual
Matlab manualMatlab manual
Matlab manual
 

Similar a Introducción a la Programación en MatLab

Similar a Introducción a la Programación en MatLab (20)

Diapositivas matlab
Diapositivas matlabDiapositivas matlab
Diapositivas matlab
 
cap6.pdf
cap6.pdfcap6.pdf
cap6.pdf
 
Computacion3
Computacion3Computacion3
Computacion3
 
Practica1 Matlab Operadores Básicos
Practica1 Matlab Operadores BásicosPractica1 Matlab Operadores Básicos
Practica1 Matlab Operadores Básicos
 
Diapositivas matlab
Diapositivas matlabDiapositivas matlab
Diapositivas matlab
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 
Matlab teoria
Matlab teoriaMatlab teoria
Matlab teoria
 
8448148681
84481486818448148681
8448148681
 
Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01
 
Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01
 
Estructura basica para c++
Estructura basica para c++Estructura basica para c++
Estructura basica para c++
 
Funciones con vectores y matrices1
Funciones con vectores y matrices1Funciones con vectores y matrices1
Funciones con vectores y matrices1
 
vectores y matrices
vectores y matricesvectores y matrices
vectores y matrices
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++
 
Tutorial de visual C++
Tutorial de visual C++Tutorial de visual C++
Tutorial de visual C++
 
Tutorial de visual_c_
Tutorial de visual_c_Tutorial de visual_c_
Tutorial de visual_c_
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++
 
Semana 02 software libre maxima
Semana 02 software libre maximaSemana 02 software libre maxima
Semana 02 software libre maxima
 
SEMANA 7 INFORMATICA APLICADA A INGENIERI.pptx
SEMANA 7 INFORMATICA APLICADA A INGENIERI.pptxSEMANA 7 INFORMATICA APLICADA A INGENIERI.pptx
SEMANA 7 INFORMATICA APLICADA A INGENIERI.pptx
 

Introducción a la Programación en MatLab

  • 1. Álgebra II Introducción a la Programación en MatLab Introducción a la Programación en MATLAB La programación en MATLAB se realiza básicamente sobre archivos M, o M-Files. Se los denomina de esta forma debido a su extensión “.m”. Estos archivos son simple archivos ASCII o scripts, y como tales, pueden ser creados y modificados desde cualquier editor de texto común; por ejemplo, el Bloc de Notas. El MatLab incluye un editor de archivos M, orientado a la programación sobre este software. Si se opta por otro editor , se debe vigilar siempre que los archivos escritos se guarden con esta extensión. De acuerdo a como se definan, estos archivos pueden separarse en dos tipos: 1. Archivos de comandos. 2. Funciones. 1. Archivos de Comandos Los archivos de comandos son simplemente archivos M que contienen instrucciones del MATLAB. Una vez editados, se los guarda con un nombre en algún directorio que se encuentre dentro del path de búsqueda del MATLAB. Por defecto, la carpeta de trabajo es el directorio work, que se encuentra dentro de la carpeta de instalación del MATLAB. Para cambiar este directorio o carpeta de trabajo, así como agregar nuevas carpetas de biblioteca, se debe usar el Path Browser, o el Set Path. El primero se encuentra en el editor de archivos M que trae el MATLAB incluido. Para convocar los archivos M escritos, solo se debe escribir el nombre del archivo guardado en la ventana de comandos, y las instrucciones que hayan sido escritas serán ejecutadas. Aquí se debe notar algo importante; todas las variables que se hayan definido o creado dentro de este archivo, luego de su ejecución, pasarán a formar parte de nuestro Espacio de Trabajo, o Workspace. Se debe tratar de que las variables del workspace no coincidan con las que aparecen en los archivos M que se han de ejecutar. Ejemplo: Se utilizará el ya clásico “Hola Mundo”. Primeramente, abrimos un documento de texto, ya sea desde el editor de archivos M que incluye el MATLAB, o desde cualquier otro que nos permita editar ASCII. En él, escribimos la siguiente línea, tal como lo muestra la figura 1. disp(‘Hola Mundo’) La función disp muestra en la ventana de comandos el string que se le envía como parámetro. Guardamos ahora el documento como Saludar.m, o el nombre que se desee, con su extensión .m. 1 Ricardo Gustavo Miranda
  • 2. Álgebra II Introducción a la Programación en MatLab Figura 1. Primer programa. Ahora, ingrese el nombre del archivo guardado en la ventana de comandos, sin la extensión .m esta vez. Para el ejemplo de arriba: >> Saludar Hola Mundo Este es un ejemplo bastante simple y claro de que es lo que hace un archivo de comandos cuando es llamado. Ahora vamos a ver que sucede cuando se definen variables dentro de éstos. Ejemplo: Suponemos ahora que tenemos los valores 5 y 3, los dos almacenados en las variables a y b respectivamente. Definimos ahora un archivo de comandos que intercambie los valores de esas variables. Escribimos sobre un archivo nuevo lo que se leen en la figura 2, y lo guardamos con el nombre de Intercambiar.m. Figura 2. Ejemplo de archivo de comandos con creación de variables. Al llamarlo en la ventana de comandos obtendremos: 2 Ricardo Gustavo Miranda
  • 3. Álgebra II Introducción a la Programación en MatLab Figura 3. Ejecución del archivo M. Puede verse ahora que las variables que se habían definido durante esta ejecución, a y b, forman ahora parte de nuestro workspace; es decir, forman parte de nuestro conjunto de variables que tenemos definidas en la ventana de comandos. Esto puede verse al escribir a o b: Figura 4. Variables definidas dentro de la ventana de comandos. 2. Funciones Una función es un archivo M similar al archivo M de comandos, con una diferencia en su definición. La primera línea de una función posee la siguiente estructura: function[argumentos_salida] = nombre(argumentos_entrada) • Nombre corresponde al nombre de la función. • Argumentos_salida representa una lista de elementos o variables de retorno de la función. El valor de cada uno de los elementos de salida varía a medida que se ejecuta el algoritmo. Los valores devueltos por la función convocada serán los valores que se encuentren en argumentos_salida en el momento en que termina la 3 Ricardo Gustavo Miranda
  • 4. Álgebra II Introducción a la Programación en MatLab ejecución de la función. La definición de esta salida es opcional; de no aparecer, la función se convertiría en un procedimiento, puesto que no devuelve nada; sólo acepta parámetros y ejecuta el algoritmo dado. • Argumentos_entrada son los parámetros que recibe la función para poder realizar su procesamiento. Estos argumentos, durante de la ejecución, son parámetros recibidos por valor (By value); es decir, se hacen duplicados de los parámetros, y es en éstos sobre los cuales se realizan todas las modificaciones. Contrario a los archivos M de comandos, todas las variables que se definan dentro del cuerpo o definición de la función, si la función es convocada desde la ventana de comandos, no pasarán a formar parte de nuestro workspace. IMPORTANTE El nombre de la función debe coincidir con el nombre de archivo M con el cual se la guarda. De no hacer esto, podrían existir errores de directorio y/o de ejecución. Dentro del cuerpo de la función, uno puede “salir” de la función mediante el comando return. Este comando detiene la ejecución del programa, y devuelve el valor actual de las variables de salida a la función, procedimiento o rutina que lo convocó. Ejemplo: Vamos a crear una función que obtenga el conjunto solución para un sistema de ecuaciones lineales compatible determinado, haciendo uso de una matriz A de coeficientes, y un vector dado B de términos independientes; es decir, obtendremos un X0 tal que AX0 = B. Dicho vector X0 será devuelto por la función que se escribe en un archivo M. Para esto, se hará uso de la función predefinida rref, la cuál obtiene una matriz de escalones reducida. Nuestra función ha de recibir dos parámetros, A y B. por lo tanto éstos se convertirán en los argumentos de la función, quedando como se ve en la figura 5. Figura 5. Ejemplo de definición de una función. Supongamos que tenemos dos matrices A y B, tal que  1 0 2  12  A=  5 4 1 , y B =  4 .     − 2 1 − 1    − 8   En el la ventana de comandos esto queda >> A=[1,0,2;5,4,1;-2,1,-1] 4 Ricardo Gustavo Miranda
  • 5. Álgebra II Introducción a la Programación en MatLab A = 1 0 2 5 4 1 -2 1 -1 >> B=[12,4,-8]' B = 12 4 -8 >> solucion(A,B) ans = 0.5714 -1.1429 5.7143 Verificándose que: >> A*ans ans = 12 4 -8 Como puede verse, esta función siempre devuelve una “solución”, la cuál puede no ser correcta si estamos ante un sistema incompatible. Tampoco se consideran casos de indeterminabilidad. Además, y este es tal vez el error más grande, no se toma en cuenta el hecho de que la matriz A puede no ser ampliable con el vector de términos independientes B. Con estas consideraciones, se puede concluir que este programa no es útil, o no está completo. Consigna: Ejecutar el algoritmo con otras matrices y vectores de términos independientes. Investigar sobre el funcionamiento de la instrucción size. Realizar algunos casos de prueba con sistemas de ecuaciones incompatibles e indeterminados. 3. Comentarios Una de las herramientas más útiles para los programadores son los comentarios. Mediante éstos, se puede hacer más legible el código fuente, estructurado y mantenible. Los comentarios se introducen con el símbolo “%”; cuando este símbolo aparece, todo lo que sigue a partir de él hasta el final de la línea se considera como un comentario. Todo lo que sea un comentario dentro de un programa, es simplemente ignorado por el intérprete. 5 Ricardo Gustavo Miranda
  • 6. Álgebra II Introducción a la Programación en MatLab Además de las utilidades antes mencionadas, los comentarios en MatLab se usan para crear el archivo Help de una función. El archivo Help de una función es una especie de “Léeme” que indica el funcionamiento básico de la función, así como su definición y los argumentos que puede recibir. Para definir un archivo Help, o simplemente Help, de una función o un archivo de comandos, se escribe como comentario todo lo que se quiere que este Help contenga, justo después de la definición de la función, para el caso de los archivos de función; o al inicio del archivo, en los archivos de comandos. El final del Help de un archivo se marca con una separación mediante una línea en blanco. Ejemplo: Vamos a modificar el programa antes escrito, e introduciremos un Help que indique que es lo que el programa hace, y cuál es la forma correcta de ser convocado. En la figura 6 puede verse como en la línea 7 se encuentra la separación antes mencionada (línea en blanco), la cuál establece el final del archivo Help de Solución.m. Figura 6. Uso de los comentarios para crear el Help para un archivo M. Consigna: Convocar al archivo Help de la función modificada y extraer conclusiones sobre su funcionamiento. 6 Ricardo Gustavo Miranda
  • 7. Álgebra II Introducción a la Programación en MatLab 4. Valores, Operadores y Expresiones Booleanas Las valores booleanos, en general, sólo pueden tomar dos valores: Verdadero o Falso (True y False en los lenguajes de programación). MatLab no maneja los valores True y False para este tipo de expresiones, sino que representa a True con un 1, y a False con un 0. Los operadores de comparación son operadores que devuelven un valor booleano. Estos operadores se listan a continuación: <: Menor que >: Mayor que <=: Menor o igual que >=: Mayor o igual que ~=: Distinto que ==: Igual que Existen también los operadores que trabajan directamente sobre los valores booleanos, para devolver otro valor booleano. Estos se conocen como operadores booleanos, y aparecen a continuación: &: ‘y’ lógico (And) |: ‘ó’ lógico (Or) ~: ‘no’ lógico (Not) Consigna: En la Command Window del MatLab escribir las siguientes líneas y sacar conclusiones: 1. 23==23 2. 51~=51 3. 0&1 4. ~0 Las expresiones booleanas son expresiones cuyo resultado es un valor booleano. De esto puede deducirse que en una expresión booleana intervienen operadores booleanos y de comparación. Consigna: En la ventana de comandos escribir las siguientes sentencias y extraer conclusiones: 1. (23>25)|(23<25) 2. (23>22)&(23<25) 3. (29==71)|1 4. (29<71)|((31==30)&(25==26)) 5. ((29<71)|(31==30))&(25==26) Explicar la diferencia entre el punto 4 y el punto 5. Investigar o desarrollar otra forma realizar las operaciones booleanas, definiendo mediante el anillo de las clases residuales módulo 2. 7 Ricardo Gustavo Miranda
  • 8. Álgebra II Introducción a la Programación en MatLab 5. Estructuras de control 5.1 Bifuracciones La estructura básica para la bifurcación es el if…then…else…end. En MatLab, se escribe if <condición> <acciones a realizar por respuesta afirmativa> else <acciones a realizar por respuesta negativa> end En donde <condición> es un valor, expresión, o función booleana. Una forma de ampliar esta estructura es haciendo uso del elseif. Esta palabra permite hacer varias evaluaciones, y, por lo tanto, obtener más de dos posibles alternativas. Abajo se muestra la sintaxis para el uso del elseif. if <condición 1> <acciones a realizar para condición 1> elseif <condición 2> <acciones a realizar para condición 2> else <acciones a realizar si ninguna condición se cumple> end Ejemplo: Vamos a continuar mejorando la función “solución” planteada haciendo uso de los comandos if... then…else…end. Puede verse claramente que en la función nunca se controla el hecho de que la matriz A tenga la misma cantidad de filas que el vector de términos independientes B; por lo tanto agregamos un pequeño control que monitoree que se cumpla esta condición. Además, tenemos que vigilar que el sistema sea compatible determinado para obtener la solución correcta. Luego, pediremos que el rango de la matriz A coincida con el rango de la ampliada, así como con el número de incógnitas. Estas modificaciones sobre la función pueden apreciarse en la figura 5. Consigna: Ejecutar la función con la nueva modificación desde la ventana de comandos para valores válidos e inválidos de matrices A y B. Extraer conclusiones: 1. ¿Qué devuelve el programa al ingresar dos matrices con el mismo número de filas? 2. ¿Qué devuelve el programa el ingresar dos matrices con distinto número de filas? 3. ¿Qué devuelve el programa al ingresar una matriz de coeficientes correspondiente a un sistema de ecuaciones incompatible? 4. ¿Qué respuesta se obtiene ante un sistema que admite infinitas soluciones? 5. ¿Cómo funciona el comando size dentro del programa? 6. ¿Cómo funciona el comando error dentro del programa? 8 Ricardo Gustavo Miranda
  • 9. Álgebra II Introducción a la Programación en MatLab Figura 7. Función “Solución” con el control implementado 5.2 Multifurcación (Switch) La sentencia switch se usa para crear una estructura Case de control como la que se muestra en la figura 6. Esta estructura puede entenderse como varios elseif anidados, con la diferencia de que en la estructura case no se controlan expresiones booleanas, sino valores de una determinada expresión. Expresión a evaluar Valor 1 Valor 2 … Valor N Sentencias 1 Sentencias 2 … Sentencias N Sentencias en otro caso Figura 8. Esquema de una estructura Case genérica. 9 Ricardo Gustavo Miranda
  • 10. Álgebra II Introducción a la Programación en MatLab Para llevar este esquema a MatLab, se utiliza la siguiente sintaxis: switch <Expresión a evaluar> case <Valor 1> <Sentencias 1> case <Valor 2> <Sentencias 2> case <…> <…> case <Valor N> <Sentencias N> otherwise <Sentencias en otro caso> end 5.3 Estructura For En MatLab, la forma universal de la estructura for es: for <Variable> = <Arreglo de elementos> <Sentencias> end La variable tomará el valor de cada columna y ejecutará las sentencias definidas, hasta llegar al final del arreglo. En los casos particulares para los cuales será usada esta instrucción, el arreglo de elementos no es más que un vector de una fila y N columnas; por lo tanto, la variable sólo tomará valores escalares, como en el ejemplo de código que sigue: for i=1:N <Sentencias> end Aquí, el arreglo, o vector, está dado por 1:N, es decir, una matriz de la forma [1, 2, 3,…, N]. Ejemplo: A continuación se presenta un pequeño ejemplo del uso de esta instrucción. El algoritmo busca un elemento dentro de un vector que recibe como parámetro. Para este sencillo algoritmo no se consideraron todos los posibles casos, sino que se lo presenta más bien a modo de ilustración del funcionamiento del comando For. En la figura 9 aparece el programa, con su correspondiente Help, y algunos comentarios que explican algunas variables. 10 Ricardo Gustavo Miranda
  • 11. Álgebra II Introducción a la Programación en MatLab Figura 9. Función “Buscar”. 5.4 Estructura While Para definir una estructura While…Do…se usa la siguiente sintaxis: while <Condición> <Sentencias> end 11 Ricardo Gustavo Miranda