Está en la página 1de 0

lgebra II Introduccin a la Programacin en MatLab

1 Ricardo Gustavo Miranda


Introduccin a la Programacin en MATLAB

La programacin en MATLAB se realiza bsicamente sobre archivos M, o M-Files. Se
los denomina de esta forma debido a su extensin .m.
Estos archivos son simple archivos ASCII o scripts, y como tales, pueden ser creados y
modificados desde cualquier editor de texto comn; por ejemplo, el Bloc de Notas. El
MatLab incluye un editor de archivos M, orientado a la programacin sobre este
software. Si se opta por otro editor , se debe vigilar siempre que los archivos escritos se
guarden con esta extensin.
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 algn directorio que se
encuentre dentro del path de bsqueda del MATLAB.
Por defecto, la carpeta de trabajo es el directorio work, que se encuentra dentro de la
carpeta de instalacin 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 sern
ejecutadas.
Aqu se debe notar algo importante; todas las variables que se hayan definido o creado
dentro de este archivo, luego de su ejecucin, pasarn 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 clsico 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 lnea,
tal como lo muestra la figura 1.

disp(Hola Mundo)

La funcin disp muestra en la ventana de comandos el string que se le enva como
parmetro.
Guardamos ahora el documento como Saludar.m, o el nombre que se desee, con su
extensin .m.

lgebra II Introduccin a la Programacin en MatLab

2 Ricardo Gustavo Miranda



Ahora, ingrese el nombre del archivo guardado en la ventana de comandos, sin la
extensin .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.





Al llamarlo en la ventana de comandos obtendremos:
Figura 2. Ejemplo de archivo de comandos con creacin de variables.
Figura 1. Primer programa.
lgebra II Introduccin a la Programacin en MatLab

3 Ricardo Gustavo Miranda



Puede verse ahora que las variables que se haban definido durante esta ejecucin, 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:



2. Funciones

Una funcin es un archivo M similar al archivo M de comandos, con una diferencia en
su definicin. La primera lnea de una funcin posee la siguiente estructura:

function[argumentos_salida] = nombre(argumentos_entrada)

Nombre corresponde al nombre de la funcin.
Argumentos_salida representa una lista de elementos o variables de retorno de la
funcin. El valor de cada uno de los elementos de salida vara a medida que se
ejecuta el algoritmo. Los valores devueltos por la funcin convocada sern los
valores que se encuentren en argumentos_salida en el momento en que termina la
Figura 3. Ejecucin del archivo M.
Figura 4. Variables definidas dentro de la ventana de comandos.
lgebra II Introduccin a la Programacin en MatLab

4 Ricardo Gustavo Miranda
ejecucin de la funcin. La definicin de esta salida es opcional; de no aparecer, la
funcin se convertira en un procedimiento, puesto que no devuelve nada; slo
acepta parmetros y ejecuta el algoritmo dado.
Argumentos_entrada son los parmetros que recibe la funcin para poder realizar
su procesamiento. Estos argumentos, durante de la ejecucin, son parmetros
recibidos por valor (By value); es decir, se hacen duplicados de los parmetros, 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 definicin de la funcin, si la funcin es convocada desde la ventana de
comandos, no pasarn a formar parte de nuestro workspace.


Dentro del cuerpo de la funcin, uno puede salir de la funcin mediante el comando
return. Este comando detiene la ejecucin del programa, y devuelve el valor actual de
las variables de salida a la funcin, procedimiento o rutina que lo convoc.

Ejemplo: Vamos a crear una funcin que obtenga el conjunto solucin para un sistema
de ecuaciones lineales compatible determinado, haciendo uso de una matriz A de
coeficientes, y un vector dado B de trminos independientes; es decir, obtendremos un
X
0
tal que AX
0
= B. Dicho vector X
0
ser devuelto por la funcin que se escribe en un
archivo M.
Para esto, se har uso de la funcin predefinida rref, la cul obtiene una matriz de
escalones reducida.
Nuestra funcin ha de recibir dos parmetros, A y B. por lo tanto stos se convertirn en
los argumentos de la funcin, quedando como se ve en la figura 5.





Supongamos que tenemos dos matrices A y B, tal que


=
1 1 2
1 4 5
2 0 1
A , y

=
8
4
12
B .
En el la ventana de comandos esto queda

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

IMPORTANTE
El nombre de la funcin debe coincidir con el nombre de archivo M con el cual se la
guarda. De no hacer esto, podran existir errores de directorio y/o de ejecucin.
Figura 5. Ejemplo de definicin de una funcin.
lgebra II Introduccin a la Programacin en MatLab

5 Ricardo Gustavo Miranda
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

Verificndose que:

>> A*ans
ans =

12
4
-8

Como puede verse, esta funcin siempre devuelve una solucin, la cul puede no ser
correcta si estamos ante un sistema incompatible.
Tampoco se consideran casos de indeterminabilidad.
Adems, y este es tal vez el error ms grande, no se toma en cuenta el hecho de que la
matriz A puede no ser ampliable con el vector de trminos 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 trminos independientes.
Investigar sobre el funcionamiento de la instruccin size.
Realizar algunos casos de prueba con sistemas de ecuaciones incompatibles e
indeterminados.

3. Comentarios

