## how can i make a function which will return the largest and the second largest component?

on 18 Nov 2012

### Jan Simon (view profile)

how can i make a function that accepts as input a vector of integers, which will return the largest and the second largest component of the vector for the first i think that is max1=max(max(C)) any idea for max2?

## Products

No products are associated with this question.

### Jan Simon (view profile)

on 18 Nov 2012
Edited by Jan Simon

### Jan Simon (view profile)

on 19 Nov 2012

Do you mean the maximum over a matrix (see tags and example max(max(C))) or over vector (body of the question)?

1. Find maximum value with the corresponding index
2. Set value of this index to NaN
3. Find maximum again.

Alternative, which is slower due to the expensive sorting for large inputs:

• SORT helps.

Which values should be replied, if the highest maximum is not unique?

[EDITED: Sorry, I've overseen that this is a homework!]

felix

### felix (view profile)

on 18 Nov 2012

over vector. i have a vector with random number and i have to find the max and the second max number of the vector without using unique or short...

Jan Simon

### Jan Simon (view profile)

on 19 Nov 2012

I think: "short" means "sort".

Sorry, felix, that I've solved your homework. Now it gets hard to submit it without cheating. Remember, that your teacher/assistent knwos this forum also, so it is strongly recommended to mention all sources.

on 18 Nov 2012
Edited by Jurgen

### Jurgen (view profile)

on 18 Nov 2012

Or:

``` if sum(C==max(C))==1
second = max(C(C<max(C)));
else
second = max(C);
end```

i.e. test if the maximum is unique, if the max is not unique the second is equal to max(C)

#### Join the 15-year community celebration.

Play games and win prizes!

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi