Sei sulla pagina 1di 14

1.

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.

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.

2. MANIPULACIÓN DE FICHEROS SCRIPT

En MATLAB, los ficheros, script se crean y editan con la Ventana del Editor/Depurador. Para
abrir esta ventana hay que Ir al menú File (Fichero), se selecciona New (Nuevo) y después 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 y depurador de ficheros script de MATLAB.
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 comando, 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:

Para visualizar texto y datos (valores de variables) juntos, el comando fprintf debe utilizarse
siguiendo la sintaxis:
Los elementos de formato son:

El flag o bandera, cuyo carácter es opcional, puede ser uno de los siguientes:

La especificación del ancho y precisión del campo (5.2 en el ejemplo anterior) esopcional. El
primer número (5 en nuestro ejemplo) es el ancho del campo, el cual nosindica el menor
número de dígitos en la visualización. Si el número que se visualiza esmenor que el ancho del
campo, se añadirán ceros o espacios delante del número encuestión. La precisión se
corresponde con el segundo número en el ejemplo anterior), yespecifica 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


ejemploanterior).Éste es obligatorio. A continuación se muestran los caracteres de
conversiónmás utilizados:

e Notación exponencial en minúsculas (ej. 1.709098e+001).

E Notación exponencial en mayúsculas (ej. 1.709098E+001).

f Notación de punto fijo (ej. 17.090980).

g Representación en formato corto de las notaciones e o f.

G Representación en formato corto de las notaciones E o f.

i Entero.

Se puede obtener información adicional sobre estos y otros formatos utilizando la ayuda de
MATLAB, el menú Help (Ayuda).
Ejemplo: Pedir al usuario por pantalla tres números y responde con el mensaje: El promedio es
prom de los números ingresados.

Solución:

Método 1

n1=input('Ingrese el primer numero: ');

n2=input('Ingrese el segundo numero: ');

n3=input('Ingrese el tercer numero: ');

fprintf('El promedio es %f, de los numeros ingresado', (n1+n2+n3)/3);

Método 2

Funciones y archivos de funciones

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

nombre = inline ('expresión matemática en forma de cadena')

Sintaxis de un archivo de función

% 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)

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 helpnombre_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.

3. EJECUCIÓN DE FICHEROS

Como ya se ha citado anteriormente, para crear un programa en un fichero (de


extensión “.m”), se escribe en el Editor y se guarda en el directorio correspondiente. Hay dos
tipos de programas en Matlab, los cuales aunque introducimos brevemente ahora, se verán
ampliamente en el punto 3:
• Scripts (o rutinas): son programas que contienen una serie de líneas ejecutables y/o de
comentarios y que al llamarlos desde el CommandWindow se ejecutan de principio a fin.

—> La sintaxis a utilizar:

- Entrada de datos: nombrevar = input(‘Texto que sale en la pantalla’)

Ejemplo:

» » a=input('Dame un valor de a: ')


» Dame un valor de a: 2 %(introducido por el usuario)
»a=2

- Salida de datos: no poner el “;” al final de la línea, o bien usar: disp(‘Texto que
sale en la pantalla’)

