Matlab - matriz o vector obtener el maximo valor y la posicion correspondiente

 
Vista:

matriz o vector obtener el maximo valor y la posicion correspondiente

Publicado por lisper (13 intervenciones) el 09/04/2017 21:59:55
Saludos!

Ayuda por favor, necesito obtener el valor maximo de una operacion la cual se va almacenando en un vector 'S' cada valor obtenido , a su vez necesito obtener el identificador de esos valores ,los identificadores están en otro arreglo aparte llamado 'nombre' que se va llenando con cada iteracion al igual que el arreglo 'S' , lo que intento hacer es lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
S=zeros(72,1);
 
for i=1:72
 
  nombre(i)=str2num(['10' num2str(fix((i-1)/8)+1)] );
    fprintf(['Comparando valores de  nombre(i) y  ff{i}  : ']);
    S(i)=compara(ffnew, ff{i});
 
   % a=nombre(i);
    %b=S(i);
 
    A=(nombre(i) ,S(i) );  % Aqui el primer error, no se que hacer para guardar los resultados e ir llenando el vector o matriz
 
end


Necesito crear una matriz o vector, para poder juntar el nombre y el resultado que corresponde a ese nombre, luego sacar el máximo de ese vector S(i), o en este caso la segunda columna de la matriz, pero obteniendo el nombre que se supone debería estar en la columna 1 de la matriz A.

en resumen, al final debería obtener algo como: [posicion maximo]= max(A(1,:)); donde posición sea exacto el nombre del máximo valor de la columna 2

Por favor necesito ayuda urgente, he estado tratando de solventar esto por varios días y nada que he podido resolver
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

matriz o vector obtener el maximo valor y la posicion correspondiente

Publicado por lisper (13 intervenciones) el 10/04/2017 00:31:54
he logrado avanzar un poquito

en la linea donde tenia el primer error concatenando los vectores, ahora si los concatena debia sacar la matriz del ciclo for, la he colocado fuera asi A=(nombre; S) y funciona, pero ahora al tratar de buscar el maximo y la pocision, obtengo el maximo pero no la posicion correcta de la primera columna, realice lo siguiente

[posicion maximo]= max(A(1,:));

y obtengo los valores
101

1

la matriz de valores A resultado de la concatenación de los dos vectores es la siguienteÑ

A(:,:)

ans =

101.0000 0.2804
101.0000 0.2122
101.0000 0.1886
101.0000 0.2152
101.0000 0.2080
101.0000 0.2748
101.0000 0.2223
101.0000 0.2349
102.0000 0.7103
102.0000 1.0000 % siendo este el máximo, el valor esperado como posición es 102, y esta arrojando 101
102.0000 0.6099
102.0000 0.7972
102.0000 0.4271
102.0000 0.6932
102.0000 0.6513
102.0000 0.6856
103.0000 0.2501
103.0000 0.3356
103.0000 0.2057
103.0000 0.2847

Por favor alguien sabe que podria hacer para solventar esto?
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

matriz o vector obtener el maximo valor y la posicion correspondiente

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 10/04/2017 02:07:58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
clear
A=[101.0000 0.2804
101.0000 0.2122
101.0000 0.1886
101.0000 0.2152
101.0000 0.2080
101.0000 0.2748
101.0000 0.2223
101.0000 0.2349
102.0000 0.7103
102.0000 1.0000 % siendo este el máximo, el valor esperado como posición es 102, y esta arrojando 101
102.0000 0.6099
102.0000 0.7972
102.0000 0.4271
102.0000 0.6932
102.0000 0.6513
102.0000 0.6856
103.0000 0.2501
103.0000 0.3356
103.0000 0.2057
103.0000 0.2847]
[ maximo,posicion]=max(A(:,2));
maximo
Posicion=A(posicion,1)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
>> maximo_de_un_vector
A =
  101.0000    0.2804
  101.0000    0.2122
  101.0000    0.1886
  101.0000    0.2152
  101.0000    0.2080
  101.0000    0.2748
  101.0000    0.2223
  101.0000    0.2349
  102.0000    0.7103
  102.0000    1.0000
  102.0000    0.6099
  102.0000    0.7972
  102.0000    0.4271
  102.0000    0.6932
  102.0000    0.6513
  102.0000    0.6856
  103.0000    0.2501
  103.0000    0.3356
  103.0000    0.2057
  103.0000    0.2847
maximo =
     1
Posicion =
   102

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/
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

matriz o vector obtener el maximo valor y la posicion correspondiente

Publicado por lisper (13 intervenciones) el 10/04/2017 11:33:24
Gracias por la solución Jose Jeremias, me funciono bien, mil gracias.
Aprovecho para preguntarle algo, por supuesto en caso que pueda responderme... se puede hacer esto mismo pero con algo tipo estructura?; es decir, que el vector1 guarde nombres con caracteres y en el vector2 la parte numérica, concatenar o formar la matriz para luego recorrer obteniendo el mismo resultado, pero ya con un nombre en lugar del numero de la posición, es solo curiosidad.

De nuevo gracias por la solución proporcionada.
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