How to find second largest value in an array?
이전 댓글 표시
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
Walter Roberson
2013년 6월 7일
What do you want to do if there are multiple instances of the maximum or minimum?
채택된 답변
추가 답변 (5개)
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
Shuang Liu
2017년 10월 14일
beautiful
surendra bala
2018년 1월 30일
Thanks
Satya G
2019년 2월 6일
Could you please explain how "max(x(x<max(x)))" works?
x<max(x) is giving array of all ones and one zero. How these will be used ?
Aäron Penders
2019년 2월 26일
편집: Aäron Penders
2019년 2월 26일
@Satya G, in case this isn't cleared up yet, i'll explain. It works exactly as you said. "x<max(x)" gives a logical array of ones where x is less than the maximum, and zero where the maximum is found. The zero therefore corresponds to the maximum. Next you give this logical array as an input argument to the data x itself, which returns all values of x where the logical array is equal to one. The value of the maximum where the logical index is zero, is left out. Afterwards the final max() finds the maximum of the above, which corresponds to the second maximum. Look up logical indexing in matlab for more details.
Quite a clever solution, props.
Srinivasa Rao Konda
2020년 10월 10일
How to find out the index of second largest element?
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
2017년 11월 6일
13 개 추천
댓글 수: 1
A=[1;10;15;30;40;50;100];
Amax2 = maxk(A,2); Amax2(2)
Amin2 = mink(A,2); Amin2(2)
Dedaunan Rimbun
2017년 11월 5일
편집: Dedaunan Rimbun
2017년 11월 5일
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
Anil Kumar
2022년 6월 29일
try this
a=A(:,1);
[p,q]=max(a);
b=A(q,1);
[p1,q1]=max(a(a~=b))
카테고리
도움말 센터 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!