Ejemplo:
» » disp(##|violet|‘El valor proporcionado es: '##); a
» El valor proporcionado es:
» a= 2

• Funciones: son programas que, a partir de uno o varios argumentos de entrada (in1, in2,…),
realizan una serie de cálculos (contienen también una serie de líneas ejecutables y/o de
comentarios) y devuelven uno o varios argumentos de salida (out1, out2,…) al llamarlos desde
el CommandWindow.

La sintaxis apropiada para escribir funciones es: function [out1,out2,…] = nombrefichero


(in1,in2,…)
% Aconsejable escribir comentarios adicionales para saber exactamente qué es lo que realiza
exactamente esta función de Matlab.

Ejemplo de construción en la ventana de Editor de un fichero .m (en este caso una función):

Ambos, funciones y scripts, son ficheros que se guardan en formato .m y para ejecutarlos se
hará lo siguiente (fijarse en la imagen superior):
1. En la ventana principal de Matlab, en el cuadro que indica el directorio actual seleccionamos
nuestro directorio.

2. Nos aseguramos que nuestro programa aparece en la lista de ficheros del directorio actual.

3. Escribimos en el CommandWindow el nombre del programa (sin la extensión), y al pulsar


Enter se ejecutará.

A continuación se muestra un video sencillo obtenido de youtube.com, en el cual se explica


como realizar y ejecutar archivos .m:

Para aquellos que tengan un nivel más avanazado del programa Matlab, se adjunta la siguiente
tabla de comandos de un nivel más avanzado:

Importante para principiantes:

- Es aconsejable guardar el fichero “.m” con el mismo nombre de la función.

Antes de empezar a usar las diferentes estructuras y comandos que Matlab nos ofrece para
programar debemos tener una noción tanto de operadores relacionales como operadores
lógicos, los cuales serán muy importantes en los siguientes apartados:

Para finalizar este apartado, aquí se muestra un enlace a un video en forma de tutorial que
ofrece una gran sintesis de este punto ayudandonos con un resumen de lo que trata el video
en la parte inferior:
4. DIRECTORIO DE TRABAJO

Una vez que se utilizan dos o más directorios de trabajo en una sesión, es posible cambiar de
uno a otro en el campo de Directorio Actual de la Ventana de Comandos.

Una

Cuando el usuario ejecuta un script o una función, MATLAB busca el archivo en los directorios
que se encuentran en la ruta de búsqueda.

Estos directorios se encuentran en particular en la Ventana de la Ruta de Búsqueda que se


puede abrir seleccionando en el menú File→SetPath.

Una vez abierta esta ventana, se pueden añadir nuevos directorios o borrar los existentes,
modificando la ruta de búsqueda de archivos en MATLAB
5.- RUTA DE BUSQUEDA
RUTA DE BUSQUEDA

Cuando el usuario ejecuta un fichero script o una función.MATLAB busca el fichero en los
directorios que se enumeran en la ruta de búsqueda .Estos directorios se muestran en
particular en la Ventana de la Ruta de búsqueda que se puede abrir seleccionando la opción
SET PATH( Establecer Ruta) en el menú FILE(Fichero).Una vez abierta esta ventana se pueden
añadir nuevos directorios o borrar los existentes , modificando la ruta de búsqueda de archivo
EN MATLAB.

6.- VARIABLES GLOBALES

Las variables globales son variables que, una vez creadas en Matlab. Son reconocidas en
cualquier parte, incluidos todos los ficheros script. En general, cualquier variable definida en la
ventana a de comandos es reconocida en cualquier fichero script.
Cuando una variable se define en un fichero script esta puede ser usada en la ventana de
comandos. Entre otras palabras cualquier variable creada existe y por lo tanto puede ser
manipulada tanto en ficheros script como en la ventana de comandos.

Existen también tipos especiales de ficheros en Matlab que nos permiten compartir sus
variables.

Todas las variables de un fichero de función son locales cualquier variables incluidos los
argumentos de entrada y salida se pueden utilizar dentro del fichero. Esto significa que las
variables definidas en el fichero solos se reconocerán dentro de él cuando se ejecute una
función. Matlab utiliza un área especial de memoria separada del espacio de trabajo habitual
utilizado para los ficheros script y la ventana de comandos. En un fichero de función se asignan
nuevos valores a las variables de entrada cada vez que se invoca la función estas variables se
utilizan para realizar los cálculos dentro del fichero de función. Cuando la función termina su
ejecución, el valor de argumento de salida es transferido a las variables utilizadas en el
momento en que la función se invocó, esto significa que el fichero de función puede tener
variables con el mismo nombre que las variables definidas en un fichero script o en la ventana
de comandos.

El fichero de función no reconoce variables con el mismo nombre que hayan sido creados
fuera de la función. La asiganción de valores a esas variables en le fichero de función no
cambia su asignación inicial en ningún momento.

Cada fichero de función tien sus propias variables locales, las cuales nos e comparten con otras
funciones o con el espacio de trabajo de la ventana de comandos y los ficheros der script . Sin
embargo también es posible crear variables que se puedan reconocercomunmente en
diferentes ficheros de función y en el espacio de trabajo. Esto se lleva a cabo declarando las
variables como globales, utilizando la siguiente sintaxis

global=nombre_variable
7.1 VARIABLE DEFINIDA Y ASIGNADA EN EL FICHERO SCRIPT

En este caso la asignación del valor a la variable forma parte del fichero. Si el usuario quiere
ejecutar el fichero con un valor diferente para dicha variable. El fichero debe ser editado para
asignar un nuevo valor a la variable. Una vez que el fichero sea guardado en una memoria, se
puede ejecutar de nuevo.

 El siguiente es un ejemplo que calcula la puntuación media de 4 jugadas distintas.

%Calcula la puntuaciòn media de 4 jugadas de dardos distintas%


jugada1= 15;
jugada2= 20;
jugada3= 5;
jugada4= 15;
puntuacion_media=(jugada1+jugada2+jugada3+jugada4)/4

>> jugadas

puntuacion_media =

13.7500

 El siguiente es un ejemplo que calcula la media de goles en 6 partidos


%Calcula la media de goles en 6 partidos%
goles1= 2;
goles2= 2;
goles3= 1;
goles4= 3;
goles5= 0;
goles6= 3;

puntuacion_media=(goles1+goles2+goles3+goles4+goles5+goles6)/6

>> goles

puntuacion_media =

1.8333
7.2 VARIABLE DEFINIDA Y ASIGNADA EN LA VENTANA DE COMANDO

EN ESTE CASO , LA ASIGNACION DE UN VALOR A LA VARIABLE SE REALIZA A LA VENTANA


DE COMANDO (RECUERDE QUE LA VARIABLE es reconocida sin problema dentro del fichero
scripth) si el usuario quiere ejecutar el permite concretar que los caracteres seran introducido
como cadena .El comando tiene la siguiente forma

nombre_variable=input ('mensaje','si')

donde 's' dentro del comando indica que introducira caracteres en la entrada.En este
caso cuando el mensaje aparece,la cadena se puede introducir sin comilla simple pero es
asignada a la variable como una cadena 2

7.3 VARIABLE DEFINIDA Y ASIGNADA EN EL FICHERO SCRIPT, PERO ADEMAS SE INTRODUCE


UN VALOR CONCRETO PARA LA VARIABLE CUANDO SE EJECUTA EL FICHERO EN LA VENTANA
DE COMANDOS

En este caso la variable se define en el fichero script y cuando se ejecuta dicho fichero al
usuario se el pide un valor concreto, a través de la ventana de comandos para asignárselo a la
variable del fichero script. Para hacer estos se utiliza el comando input.

La forma de utilizar este comando es la siguiente:

Nombre_variable= input(‘Mensaje que se muestra en la ventana de comandos’)

Valores de entrada en un fichero script

Cuando se ejecuta el comando input como parte del script, la cadena que va entre paréntesis
se visualiza en la ventan de comandos. La cadena simboliza un mensaje a partir del cual se le
pedirá al usuario un valor para la variable nombre_variable introducido el valor y pulsado la
tecla intro la variable será asignada con el valor que el usario haya tecleado, al igual que
sucede con otras variables, el comando input deberá finalizarse con punto y coma para que el
valor de la variable no se muestre en la ventana de comandos. A continuación se muestra un
fichero script que utiliza el coamndo input para introducir los puntos de las distintas jugadas, a
partir del ya conocido programa que calcula la media de la puntuación del juego.
En este ejemplio se asignan valores escalares a las variables. Tambièn podrían asignar valores a
vectores y matrices, utilizando para ello la notación ya ptresentada, consistente en asignar los
valores entre corchetes.

El comando input también se puede utilizar para asignar una cadena a una variable. Esto se
puede realizar de dos formas. Una es utilizar el comando como ya se ha venido mostrando,
introducuiendo en este casio la cadena entre comillas simples una vezx que el mensaje del
comando input se visualiza en la ventan de comandos. Otra forma es utilizar una opción del
comando input quepermite concretar que los caracteres serán introducidos como cadena:

8. COMANDO DE SALIDA

Existe un comando para introducir información en un programa cuando estamos en modo de


ejecución. Este comando es: v=input(‘Cadena de Caracteres’) input realiza dos tareas:

1) Imprime en pantalla la cadena de caracteres que lleva como argumento.

