How to select 2nd largest number (or largest if no 2nd largest)
5 次查看(过去 30 天)
显示 更早的评论
I need to find the second largest number in a vector but the number of elements from 4 to 1 so sometimes there is no second largest number (only the largest number) and in this case I can use the largest number.
I started with b=sort(a) c=(b(:,end-1)
but obviously I get an error when there is only 1 element.
Sorry if I am missing the obvious here!
采纳的回答
Matt Tearle
2011-9-30
Is it possible to have repeated values? If so, what do you define as the "second largest" value? Eg secondmax([1 2 3 3]) = 2? or 3?
y = [x(1),unique(x)];
z = y(end-1);
gives the first option. Replacing unique with sort gives the second.
0 个评论
更多回答(2 个)
Wayne King
2011-9-30
Hi Julie, one simple way is
N = 1;
x = randn(N,1);
b = sort(x,'descend');
if (length(b)>1)
b(2)
else
b(1)
end
1 个评论
Jan
2011-9-30
There are some methods:
b = sort(a);
c = b(max(1, end-1));
Or:
b = sort(a, 'descending');
c = b(max(2, length(b)));
Or:
if length(a) == 1
c = a;
else
b = sort(a, 'descending');
c = b(2);
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!