pablo barrera guilmer gonzález programación en matlab lectura 2
TRANSCRIPT
![Page 1: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/1.jpg)
Pablo BarreraGuilmer González
Programación en MatlabProgramación en MatlabLectura 2
![Page 2: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/2.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/3.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/4.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/5.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/6.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/7.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/8.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/9.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/10.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/11.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/12.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/13.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/14.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/15.jpg)
15Programación en MatlabProgramación en Matlab
Animación del logo>> movie(gcf,M)
![Page 16: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/16.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/17.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/18.jpg)
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: Pablo Barrera Guilmer González Programación en Matlab Lectura 2](https://reader033.vdocuments.co/reader033/viewer/2022061300/54d4b91b497959c9288b4730/html5/thumbnails/19.jpg)
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