2) Los datos que el usuario teclea en respuesta al letrero, los introduce en la variable v.

Para que un programa en modo de ejecución pueda escribir letreros, avisos, etc. por pantalla,
se utiliza el comando: disp(‘Cadena de Caracteres’) que escribe la cadena de caracteres que
tiene como argumento en pantalla.

Para escribir el valor de una variable, se utiliza el comando: disp(v) que muestra en pantalla el
valor de la variable v. Para escritura de texto y/o datos en pantalla, se puede utilizar la función:
sprintf(‘formato’, variables).
8.1 EL COMANDO DISP.

MATLAB automáticamente muestra el valor de las variables o los resultados de los cálculos
cuando se ejecutan los comandos, salvo que se suprima terminando el comando en punto y
coma ;.

Se pueden utilizar dos funciones para mostrar de forma personalizada los resultados de un
cálculo, disp y fprintf.

Existe un comando para introducir información en un programa cuando estamos en modo de


ejecución. Este comando es: v=input(‘Cadena de Caracteres’) input realiza dos tareas: 1)
Imprime en pantalla la cadena de caracteres que lleva como argumento. 2) Los datos que el
usuario teclea en respuesta al letrero, los introduce en la variable v. Para que un programa en
modo de ejecución pueda escribir letreros, avisos, etc. por pantalla, se utiliza el comando:
disp(‘Cadena de Caracteres’) que escribe la cadena de caracteres que tiene como argumento
en pantalla. Para escribir el valor de una variable, se utiliza el comando: disp(v) que muestra en
pantalla el valor de la variable v. Para escritura de texto y/o datos en pantalla, se puede utilizar
la función: sprintf(‘formato’, variables). Ejemplos: >> n=input(‘teclea el número de elementos’)
69 >>disp(‘este valor no es adecuado’)

