2 - Matlab - CapII - Franco M. Rosa A

Anuncio
CAPII. PROGRAMACIÓN EN MATLAB
BIOTRONIK-2011
CAPII. PROGRAMACIÓN EN MATLAB
II.1. PROGRAMACIÓN
Matlab, es un lenguaje de alto nivel que incluye estructuras de datos basadas en
matrices, sus propios tipos de datos internos, un extenso catalogo de instrucciones,
un medio en el que podemos desarrollar nuestras propias funciones y código, la
habilidad de importar y exportar muchos tipos de archivos, interfaz con periféricos,
entre otras capacidades. Esta sección presenta alguna de las características y técnicas
de programación en Matlab.
II.2. Control condicional – if, else, switch.
El comando if evalúa una condición lógica y ejecuta un grupo de sentencias cuando
la expresión en verdadera. Los comandos opcionales else y elseif permiten la
ejecución de grupos de sentencias alternativos. El comando end, que corresponde a
if, termina el último grupo de instrucciones. Los grupos de instrucciones son
perfilados por estas cuatro instrucciones, no se requiere el uso de paréntesis.
Ejemplo II.2.1
Asignamos algun escalar a A y B, luego aplicamos el algoritmo de comparación
>>A = 13; B = 14;
if A > B
'Mayor'
elseif A < B
'Menor'
elseif A == B
'Igual'
else
error('Situacion Inesperada')
end
ans =
Menor
Es importante entender como trabajan las funciones lógicas con las matrices, cuando
queremos verificar la igualdad entre dos matrices podríamos utilizar if A == B,
..., si A y B son escalares el resultado es el esperado, pero si se tratan de matrices, el
resultado será una matriz de 0´s y 1´s, que nos indican que elementos son iguales.
Ejemplo II.2.2
A = magic(4);
ans =
0
1
1
1
1
1
1
1
B = A;
1
1
1
1
B(1,1) = 0; A == B
1
1
1
1
La manera apropiada de verificar la igualdad entre dos variables es usar la sentencia
if isequal(A, B), ..., que nos devolverá un escalar siempre.
El comando switch ejecuta grupos de instrucciones dependiendo del valor de
alguna variable o expresión. Las funciones case y otherwise limitan estos grupos,
Franco M. Rosa Alagón
1
narfz@hotmail.com
CAPII. PROGRAMACIÓN EN MATLAB
BIOTRONIK-2011
solo el primer caso de correspondencia es ejecutado, siempre debe haber un end para
corresponder la función switch.
Ejemplo II.2.3
Definimos la variable A, y permitimos que le programa “lea” el numeral
>> A = 1;
switch A
case 0
'Cero'
case 1
'Uno'
case 2
'Dos'
otherwise
error('Mejore el programa')
end
II.3. Control de bucle – for, while, continue, break.
El bucle for repite un grupo de instrucciones durante un predeterminado número de
veces. Un bucle for siempre va acompañado de su correspondiente end.
Ejemplo II.3.1
>> for n = 1:10
r(n) = factorial(n);
end
r
Es recomendable marcar los bucles para mejorar la legibilidad, especialmente cuando
se encuentran bucles anidados en otros.
Ejemplo II.3.1
>>m = 2; n = 5;
for i = 1:m
for j = 1:n
H(i,j) = 1/(i+j);
end
end
El bucle while repite instrucciones indefinidamente bajo el control de una función
lógica. Un end correspondiente a esta función delinea sus limites.
Ejemplo II.3.2
Este ejemplo suma todos los números enteros desde 1 hasta el asignado en la variable
a, y la devuelve en la variable Suma.
>>a = 5; t = 0; Suma = 0;
while t<=a
Suma = t + Suma; t = t + 1;
end;
Suma
La instrucción continue pasa el control a la iteración siguiente del bucle for o
while al que pertenece, ignorando las sentencias pendientes en el cuerpo del bucle.
Franco M. Rosa Alagón
2
narfz@hotmail.com
CAPII. PROGRAMACIÓN EN MATLAB
BIOTRONIK-2011
Ejemplo II.3.3
Este ejemplo cuenta el número de letras que forman una oración dejando de contar
los espacios en blanco, la cuenta final se almacena en la variable Cuenta.
>> Oracion = 'Cuantas letras hay aqui';
Cuenta=0; c = length(Oracion);
for t=1:c
if Oracion(t)==' ' continue; end
Cuenta=Cuenta+1;
end
La instrucción break permite salir de un bucle sin que haya terminado, en bucles
anidados, la función break sale solo del bucle más interno.
Ejemplo II.3.4
Este ejemplo cuenta el número de letras que forman la primera palabra de una
oración, luego, se almacena en la variable Cuenta.
>> Oracion = 'Cuantas letras hay en Cuantas';
Cuenta=0; c = length(Oracion);
for t=1:c
if Oracion(t)==' ' break; end
Cuenta=Cuenta+1;
end
II.4. Scripts y Funciones.
Matlab es un potente lenguaje de programación, así como un medio computacional
interactivo. Los archivos que contienen código en leguaje Matlab son llamados
archivos-M o M-files, estos se crean utilizando un editor de texto, luego las usas
como si se trataran de cualquier función de Matlab.
Hay dos tipos de M-files
 Scripts, son aquellas que no aceptan argumentos de entrada y tampoco
