How to select 2nd largest number (or largest if no 2nd largest)

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!

1 Commento

many thanks, it worked beautifully, esp using 'unique' for those pesky duplcates values!

Accedi per commentare.

 Risposta accettata

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.

Più risposte (2)

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 Commento

Obviously, you can change N above to something greater than 1, e.g. N = 4

Accedi per commentare.

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

Categorie

Scopri di più su Software Development in Centro assistenza e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by