Make your own free website on Tripod.com

Programación con MATLAB


 

MATLAB es una herramienta muy poderosa en un lenguaje de programación muy sencillo con el que abordar tareas complejas y cuyos elementos más básicos pasamos a describir aquí. Para poder seguir este punto se presuponen ciertas nociones sobre programación en general, nociones que no vamos a exponer aquí pues no forman parte del propósito de esta introducción a MATLAB. Así que vamos a empezar con la descripción de los elementos del lenguaje de los que dispone MATLAB para programar.

Bucles

Los bucles en MATLAB tienen la forma

 for variable_contador = INICIO : PASO : FIN
     Accion_1
       ...
     Accion_M
 end

 

Los bucles pueden sernos útiles para definir matrices, por ejemplo:

 A=zeros(10);
 for i=1:10
   for j=1:10
     A(i,j)=rem( i+j, 10);
   end;
 end
 

Notar que previamente hemos inicializado la matriz A haciendo que todas sus componentes sean ceros; esto puede sernos útil porque así dimensionamos previamente la matriz y puede evitarnos futuros errores en el programa.

Condicionales

De las tres posibles estructuras condicionales que se dan en la programación, tenemos disponibles dos de ellas en MATLAB (realmente, con dos hay suficiente), el condicional if y el condicional while, cuya sintaxis exponemos:

Condicional IF

La estructura del if simple es la siguiente:

 if condicion
   Acciones a realizar si es cierta la condición
 end

y la estructura del if con alternativa es:

 if condicion
   Acciones a realizar si es cierta la condicion
 else
   Acciones a realizar si es falsa la condicion
 end

También tenemos if con alternativa elseif:

 if condicion1
   Acciones a realizar si es cierta condicion1
 elseif condicion2
   Acciones a realizar si es cierta condicion2
 else
   Acciones a realizar si no son ciertas condicion1 y condicion2
 end

La condición debe ser una expresión lógica que MATLAB reconoce, pero de forma vectorial, asociándole el valor 1 si es cierta y el valor 0 si es falsa. Vamos a ver unos ejemplos tomando los vectores x=[-1,0,1] e y=[0,1,-1].

x==0 devuelve [0,1,0]. == es el operador de igualdad; MATLAB compara si cada una de las componentes del vector x es igual a 0, poniendo en el resultado un 0 en el lugar de las componentes que no lo son, y un 1 en el lugar de las componentes que sí lo son. Si hubiéramos puesto x==pi, MATLAB nos hubiera devuelto [0,0,0] porque el vector x no tiene componente alguna cuyo valor sea pi.

 

x>0 devuelve [0,0,1] mientras que x>=0 devuelve [0,1,1]. De igual forma tenemos los operadores de desigualdad < y <=. La no igualdad la conseguimos con ~=. Si escribimos x~=0, MATLAB nos devolverá [1,0,1], pues las componentes primera y tercera son distintas de cero, mientras que la segunda no es distinta de cero.

La expresiones lógicas pueden ser compuestas, usando para ello los nexos conjuntivos, disyuntivos y negativos, como vemos a continuacion:

La conjunción AND se escribe & en MATLAB, así, si hacemos (x>=0)&(y>0), MATLAB nos responde [0,1,0], pues x>=0 es [0,1,1] mientras que y>0 es [0,1,0], así que ambas son ciertas cuando es [0,1,0].

$ \bullet $

La disyunción OR se escribe | en MATLAB, por tanto, (x>=0)|(y>0) devuelve [0,1,1]. También tenemos la disyunción exclusiva XOR, que en MATLAB se escribe xor, y se usa como en el siguiente ejemplo: xor((x==1),(y>=-1)), cuyo resultado es [1,1,0]

 

Por último, podemos negar toda una proposición sin más que delimitarla entre paréntesis y anteponer el símbolo de la negación ~. Por ejemplo, con ~(x==1) obtenemos [1,1,0], pues x==1 es [0,0,1]

Por último sólo queda señalar que, al igual que con los bucles for, el condicional if puede anidarse según la complejidad que necesitemos. Veamos un ejemplo ilustrativo aunque un poco simplón de if-elseif-else:

function mayor(a,b)
% Funcion tonta que te dice si, dados dos argumentos de entrada
% A y B, son iguales, uno mayor que el otro o menor
% El resultado solo tiene sentido cuando A,B son numeros reales
 
if a==b disp('a=b');
 elseif a>b disp('a>b');
 else disp('a<b');
end

Si lo probamos con números (por ejemplo, prueba a hacer mayor(3,4), verás que el resultado es 'a<b'), el programa nos dice si $ a$es mayor, menor o igual que $ b$, siendo $ a$y $ b$los números que hemos introducido. Ahora, si lo probamos, por ejemplo, con matrices, observarás que el resultado no tiene mucho sentido, puesto que ¿cuándo es una matriz mayor o menor que otra si no lo son componente a componente?

Condicional WHILE

La estructura del condicional while es igual de sencilla:

 while condicion
    Instrucciones
 end

donde condición es una expresión lógica construida

La palabra clave BREAK

A lo mejor queremos controlar en un condicional que si se da una ocasión muy excepcional, como algún posible error que tengamos previsto, el programa no continue en el condicional, sino que queremos que salga fuera y se muestre por pantalla algún mensaje informando del error. Pues para ello tenemos la palabra reservada break, como vemos en el siguiente ejemplo:

function mayorC(a,b)
% Funcion tonta similar a mayor, pero excluye el caso complejo dando error
if (imag(a)~=0)|(imag(b)~=0)
  disp('Error: no existe orden en C');
  break
elseif a==b disp('a=b');
 elseif a>b disp('a>b');
  else disp('a<b');
end

y pruébala con mayorC(i,1) o con mayorC(3,i).

 

 

Referencias Bibliograficas

Lola Cárdenas (2002). [Documento en línea]. Disponible en: http://rinconprog.metropoliglobal.com/CursosProg/CalculoCient/MatLab/index.php?cap=6b.

[Consultada: 2004, Mayo 6]

 


Web diseñada y Administrada por: Irlenys Tersek (Ingeniero Electrónico en Computación)
E-mail: irlenys@hotmail.com, irlenyst@yahoo.com,  irlenystersek@cantv.net

Fecha y Hora de Actualización:17/12/2005 05:17:40 p.m.