clase 3 matlab

3
INFO 061 Laboratorio 4 9 de Mayo de 2007 Control de Errores Podemos controlar los errores en el flujo de un programa usando la estructura try-catch. A = rand(3,4) try f = input('Hola, ingresa la fila '); c = input('Hola, ingresa la columna '); n = A(f,c); disp(['A(' num2str(f) ',' num2str(c) ') = ' num2str(n)]); catch disp('Error') end Las sentencias dentro de la sección try son ejecutadas normalmente, pero cuando aparece un error, la ejecución pasa automáticamente a la sección catch. Número de parámetros Dentro del cuerpo de una función existen (automáticamente creadas) dos valores, nargin y nargout que representan el número de parámetros de entrada y salida respectivamente. El siguiente ejemplo muestra una función que calcula el promedio, el mínimo, el máximo de un vector dependiendo de: - Si al llamar la función se entregan como entrada dos vectores, los valores del segundo representarán las ponderaciones de los valores del primero. - Si se llama la función con 1 argumento, sólo se calcula el promedio. function [P,minimo,maximo] = promedio(A,B) try L = size(A); switch nargin case 1 suma = 0; for i=1:L(1) for j=1:L(2) suma = suma + A(i,j); end end P = suma / (L(1)*L(2)); case 2, P = 0; for i=1:L(1) for j=1:L(2) P = P + A(i,j)*B(i,j);

Upload: denis-parra-santander

Post on 06-Jun-2015

15.604 views

Category:

Documents


0 download

DESCRIPTION

Clase 3, INFO 032

TRANSCRIPT

Page 1: Clase 3 MatLab

INFO 061Laboratorio 4

9 de Mayo de 2007

Control de Errores

Podemos controlar los errores en el flujo de un programa usando la estructura try-catch.

A = rand(3,4)try f = input('Hola, ingresa la fila '); c = input('Hola, ingresa la columna '); n = A(f,c); disp(['A(' num2str(f) ',' num2str(c) ') = ' num2str(n)]);catch disp('Error')end

Las sentencias dentro de la sección try son ejecutadas normalmente, pero cuando aparece un error, la ejecución pasa automáticamente a la sección catch.

Número de parámetros

Dentro del cuerpo de una función existen (automáticamente creadas) dos valores, nargin y nargout que representan el número de parámetros de entrada y salida respectivamente. El siguiente ejemplo muestra una función que calcula el promedio, el mínimo, el máximo de un vector dependiendo de:

- Si al llamar la función se entregan como entrada dos vectores, los valores del segundo representarán las ponderaciones de los valores del primero.

- Si se llama la función con 1 argumento, sólo se calcula el promedio.

function [P,minimo,maximo] = promedio(A,B)try L = size(A); switch nargin case 1 suma = 0; for i=1:L(1) for j=1:L(2) suma = suma + A(i,j); end end P = suma / (L(1)*L(2)); case 2, P = 0; for i=1:L(1) for j=1:L(2) P = P + A(i,j)*B(i,j); end end end catch disp('Error. Las dimensiones de las matrices de entrada deben coincidir');end

switch nargoutcase 2, minimo = min(A);case 3, minimo = min(A); maximo = max(A);end

Page 2: Clase 3 MatLab

Lectura y escritura de archivosLectura de archivos El siguiente ejemplo muestra un sencillo programa que lee líneas de un archivo de texto, interpreta el contenido como números separados por espacio, los almacena en un vector y luego muestra en consola el vector:

% este programa muestra las funcionalidades basicas de % lectura de archivos de textonombrearchivo = input('Ingrese el nombre del archivo: ','s');[arch,error] = fopen(nombrearchivo,'r');% arch queda en -1 si ha habido un error al abrir el archivoif (arch > -1)% se lee toda la informacion y se almacena en un vector% los datos son interpretados como numeros enteros (%d) vector = fscanf(arch,'%lf'); res = fclose(arch); disp('Los numeros leidos: '); disp(vector);else disp('El archivo no pudo ser abierto');end

Notar como el programa pide el nombre del archivo a leer, el cual debe estar en la misma carpeta que el archivo .m del programa (a menos que al ejecutar el programa el usuario especifique la ruta precisa del archivo). Para que la función input obtenga un texto (sin transformar a número) se incluye el modificador ‘s’ (string).

Para realizar la lectura de datos desde un archivo de texto se utiliza la función fscanf, sin embargo antes de leer los datos, el archivo debe ser “abierto” y para esto se utiliza la función fopen.

La función fopen recibe dos entradas: el nombre del archivo y el modo de apertura. Los modos de apretura:

'r' read 'w' write (create if necessary) 'a' append (create if necessary) 'r+' read and write (do not create) 'w+' truncate or create for read and write 'a+' read and append (create if necessary)

La sintaxis de la función fscanf es bastante flexible. En este caso se leen todos los elementos separados por espacio del archivo arch como números de doble precisión (esto por el modificador ‘%lf’. Otros modificadores: ‘s’ para cadenas, ‘%d’ para enteros).

Luego de realizar la lectura del contenido del archivo, éste debe ser cerrado usando fclose.

Un ejemplo de archivo, numeros.txt:

1 2 5 -30.74 -12 47 -100.67 654.3 12

Escritura de archivosEl ejemplo es similar al de lectura de archivos:

% este programa muestra las funcionalidades basicas de % escritura de archivos de texto[arch,error] = fopen('datos.txt','w');if (arch > -1) for i=1:1000 numero = fprintf(arch,'%d ',i); end res = fclose(arch);else disp('El archivo no pudo ser creado');end