programación en matlab

19
Pablo Barrera Guilmer González Programación en Matlab Programación en Matlab Lectura 2

Upload: rashad-henderson

Post on 30-Dec-2015

57 views

Category:

Documents


0 download

DESCRIPTION

Programación en Matlab. Lectura 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. Sobre el entorno de programación. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programación en Matlab

Pablo BarreraGuilmer González

Programación en MatlabProgramación en MatlabLectura 2

Page 2: Programación en Matlab

2Programación en MatlabProgramación en Matlab

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

Page 3: Programación en Matlab

3Programación en MatlabProgramación en Matlab

Sobre el entorno de programaciónCómo indicar el directorio de trabajo

>> dir>> cd mis_archivos>> pwdLos directorios de matlab definen dónde se

encuentran los archivos en que Matlab buscará los m-files

>> path>> addpath>> pathtool>> which linspaceC:\MATLABR11\toolbox\matlab\elmat\linspace.m

Page 4: Programación en Matlab

4Programación en MatlabProgramación en Matlab

Sobre el entorno de trabajoLos 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

Page 5: Programación en Matlab

5Programación en MatlabProgramación en Matlab

Sobre el lenguaje de programaciónLos archivos de ejecución script-files son

archivos de texto que contienen líneas que pudieron ser tecleadas desde el entorno de Matlab:

% Factorial n!=1*2*...*n

y = prod(1:n),

Para ejecutarlo teclee

>> fact

Para observar el archivo, su conjunto de intrucciones teclee

>> type fact

fact.m

Page 6: Programación en Matlab

6Programación en MatlabProgramación en Matlab

Sobre la programación en Matlab

Las funciones en los m-files cuentan con variables locales y siempre inician con la instrucción function

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)

fact.m

Page 7: Programación en Matlab

7Programación en MatlabProgramació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

Page 8: Programación en Matlab

8Programación en MatlabProgramació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

Page 9: Programación en Matlab

9Programación en MatlabProgramació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

Page 10: Programación en Matlab

10Programación en MatlabProgramación en Matlab

Control de flujo - selección

Chequeo de datos, un ejemplo más elaborados

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’)endy = prod(1:n);

fact.m

Page 11: Programación en Matlab

11Programación en MatlabProgramació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

Page 12: Programación en Matlab

12Programación en MatlabProgramación en Matlab

Control de flujo - repetición

Ejemplo: desplegar una tabla de factoriales

for k=1:12,

disp([num2str(k),´ ´,...

num2str(prod(1:k))]);

end

Page 13: Programación en Matlab

13Programación en MatlabProgramación en Matlab

Control de flujo - repetición

Cambiando fact.m

function y=fact(n)% y=fact(n) % calcula el Factorial n!=1*2*...*ny=1;

for k=2:n,

y = y*n;

end

Page 14: Programación en Matlab

14Programación en MatlabProgramación en Matlab

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.

logodtheta = 10;for k = 1:360/dtheta, M(k) = getframe(gcf); camorbit(dtheta,0);end

logomovie.m

Page 15: Programación en Matlab

15Programación en MatlabProgramación en Matlab

Animación del logo>> movie(gcf,M)

Page 16: Programación en Matlab

16Programación en MatlabProgramació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.

Page 17: Programación en Matlab

17Programación en MatlabProgramació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

Page 18: Programación en Matlab

18Programación en MatlabProgramación en Matlab

Ejercicio

Implemente el método de newton

Para resolver

0)( xexxf

)(

)(1

n

nnn xf

xfxx

Page 19: Programación en Matlab

19Programación en MatlabProgramación en Matlab

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 while-loops

El propósito de las funciones es que sean argumentos de otras funciones