How to find second largest value in an array?

520 visualizaciones (últimos 30 días)
Minu
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
Walter Roberson el 7 de Jun. de 2013
What do you want to do if there are multiple instances of the maximum or minimum?

Iniciar sesión para comentar.

Respuesta aceptada

Andrei Bobrov
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
Jonnathan Cespedes el 14 de Feb. de 2018
@Andrei Bobrov, how can i do it for each row in a for loop?
Walter Roberson
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

Iniciar sesión para comentar.

Más respuestas (5)

Fernando
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
Srinivasa Rao Konda
Srinivasa Rao Konda el 10 de Oct. de 2020
How to find out the index of second largest element?
Walter Roberson
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?

Iniciar sesión para comentar.


Steven Lord
Steven Lord el 6 de Nov. de 2017
If you're using release R2017b or later, consider using the maxk or mink functions.
  1 comentario
Pen-Li (Ben) Yu
Pen-Li (Ben) Yu el 3 de Nov. de 2021
A=[1;10;15;30;40;50;100];
Amax2 = maxk(A,2); Amax2(2)
ans = 50
Amin2 = mink(A,2); Amin2(2)
ans = 10

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 7 de Jun. de 2013
for K = A
if sum(A > K) == 1
disp(K)
end
end

Dedaunan Rimbun
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:
  1. You can specify the largest, second largest, third largest, and so on.
  2. 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

Anil Kumar
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))

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by