En Matlab, la salida de datos más simple es a través del comando disp.


Ejemplo 1:

>> disp('Hola, mundo')


Hola, mundo

Sin embargo, para un control mayor, usamos la sentencia fprintf.


Ejemplo 2:

>> fprintf(1,'Hola, mundo')


Hola, mundo

El número 1 indica que la salida será en el command window, pues fprintf es usado para la
escritura de archivos, que se verá más adelante.
En los ejemplos anteriores no hay diferencia entre el uso de disp y fprintf, sin embargo, si por
ejemplo queremos mostrar el número pi, podemos usar las características de fprintf

Ejemplo 3: con disp

>> disp(pi)
3.1416

Ejemplo 4: con fprintf (note el símbolo %)


>> fprintf(1,'%f\n',pi)
3.141593

El símbolo % es una marca de formato, la letra «f» nos indica que el número a representar es
flotante (decimal), y los números nos indican la cantidad de espacios que «guarda» para el
número, y las cifras decimales a mostrar, respectivamente.
En la primera línea, no se indicó estos números, por lo que se considera la configuración por
defecto, que es mostrar 6 decimales, y guarda la cantidad de espacios justa para el valor.
Los caracteres \n indican salto de línea. También se encuentra \t , que es un marcador de
tabulación.

8.2 EL COMANDO FPRINT

El comando fprintf se utiliza para visualizar salidas de programas (texto y datos) en Ia pantalla,
o bien para almacenarlas en un archivo, a diferencia de disp, Ia salida puede tener un formato
preestablecido. Gracias a su expresividad, el comando fprintf es útil en Ia visualización de
salidas, pero esta misma razón hace que este comando sea un tanto complejo y con una
sintaxis larga en algunos casos. Pero nos permitirá visualizar mensajes de texto, números y
cadenas en la salida, dar formato a la visualización y almacenar datos en disco.

Para la visualización de texto, el comando fprintf se utiliza de la siguiente forma:


fprintf('Mensaje en forma de cadena') Es posible empezar una nueva línea insertando \n antes
del carácter que va a empezar en la línea siguiente.

Ejemplo: fprintf('El problema no tienen solución. Por favor, compruebe los datos de entrada.')
fprintf('El problema no tienen solución. \n Por favor, compruebe los datos de entrada.‘

Carácteres utilizados para controlar Ia salida. \n salto de línea \r regreso de carro \ t


tabulador

\b retroceder un espacio

Cuando un programa tiene varios comandos fprintf, la salida es continua (no salta
automáticamente de línea). Ejemplo: fprintf('El problema no tiene solución.') fprintf('Por
favor:\r \t Compruebe los datos de entrada.\n') fprintf('\t \bCambie los datos de entrada.\n').

Con el comando fprintf es posible insertar tantos valores numéricos (variables) como se quiera
dentro del texto. Es necesario teclear % (seguido del formato del elemento) en tantos sitios
como se desee dentro de la cadena de texto, poniendo además después de Ia cadena, y
separadas por comas, las variables a las que se hacen referencia. Debe haber una por cada %,
ordenadas de izquierda a derecha por orden de aparición en el texto.

Además de poder visualizar la salida en la Ventana de Comandos, el comando fprintf nos da Ia


posibilidad volcar esta salida a un archivo. La ventaja es que, guardando el resultado, es
posible reutilizarlo en MATLAB o en otras aplicaciones. Para guardar la salida en un archivo se
requieren los siguientes pasos:
a) Abrir el archivo utilizando el comando fopen.

b) Escribir la salida al archivo utilizando el comando fprintf.

c) Cerrar el archivo utilizando el comando fclose.

Potrebbero piacerti anche