190 likes | 305 Views
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.
E N D
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 • 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
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: • Si es una variable del espacio de trabajo • La considera una variable predefinida • La considera un m-file de Matlab • 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
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
Sobre la programación en Matlab • Las funciones en los m-files cuentan con variables locales y siempre inician con la instrucció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)
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
Control de flujo - selección • La instrucción if-elseif-else if (<condición>) <instrucciones>; elseif (<condición>) <instrucciones>; else (<condición>) <instrucciones>; end
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
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);
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
Control de flujo - repetición • Ejemplo: desplegar una tabla de factoriales for k=1:12, disp([num2str(k),´ ´,... num2str(prod(1:k))]); end
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
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
Animación del logo • >> movie(gcf,M)
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.
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
Ejercicio • Implemente el método de newton • Para resolver
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