• No se han encontrado resultados

FUNCIONES Y FICHEROS M-FICHEROS

In document Matlab Para Ingenieros y Cientificos (página 71-75)

Matlab es habitualmente utilizado en modo comando (o interactivo), en cuyo caso se submite un comando que se escribe en una única línea sobre la ventana de comandos, y se procesa de inmediato.

Pero Matlab también permite la ejecución de conjuntos de comandos en modo batch, en cuyo caso se submiten secuencialmente un conjunto de comandos escritos previamente en un fichero. Este fichero (M-fichero) ha de ser almacenado en disco con la extensión “.m” en el camino de subdirectorios de Matlab, utilizando cualquier editor ASCII o la subopción M-file de la opción New del menú File de la barra superior de menús, la cual nos lleva a un editor de texto que permitirá escribir las líneas de comandos y guardar el fichero con un determinado nombre. La opción Open M-File del menú File de la barra superior de menús permite editar cualquier M-fichero preexistente.

Para ejecutar un M-fichero, basta teclear su nombre (sin extensión) en modo interactivo sobre la ventana de comandos y pulsar Enter. Matlab interpreta secuencialmente todos los comandos o sentencias incluídos en las diferentes líneas del M-fichero y los ejecuta. Normalmente no aparecen en pantalla los literales de los comandos que Matlab va interpretando, salvo que se active el comando “echo on”, y solo se van viendo los resultados de las ejecuciones sucesivas de los comandos interpretados.

largos de comandos de escritura tediosa y con propensión a cometer errores, pero la mayor utilidad se presenta en la automatización de procesos. Además, en las líneas de un M-fichero se pueden introducir textos explicativos y comentarios, empezando cada línea al efecto por el símbolo %. Con el comando Help se accede al texto explicativo de un M-fichero.

Matlab ofrece ciertos comandos de procedimiento que se utilizan muy a menudo en la escritura de M-ficheros. Entre ellos tenemos los siguientes:

echo on Permite ver en pantalla los literales de los comandos de las líneas de un M-fichero

echo off No presenta en pantalla los literales de los comandos de las líneas de un M-fichero (opción por defecto)

pause Causa la interrupción de la ejecución de un M-fichero hasta que el usuario pulse una tecla para continuar

keyboard Causa la interrupción de la ejecución de un M-fichero y pasa el control al teclado, para que el usuario realice otras tareas. Se vuelve a la ejecución del M-fichero tecleando sobre la ventana de comandos el comando “return” y pulsando Enter.

return Nos devuelve a la ejecución de un M-fichero después de una interrupción

break Causa la interrupción de un bucle prematuramente clc Limpia la ventana de comandos

home Oculta el cursor

more on Habilita la paginación de la salida de Matlab en la ventana de comandos

more off Desactiva la paginación de la salida de Matlab en la ventana de comandos

more(N) Sitúa el tamaño de página en N líneas

menu Permite elegir entre varios tipos de menú para el input del usuario

Cuando se define una función mediante un M-fichero, pueden utilizarse los comandos anteriores, si se considera necesario.

Una de la aplicaciones más útiles de los M-ficheros se presenta en la definición de funciones a medida, a través del comando function, cuya sintasis es la siguiente:

function parámetros_salida = nombre_función(parámetros_entrada) cuerpo de la función

Una vez que la función ha sido definida se salva en un M-fichero para su uso posterior. Es útil también introducir algún texto explicativo en la sintaxis de la función (entre %), al cual se accederá con el comando de ayuda Help.

Cuando los parámetros de salida son más de uno se sitúan entre corchetes y separados por comas. Si los parámetros de entrada son más de uno se separan por comas. El cuerpo de la función es la sintaxis que la define, y debe incluir comandos o instrucciones que asignen valores a los parámetros de salida. Cada comando o instrucción del cuerpo suele ir en una línea que finaliza con una coma, o con un punto y coma en caso de que se definan variables (para evitar repeticiones en las salidas al ejecutar la función). La función se guarda en el M-fichero de nombre nombre_función.m

A continuación vamos a definir la función fun1(x)=x^3-2x+cosx, creando el correspondiente M-fichero de nombre fun1.m

function p=fun1(x)

%Definición de una función simple p=x^3-2*x+cos(x);

Ahora hallamos el valor de la función en p, ejecutando el M-fichero. » fun1(pi)

ans =

23.7231

También podemos pedir ayuda sobre la función fun1 usando el comando help, ya que hemos introducido un comentario en el M-fichero.

» help fun1

En el siguiente ejemplo se ilustra la definición de una función con más de un parámetro de entrada y más de un parámetro de salida.

function [x1,x2]=rootquad(a,b,c)

% Esta función resuelve la ecuación de segundo grado ax^2+bx+c=0 % cuyos coeficientes son a, b y c (parámetros de entrada)

% y cuyas soluciones son x1 y x2 (parámetros de salida) d=b^2-4*a*c;

x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a);

Guardamos el M-fichero con el nombre rootquad.m y resolveremos la ecuación x^2-6x+2=0 de la siguiente forma: » [p,q]=rootquad(1,-6,2) p = 5.6458 q = 0.3542

Podemos también pedir ayuda sobre la función rootquad. » help rootquad

Esta función resuelve la ecuación de segundo grado ax^2+bx+c=0 cuyos coeficientes son a, b y c (parámetros de entrada)

y cuyas soluciones son x1 y x2 (parámetros de salida)

También se puede evaluar una función definida en un M-fichero mediante el comando feval, cuya sintaxis es la siguiente:

f ev al( ‘F’,arg1,arg1,..,argn) Evalúa la función F (M-fichero F.m) en los argumentos especificados arg1, arg2, ...,argn Veamos como ejemplos la evaluación de algunas funciones ya definidas previamente, pero ahora utilizando el comando feval.

r1 = 5.6458 r2 = 0.3542 » feval('fun1',pi) ans = 23.7231

In document Matlab Para Ingenieros y Cientificos (página 71-75)

Documento similar