Leer matrices 2x2 de un fichero
De Ejercicios
Enunciado
Un archivo de texto almacena matrices de dos por dos con el siguiente formato:
NúmeroDeMatrices Fila1Col1Mat1 Fila1Col2Mat1 Fila2Col1Mat1 Fila2Col2Mat1 Fila1Col1Mat2 Fila1Col2Mat2 Fila2Col1Mat2 Fila2Col2Mat2 ...
Por ejemplo, dado el archivo:
3 1 2 3 4 1 1 2 2 7 8 6 4
El archivo almacena las matrices:
1 2 1 1 7 8 3 4 2 2 6 4
Realiza una función que tome como parámetro un nombre de archivo con el formato especificado y una posición y devuelva la matriz 2x2 que ocupa la posición indicada en el archivo. Si el archivo tiene menos matrices que la posición indicada debe devolver una matriz vacía. Por ejemplo, si para el archivo de ejemplo se indica la posición 2 entonces se debe devolver la matriz:
1 1 2 2
Soluciones
Programa en Matlab
function matriz = LeerMatriz2x2(nombre, posicion) % Funcion matriz = LeerMatriz2x2(nombre, posicion) % Descripción: Extrae de un fichero de texto una matriz 2x2 % Parámetros de entrada: % nombre: CADENA DE CARACTERES; nombre del fichero de texto que % contiene las matrices 2x2 según el formato especificado % en el enunciado % posicion: ENTERO; posición en el fichero de la matriz a extraer % Parámetros de salida: % matriz: ARRAY (2,2) DE REALES; la matriz que ocupaba la posición % indicada en el fichero de matrices de nombre nombre. Si no % se pudo abrir el fichero o no existe una matriz en dicha % posición se devuelve una matriz vacía matriz = []; idf = fopen (nombre, 'r'); if idf ~= -1 nmatrices = fscanf(idf, '%d', 1); if posicion <= nmatrices for x = 1:posicion matriz = fscanf(idf,'%f', [2,2]); end matriz = matriz'; end end