How to find second largest value in an array?

647 次查看(过去 30 天)
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...

采纳的回答

Andrei Bobrov
Andrei Bobrov 2013-6-7
编辑:Andrei Bobrov 2013-6-7
[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 个评论
Jonnathan  Cespedes
Jonnathan Cespedes 2018-2-14
@Andrei Bobrov, how can i do it for each row in a for loop?
Walter Roberson
Walter Roberson 2019-2-10
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

请先登录,再进行评论。

更多回答(5 个)

Fernando
Fernando 2014-11-17
编辑:Walter Roberson 2017-10-14
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 个评论
Srinivasa Rao Konda
Srinivasa Rao Konda 2020-10-10
How to find out the index of second largest element?
Walter Roberson
Walter Roberson 2020-10-10
Define second largest. In the array [1,2,3,3] what is the second largest? Is it 2 or is it 3?

请先登录,再进行评论。


Steven Lord
Steven Lord 2017-11-6
If you're using release R2017b or later, consider using the maxk or mink functions.

Walter Roberson
Walter Roberson 2013-6-7
for K = A
if sum(A > K) == 1
disp(K)
end
end

Dedaunan Rimbun
Dedaunan Rimbun 2017-11-5
编辑:Dedaunan Rimbun 2017-11-5
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 2022-6-29
try this
a=A(:,1);
[p,q]=max(a);
b=A(q,1);
[p1,q1]=max(a(a~=b))

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by