Una de las herramientas ms tiles para los programadores son los comentarios.
Mediante stos, se puede hacer ms legible el cdigo fuente, estructurado y mantenible.
Los comentarios se introducen con el smbolo %; cuando este smbolo aparece, todo
lo que sigue a partir de l hasta el final de la lnea se considera como un comentario.
Todo lo que sea un comentario dentro de un programa, es simplemente ignorado por el
intrprete.
lgebra II Introduccin a la Programacin en MatLab

6 Ricardo Gustavo Miranda
Adems de las utilidades antes mencionadas, los comentarios en MatLab se usan para
crear el archivo Help de una funcin.
El archivo Help de una funcin es una especie de Leme que indica el funcionamiento
bsico de la funcin, as como su definicin y los argumentos que puede recibir.
Para definir un archivo Help, o simplemente Help, de una funcin o un archivo de
comandos, se escribe como comentario todo lo que se quiere que este Help contenga,
justo despus de la definicin de la funcin, para el caso de los archivos de funcin; o al
inicio del archivo, en los archivos de comandos. El final del Help de un archivo se
marca con una separacin mediante una lnea en blanco.

Ejemplo: Vamos a modificar el programa antes escrito, e introduciremos un Help que
indique que es lo que el programa hace, y cul es la forma correcta de ser convocado.
En la figura 6 puede verse como en la lnea 7 se encuentra la separacin antes
mencionada (lnea en blanco), la cul establece el final del archivo Help de Solucin.m.




Consigna:
Convocar al archivo Help de la funcin modificada y extraer conclusiones sobre
su funcionamiento.
Figura 6. Uso de los comentarios para crear el Help para un archivo M.
lgebra II Introduccin a la Programacin en MatLab

7 Ricardo Gustavo Miranda
4. Valores, Operadores y Expresiones Booleanas

Las valores booleanos, en general, slo pueden tomar dos valores: Verdadero o Falso
(True y False en los lenguajes de programacin).
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 comparacin son operadores que devuelven un valor booleano.
Estos operadores se listan a continuacin:
<: Menor que
>: Mayor que
<=: Menor o igual que
>=: Mayor o igual que
~=: Distinto que
==: Igual que

Existen tambin los operadores que trabajan directamente sobre los valores booleanos,
para devolver otro valor booleano. Estos se conocen como operadores booleanos, y
aparecen a continuacin:
&: y lgico (And)
|: lgico (Or)
~: no lgico (Not)

Consigna:
En la Command Window del MatLab escribir las siguientes lneas 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 expresin booleana intervienen operadores booleanos y
de comparacin.

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 mdulo 2.
lgebra II Introduccin a la Programacin en MatLab

8 Ricardo Gustavo Miranda
5. Estructuras de control
5.1 Bifuracciones

La estructura bsica para la bifurcacin es el ifthenelseend. En MatLab, se escribe

if <condicin>
<acciones a realizar por respuesta afirmativa>
else
<acciones a realizar por respuesta negativa>
end

En donde <condicin> es un valor, expresin, o funcin booleana.

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

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


Ejemplo:
Vamos a continuar mejorando la funcin solucin planteada haciendo uso de los
comandos if... thenelseend.
Puede verse claramente que en la funcin nunca se controla el hecho de que la matriz A
tenga la misma cantidad de filas que el vector de trminos independientes B; por lo
tanto agregamos un pequeo control que monitoree que se cumpla esta condicin.
Adems, tenemos que vigilar que el sistema sea compatible determinado para obtener la
solucin correcta.
Luego, pediremos que el rango de la matriz A coincida con el rango de la ampliada, as
como con el nmero de incgnitas.
Estas modificaciones sobre la funcin pueden apreciarse en la figura 5.

Consigna:
Ejecutar la funcin con la nueva modificacin desde la ventana de comandos para
valores vlidos e invlidos de matrices A y B. Extraer conclusiones:
1. Qu devuelve el programa al ingresar dos matrices con el mismo nmero de
filas?
2. Qu devuelve el programa el ingresar dos matrices con distinto nmero 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. Cmo funciona el comando size dentro del programa?
6. Cmo funciona el comando error dentro del programa?
lgebra II Introduccin a la Programacin en MatLab

9 Ricardo Gustavo Miranda




5.2 Multifurcacin (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 expresin.


Expresin a evaluar
Valor 1 Valor 2 Valor N
Sentencias 1 Sentencias 2 Sentencias N
Figura 8. Esquema de una estructura Case genrica.
Sentencias en
otro caso
Figura 7. Funcin Solucin con el control implementado
lgebra II Introduccin a la Programacin en MatLab

10 Ricardo Gustavo Miranda
Para llevar este esquema a MatLab, se utiliza la siguiente sintaxis:

switch <Expresin 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 instruccin, el arreglo de
elementos no es ms que un vector de una fila y N columnas; por lo tanto, la variable
slo tomar valores escalares, como en el ejemplo de cdigo 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 continuacin se presenta un pequeo ejemplo del uso de esta instruccin. El
algoritmo busca un elemento dentro de un vector que recibe como parmetro.
Para este sencillo algoritmo no se consideraron todos los posibles casos, sino que se lo
presenta ms bien a modo de ilustracin del funcionamiento del comando For.
En la figura 9 aparece el programa, con su correspondiente Help, y algunos comentarios
que explican algunas variables.

lgebra II Introduccin a la Programacin en MatLab

11 Ricardo Gustavo Miranda


5.4 Estructura While

Para definir una estructura WhileDose usa la siguiente sintaxis:

while <Condicin>
<Sentencias>
end


Figura 9. Funcin Buscar.

También podría gustarte