Programación en Matlab
Lectura 2
Guilmer González
Programación en Matlab
2
En ésta ocasión veremos:
Sobre el entorno de programación de Matlab
El path de búsqueda de archivos
Los m-file como scripts y como funciones
Control de flujo (Estructuras de control)
Función de funciones
Programación en Matlab
3
Sobre el entorno de programación
Cómo indicar el directorio de trabajo
>> dir
>> cd mis_archivos
>> pwd
Los directorios de matlab definen dónde se
encuentran los archivos en que Matlab buscará
los m-files
>> path
>> addpath
>> pathtool
>> which linspace
C:\MATLABR11\toolbox\matlab\elmat\linspace.m
Programación en Matlab
Sobre el entorno de trabajo
Los m-files son localizados en el directorio actual
de trabajo o bien en los directorios del path de
matlab.
Una función o variable al ser llamada desde el
entorno solicita a Matlab su búsqueda en la
secuencia:
1. Si es una variable del espacio de trabajo
2. La considera una variable predefinida
3. La considera un m-file de Matlab
4. La trata de localizar como m-file en el directorio
de uso
5. La trata de localizar como m-file en el path de
Matlab
4
Programación en Matlab
5
Sobre el lenguaje de programación
Los archivos de ejecución script-files son
archivos de texto que contienen líneas
que pudieron ser tecleadas desde el
entorno de Matlab:
fact.m
% Factorial n!=1*2*...*n
y = prod(1:n),
Para ejecutarlo teclee
>> fact
Para observar el archivo, su conjunto de
intrucciones teclee
>> type fact
Programación en Matlab
Sobre la programación en Matlab
Las funciones en los m-files cuentan con
variables locales y siempre inician con la
intrucción function
fact.m
function y=fact(n)
% function y=fact(n)
%Y=FACT(N) Calcula el factorial de n
% n!=1*2*...*n
y = prod(1:n);
Para ejecutarlo teclee
>> sol=fact(5)
6
Programación en Matlab
Sobre la programación en Matlab
OJO: Es importante documentar los
archivos de Matlab
>> sol=fact(6);
>> sol=feval(’fact’,3)
feval evalua una función pre-definida
>> help feval
7
Programación en Matlab
Control de flujo - selección
La instrucción if-elseif-else
if (<condición>)
<instrucciones>;
elseif (<condición>)
<instrucciones>;
else (<condición>)
<instrucciones>;
end
8
Programación en Matlab
Control de flujo - selección
Operadores relacionales: ==, ~=, >, <,
Operadores lógicos: & (and), | (or), ~ (not)
Pruebas lógicas: isempty, any, all
if isempty(who)
disp(‘No hay elementos’);
else
whos
end
9
Programación en Matlab
Control de flujo - selección
Chequeo de datos, un ejemplo más
elaborados
fact.m
function y=fact(n)
% y=fact(n) calcula el factorial de n.
%
if nargin < 1
error(’No hay entrada alguna’)
elseif n < 0
error(’el número debe ser no negativo’)
elseif abs(n-round(n)) > eps
error(’el numero debe ser un entero’)
end
y = prod(1:n);
10
Programación en Matlab
Control de flujo – repetición
for-loops
for k=<vector de valores>
<asignaciones>;
<instrucciones diversas>;
end
Los comandos son ejecutados
repetidamente y en cada una de ellas la
variable k toma un valor del loop-vector
11
Programación en Matlab
12
Control de flujo - repetición
Ejemplo: desplegar una tabla de factoriales
for k=1:12,
disp([num2str(k),´ ´,...
num2str(prod(1:k))]);
end
Programación en Matlab
Control de flujo - repetición
Cambiando fact.m
function y=fact(n)
% y=fact(n)
% calcula el Factorial n!=1*2*...*n
y=1;
for k=2:n,
y = y*n;
end
13
Programación en Matlab
14
Repetición: animación del logo
Construir un archivo m-file que presente el
logo de Matlab y lo mueva frame por
frame, luego mueva el logo.
logo
dtheta = 10;
for k = 1:360/dtheta,
M(k) = getframe(gcf);
camorbit(dtheta,0);
end
logomovie.m
Programación en Matlab
Animación del logo
>> movie(gcf,M)
15
Programación en Matlab
Control de flujo – Condicional de
ejecución
while-loops
while (<condición>)
<intrucciones>;
end
El cuerpo del loop es ejecutado mientras
que la intrucción condicional sea cierta.
16
Programación en Matlab
Control de flujo – Condicional de
ejecución
Cuál es el factorial más grande que Matlab
puede calcular? Compare las
implementaciones:
k=1;
While prod(1:k)~=Inf, k=k+1; end
k
for k=1:100000;
if prod(1:k)==Inf, k, return, end
end
17
Programación en Matlab
18
Ejercicio
Implemente el método de newton
x n 1  x n 
f ( xn )
f ( x n )
Para resolver
f ( x)  x  e  0
x
Programación en Matlab
19
Resumen
El usuario puede crear m-files y usarlos al
añadirlos al path de Matlab o estar sobre
el directorio de trabajo
Las funciones trabajan con variables
locales, mientras que los scripts operan
sobre las variables del espacio de trabajo
Se cuentan con estructuras de control
típicos: is if-else-end, for-loops y whileloops
El propósito de las funciones es que sean
argumentos de otras funciones
Descargar

Programming in Matlab