Matlab - Obtención del valor máximo de una matriz y su posición

   
Vista:

Obtención del valor máximo de una matriz y su posición

Publicado por Jonathan (3 intervenciones) el 25/07/2017 19:53:23
Buenos días compañeros.

Vengo a ustedes para ver si me podrían ayudar a programar un problema que tengo. Mi duda consiste en elaborar un programa que lea un conjunto de archivos de texto como se muestra en la imagen. Dentro de estos archivos de texto se encuentran una matriz de m x n datos, la primer fila no me interesa, solo los datos de las dos columnas con longitud n. A partir de la lectura de estas matrices encontrar su valor máximo de la segunda columna y su posición dentro de la matriz, asimismo una vez encontrada dicha esa posición sacar el valor inverso ( 1/ dato) del dato que se encuentra a la izquierda del valor máximo (como se muestra en la tercera imagen).

Esto lo estaba realizando mediante una tabla dinámica en Excel, pero llega un punto dada la cantidad de datos (más de diez mil) que este se traba. Le agradezco de ante mano su ayuda y su atención amigos.

Saludos.

archivos-txt
matriz
ejemplo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lindsey

Obtención del valor máximo de una matriz y su posición

Publicado por Lindsey lindsey.acourtt@gmail.com (108 intervenciones) el 26/07/2017 02:12:02
Hola, bueno todo esto lo haría del siguiente modo:

1. Obtener los nombres de los archivos. Esto se puede hacer con el comando dir, del siguiente modo:
1
archivos=dir('dirección de la carpeta donde están los archivos');
Acá te explican como funciona. En "archivos" queda una estructura de cinco campos de la cual solo interesa "name". Cuando lo hago los dos primeros valores en la lista de "name" no son nombres de archivo si no unos puntos, así que deberías revisar e ignorar estos valores si también te salen.

2. Leer el contenido de los archivos. Acá estoy un poco en duda porque no sé si ".ef1" es la extensión de tu archivo o simplemente hace parte del nombre, pero ah como se ve que los abres con bloc de notas no sé si puedas usar dlmread. En tu caso lo aplicarías así:
1
2
3
for i=1:N % N es número de archivos
     matrices{i}=dlmread(archivos(i).name,' ',1,0);
end

3. Encontrar el máximo y la posición de la segunda columna (y enseguida hallar el inverso). Pues sería con el siguiente código:
1
2
3
4
for i=1:N % N otra vez el número de archivos
    [max2(i),pos(i)]=max(matrices{i}(:,2));
    inverso(i)=1/matrices{i}(pos(i),1);
end
Donde max2 es una fila con los máximos de la segunda columna de todos los archivos, pos es una fila con las posiciones de esos máximos, e inverso es otra fila con los inversos de la primera columna donde se encuentra el máximo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Obtención del valor máximo de una matriz y su posición

Publicado por Jonathan (3 intervenciones) el 26/07/2017 16:54:27
Muchas gracias colega, te agradezco mucho tu ayuda y el tiempo que tomaste para atender mi duda :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad