Está en la página 1de 19

Programacin en Matlab

Lectura 2

Pablo P bl Barrera B Guilmer Gonzlez

Programacin en Matlab

En sta ocasin veremos:


Sobre el entorno de programacin de Matlab El path de bsqueda de archivos Los m-file como scripts y como funciones j (Estructuras ( de control) ) Control de flujo Funcin de funciones

Programacin en Matlab

Sobre el entorno de programacin


Cmo indicar el directorio de trabajo >> dir >> cd mis_archivos >> pwd d Los directorios de matlab definen dnde se encuentran los archivos en que Matlab buscar l m-files los fil >> path >> addpath >> pathtool >> which linspace p
C:\MATLABR11\toolbox\matlab\elmat\linspace.m

Programacin en Matlab

Sobre el entorno de trabajo


Los m-files son localizados en el directorio actual d trabajo de t b j o bien bi en los l directorios di t i del d l path th de d matlab. Una funcin o variable al ser llamada desde el entorno t solicita li it a Matlab M tl b su bsqueda b d en la l 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 path de 5. La trata de localizar como m-file en el p Matlab

Programacin en Matlab

Sobre el lenguaje de programacin


Los archivos de ejecucin j script-files p son archivos de texto que contienen lneas que pudieron ser tecleadas desde el entorno de Matlab: fact.m
% Factorial n!=1*2*...*n y = prod(1:n), Para ejecutarlo teclee >> fact , su conjunto j de Para observar el archivo, intrucciones teclee >> type fact

Programacin en Matlab

Sobre la programacin en Matlab


Las funciones en los m-files cuentan con variables locales y siempre inician con la instruccin function f fact.m

function y=fact(n)

% function y=fact(n) y fact(n) %Y=FACT(N) Calcula el factorial de n % n!=1 n!=1*2* 2 ...*n n y = prod(1:n);

Para ejecutarlo teclee


>> sol=fact(5)

Programacin en Matlab

Sobre la programacin en Matlab


OJO: Es importante documentar los archivos de Matlab
>> sol=fact(6); >> sol=feval(fact,3)

feval evalua una funcin pre-definida


>> h help l feval f l

Programacin en Matlab

Control de flujo - seleccin


La instruccin if-elseif-else if (<condicin>) <instrucciones>; elseif (<condicin>) <instrucciones>; else l (<condicin>) ( di i ) <instrucciones>; end

Programacin en Matlab

Control de flujo - seleccin


Operadores relacionales: ==, ~=, >, <, Operadores lgicos: & (and), | (or), ~ (not) Pruebas lgicas: isempty, any, all if isempty(who) disp(No hay elementos); else whos end

Programacin en Matlab

10

Control de flujo - seleccin


Chequeo de datos, un ejemplo ms elaborados fact.m

function y=fact(n) % y=fact(n) calcula el factorial de n. % if nargin i < 1 error(No hay entrada alguna) elseif n < 0 error(el nmero debe ser no negativo) elseif abs(n-round(n)) > eps error(el error( el numero debe ser un entero) entero ) end y = prod(1:n);

Programacin en Matlab

11

Control de flujo repeticin


for-loops for k=<vector de valores> <asignaciones>; <instrucciones diversas>; end Los comandos son ejecutados repetidamente y en cada una de ellas la variable i bl k toma t un valor l del d l loop-vector l t

Programacin en Matlab

12

Control de flujo - repeticin


Ejemplo: desplegar una tabla de factoriales for k=1:12, disp([num2str(k), ,... num2str(prod(1:k))]); end

Programacin en Matlab

13

Control de flujo - repeticin


Cambiando fact.m
function y=fact(n) y fact(n) % y=fact(n) % calcula el Factorial n!=1*2*...*n y=1; for k=2:n, y = y*n; end

Programacin en Matlab

14

Repeticin: animacin 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

Programacin en Matlab

15

Animacin del logo


>> movie(gcf,M) movie(gcf M)

Programacin en Matlab

16

Control de flujo Condicional de ejecucin


while-loops while (<condicin>) <intrucciones>; end

El cuerpo del loop es ejecutado mientras que la l intruccin i t i condicional di i l sea cierta. i t

Programacin en Matlab

17

Control de flujo Condicional de ejecucin


Cul es el factorial ms grande que Matlab puede calcular? Compare las implementaciones: k=1; Whil prod(1:k)~=Inf, While d(1 k) I f k=k+1; k k 1 end d k for k=1:100000; if prod(1:k) prod(1:k)==Inf, Inf, k, return, end

Programacin en Matlab

18

Ejercicio
Implemente el mtodo de newton

f ( xn ) xn 1 xn f ( xn )
Para resolver

f ( x) x e 0
x

Programacin en Matlab

19

Resumen
El usuario puede crear m-files y usarlos al aadirlos al path de Matlab o estar sobre el directorio de trabajo Las funciones trabajan con variables , mientras que q los scripts p operan p locales, sobre las variables del espacio de trabajo Se cuentan con estructuras de control tpicos: is if-else-end, for-loops y whileloops El propsito it de d las l funciones f i es que sean

También podría gustarte