El ícono para Run (ejecutar) Ficheros script Hasta ahora los comandos MATLAB que hemos visto se ejecutaban en la Ventana de Comandos. Aunque todos los comandos MATLAB se pueden ejecutar de esta forma, la utilización de la Ventana de Comandos se restringe normalmente a la ejecución de un número pequeño de comandos con salidas bien controladas. En caso contrario, cuando el número de sentencias en demasiado elevada, es necesario plantearse la escritura y ejecución de código de otra forma. El problema proviene, básicamente, de que la Ventana de Comandos no es suficientemente interactiva, los comandos no pueden ser guardados y ejecutados de nuevo a petición del usuario. Eso implica que cada vez que se pulsa la tecla Intro sólo se ejecute el último comando, y todo lo anterior permanece inalterable. Si se necesita realizar alguna corrección o cambio sobre algunos de esos comandos previamente ejecutados, será necesario volver a escribirlos y ejecutarlos de nuevo de uno en uno. Otra forma diferente de ejecutar comandos en MATLAB es crear un fichero con los comandos para ejecutarlo posteriormente. Cuando se ejecuta el fichero en cuestión, los comandos que contiene son ejecutados en el orden en que aparecen en el fichero. Además, si fueran necesarias correcciones o cambios posteriores, sólo habría que editar el fichero y ejecutarlo de nuevo. Los ficheros que se utilizan para este propósito en MATLAB se denominan ficheros de procesamiento de comandos o ficheros script. 4.1 Notas sobre los ficheros script • Un fichero script es una secuencia de comandos MATLAB, también denominada programa. • Cuando se ejecuta un fichero script, MATLAB ejecuta los comandos en el orden en que éstos han sido escritos, igual que si se ejecutaran uno auno en la Ventana de Comandos. • Cuando un fichero script contiene un comando que produce una salida o resultado (p. ej. una asignación de variable sin un punto y coma al final), la salida se visualiza en la Ventana de Comandos. • La utilización de ficheros script es conveniente, ya que éstos pueden ser editados (es decir, se pueden corregir o modificar), y se pueden ejecutar tantas veces como se quiera. • Los ficheros script se pueden crear y editar en cualquier editor de texto. Asimismo el texto se puede copiar y pegar desde estos editores a MATLAB para ser ejecutado. • Los ficheros script también se denominan ficheros M, ya que la extensión .m es la que utiliza y reconoce MATLAB cuando se guardan estos ficheros. Manipulación de ficheros script I En MATLAB, los ficheros,script se.crean y editan con la Ventana del Editor/Depurador. Para abrir esta ventana hay que Ir al menu File (Fichero), se seleccIona New (Nuevo) y despues M-file (FIchero M). Después de esto se abrirá una ventana, como la que se muestra en la Figura 1.1, correspondiente el editor ydepurador de ficheros script de MATLAB. Los comandos, dentro del fichero script, se teclean línea por línea. Estas líneas se enumeran automáticamente. La forma de crear una nueva línea es pulsando la tecla Enter Figura 1.1: La Ventana del Editor/Depurador. directo Una vez que se ha abierto la Ventana el Editor/Depurador de scnpts, los comandos se van introduciendo línea por línea. MATLAB enumera automáticamente las líneas cada vez que se pulsa la tecla Enter. Los comandos también se pueden escribir en cualquier editor o procesador de textos y después trasladarse (copiar/pegar) al editor. Comando de salida Los comandos de uso muy frecuente son: disp y fprintf • El comando disp se utiliza para visualizar un texto o el contenido de una variable sin mostrar su nombre. El formato de este comando es: disp(nombre de variable) o disp(‘Mensaje’) • El comando fprintf se utiliza para visualizar salidas de programas (texto y datos) en la pantalla, o bien almacenarlas en un fichero. Con este coamndo, y a diferencia de disp, la salida puede tener un formato preestablecido. En este caso se pueden combinar texto y resultados numéricos provenientes de cálculos o variables predefinidas en la misma línea. Además, el formato de los números se puede controlar directamente. Uso del comando fprintf para visualizar mensajes de texto: fprintf('Mensaje en forma de cadena') Nota Para cambiar de linea en un mensaje de texto se debe insertar el código \n. Este código se le denomina código de escape. Utilización del comando fprintf para visualizar datos y texto juntos: g Representación en formato corto de las notaciones e o f. Para visualizar texto y datos (valores de variables) juntos, el comando fprintf debe utilizarse siguiendo la sintaxis: G i Representación en formato corto de las notaciones E o f. Entero. fprintf('Texto %-5.2f texto adicional', nombre_variable) Se puede obtener información adicional sobre estos y otros formatos utilizando la ayuda de MATLAB, el menú Help (Ayuda). El símbolo % marca del lugar donde se insertará el número dentro del texto Elementos de formato (definen el formato . del número). Nombre de la variable cuyo valor será vsualizado Ejemplo: Pedir al usuario por pantalla tres números y responde con el mensaje: El promedio es prom de los número ingresados Solución: Método 1 Los elementos de formato son: n1=input('Ingrese el primer numero: '); n2=input('Ingrese el segundo numero: '); n3=input('Ingrese el tercer numero: '); -5.2f Flag o bandera (opcional). . Ancho del campo y precisión (opcional) Carácter de conversión (obligatorio) fprintf('El promedio es %f, de los numeros ingresado', (n1+n2+n3)/3); Método 2 El flag o bandera, cuyo carácter es opcional, puede ser uno de los siguientes: Funciones y archivos de funciones Carácter utilizado para la bandera -(signo menos) + (signo más) O( cero ) Descripción Justificación izquierda del número dentro del campo Visualiza el carácter de signo ( + o -) delante del número Añade ceros si el número es más pequeño que el campo. En principio existen dos tipos de funciones: las funciones inline, que se insertan en la línea de comandos y las que se escriben en un documento de texto externo. Esta última forma, que es la evolución natural de los ficheros script, es más flexible y es en la que nos centraremos a continuación. Sintaxis de funciones en línea La especificación del ancho y precisión del campo (5.2 en el ejemplo anterior) es opcional. El primer número (5 en nuestro ejemplo) es el ancho del campo, el cual nos indica el menor número de dígitos en la visualización. Si el número que se visualiza es menor que el ancho del campo, se añadirán ceros o espacios delante del número en cuestión. La precisión se corresponde con el segundo número en el ejemplo anterior), y especifica el número de dígitos que se mostrarán a la derecha del punto decimal. El último elemento es el correspondiente al formato de conversión (f en el ejemplo anterior). Éste es obligatorio. A continuación se muestran los caracteres de conversión más utilizados: nombre = inline ('expresión matemática en forma de cadena') Sintaxis de un archivo de funcion % La primera línea de este archivo debe contener la sintaxis de cómo usarla en la forma : function [salida1,salida2] = filename(entrada1,entrada2,entrada3) e E f Notación exponencial en minúsculas (ej. 1.709098e+001). Notación exponencial en mayúsculas (ej. 1.709098E+001). Notación de punto fijo (ej. 17.090980). Una función puede tener tantas entradas y salidas como se necesiten. Las siguientes líneas contienen el texto que aparecerá cuando se invoque el comando help nombre_de_la_función . Estas líneas son opcionales, pero deben entrarse usando porciento % al principio de cada línea, del mismo modo que ingresaría los comentarios al final de las líneas que lo requieran en cualquier otro archivo-m no necesariamente de una function. Finalmente y abajo del texto de ayuda, se incluirá el texto real de la función con todos los comandos o instrucciones necesarias. http://www.ib.cnea.gov.ar/~control2/Links/Tutorial_Matlab_esp/function.html http://gata.uv.es/~arandiga/doc/matlab/primer/primerlt2/node14.html Ejercicio Escriba una función, de nombre StasTi, en MATLAB con dos argumentos de entrada y dos de salida. La función debe calcular la altura en pulgadas y la masa en libras de una persona, apartir de su altura en centímetros y de su peso en kilogramos. Determine el peso la altura en pulgadas y la masa en libras de una persona que mide 170cm y pesa 70kg. Ejercicio Usando un archivo de función en MATLAB para la siguiente función: y(x)=0.9x4-12x2-5x La entrada de la función será x, y la salida será y. Escriba la función de forma que x pueda ser un vector, y utilícela para: a)Calcular y(-3) e y(8) b)Representar gráficamente la función y(x), para -4≤ x ≤ 4 Método 1 Con archivo de función x=[-4:0.1:4] plot(x,f(x)) Método 2 usando funciones en linea >> x=[-4:0.1:4] >> g=inline('0.9*x.^4-12*x.^2-5*x') g= Inline function: g(x) = 0.9*x.^4-12*x.^2-5*x >> plot(x,g(x)) Contenido del archivo: f.m function y=f(x) y=0.9*x.^4-12*x-5*x