How to find second largest value in an array?
    102 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Minu
 el 7 de Jun. de 2013
  
    
    
    
    
    Respondida: Anil Kumar
      
 el 29 de Jun. de 2022
            Hi
I want to find the second largest and minimum value in array? A=[1;10;15;30;40;50;100].I want to get the result as Second minimum value=10 and second largest value=50 Help me plz...
1 comentario
  Walter Roberson
      
      
 el 7 de Jun. de 2013
				What do you want to do if there are multiple instances of the maximum or minimum?
Respuesta aceptada
  Andrei Bobrov
      
      
 el 7 de Jun. de 2013
        
      Editada: Andrei Bobrov
      
      
 el 7 de Jun. de 2013
  
      [ii,ii] = sort(A);
out = A(ii([2,end-1]));
for your example (A) just:
out = A([2,end-1]);
more variant
A1 = unique(A);
out = A1([2,end-1]);
8 comentarios
  Jonnathan  Cespedes
 el 14 de Feb. de 2018
				@Andrei Bobrov, how can i do it for each row in a for loop?
  Walter Roberson
      
      
 el 10 de Feb. de 2019
				Amjad Iqbal comments,
Hello Researchers!! I need guidance, as i have a matrix H1 of 1576*1024, which is vertical concatination of four channels, in H1 for continuous four rows it represent one frame of each channel, i need to find maximum and second value for every four group of rows. untill now i just get to find maximum and minimum value for each row. kindly guide me, how can i apply 2nd loop or design function, so that i can get results of second maximum for each four group of rows, and in total i will have 394 max and 394 second maximum results.
H1 = vertcat(A,B,C,D)
temp_A = zeros(1576,2);
for N = 1:1:1576
   temp_A(N,1) = max(H1(N,:));
   temp_A(N,2) = min(H1(N,:));
end
Más respuestas (5)
  Fernando
      
 el 17 de Nov. de 2014
        
      Editada: Walter Roberson
      
      
 el 14 de Oct. de 2017
  
      function [ y ] = second_min( x )
   y = min(x(x>min(x)));
end
&
function [ y ] = second_max( x )
   y = max(x(x<max(x)));
end
6 comentarios
  Walter Roberson
      
      
 el 10 de Oct. de 2020
				Define second largest. In the array [1,2,3,3] what is the second largest? Is it 2 or is it 3?
  Steven Lord
    
      
 el 6 de Nov. de 2017
        1 comentario
  Pen-Li (Ben) Yu
      
 el 3 de Nov. de 2021
				A=[1;10;15;30;40;50;100];
Amax2 = maxk(A,2); Amax2(2)
Amin2 = mink(A,2); Amin2(2)
  Dedaunan Rimbun
 el 5 de Nov. de 2017
        
      Editada: Dedaunan Rimbun
 el 5 de Nov. de 2017
  
      I think this one is the best. It has some pros:
- You can specify the largest, second largest, third largest, and so on.
- You can also see the index
Note: I just modify what Walter Roberson suggest.
   for k=1:s                                  %s is the number highest number will be shown
        k2=0;
        for K = A'
            k2=k2+1;
            if sum(A > K) == k-1              
                M(k,1)=K;
                I(k,1)=k2;
            end
        end
    end
0 comentarios
  Anil Kumar
      
 el 29 de Jun. de 2022
        try this
a=A(:,1);
[p,q]=max(a);
b=A(q,1);
[p1,q1]=max(a(a~=b))
0 comentarios
Ver también
Categorías
				Más información sobre Surface and Mesh Plots en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
