devuelven argumentos de salida, estos operan datos del workspace.
 Funciones, aceptan argumentos de entrada y devuelven argumentos de salida,
las variables internas son de uso local.
II.4.1. Scripts.
Cuando invocamos un script, Matlab solo ejecuta los comandos encontrados en el
archivo. Los scripts operan los datos ubicados en el espacio de trabajo, o pueden
crear nuevos datos sobre los cuales operar, aunque no generan argumentos de salida,
los resultados de las operaciones realizadas se mantienen en el espacio de trabajo.
Ejemplo II.5.1
Cree un archivo llamado miScript.m que contenga las siguientes instrucciones
% Graficar estadisticas de Clase
A = 15;
D = 6;
R = 2;
NP = 1;
x = [A D R NP];
explode = [1 0 0 0];
pie(x,explode)
colormap jet
legend('Aprobados','Desaprobados','Reprobados','NP');
Franco M. Rosa Alagón
3
narfz@hotmail.com
CAPII. PROGRAMACIÓN EN MATLAB
BIOTRONIK-2011
Figura 1. Resultado del miScript.m,
las variables creadas figuran en el
workspace
II.4.1 Funciones.
Las funciones son M-files que soportan variables de entrada y salida, los nombres de
las funciones y los M-files asociados deben ser los mismos. Las funciones operan las
variables en su propio espacio de trabajo, distinto al que se accede por el prompt.
Ejemplo II.6.1
Cree un archivo llamado miFuncion.m que contenga las siguientes instrucciones
function Ap = miFuncion(A,D,R,NP)
% Este programa calcula Ap, el porcentaje de aprobados en clase; luego
grafica
% las estadisticas, tiene como entrada el número de aprobados,
desaprobados
% y reprobados respectivamente.
x = [A D R NP];
explode = [1 0 0 0];
pie(x,explode)
colormap jet
legend('Aprobados','Desaprobados','Reprobados','NP');
Ap = 100*A/(A+D+R+NP);
Luego, tipee:
>>miFuncion(15,6,2,1)
ans =
62.5000
Matlab retornará el mismo grafico obtenido con el script, además, el porcentaje de
aprobados.
Se pudo observar en este ejemplo que una función puede mejorar la acción de un
script, pues permite gran versatilidad y velocidad al momento de ejecutar las
instrucciones asociadas.
El primer comando de este M-file es function. Lo que permite dar nombre a la
función y orden de argumentos, En este caso hay cuatro argumentos de entrada y
uno de salida, las siguientes líneas de comentario proveen información de la función
y es lo que se visualizara si se escribe help miFuncion.
Franco M. Rosa Alagón
4
narfz@hotmail.com
Descargar