How to find a series of 'next max' and their indices in an array of numbers?

1 view (last 30 days)
Hi,
Suppose I have an array of numbers.
I want to find all the numbers, and their indices, which are largest then all previous ones.
For example, for the array:
X = [ 1 2 5 3 4 7 2 3 10 3]
I will get:
Largest: [1 2 5 7 10]
Indices: [1 2 3 6 9]
Sure I can solve it with a 'for' loop.
What will be the fastest way to do it in Matlab?

Accepted Answer

Fabio Freschi
Fabio Freschi on 4 Sep 2019
Edited: Fabio Freschi on 4 Sep 2019
use cummax to find the cumulative maximum, then play with the solution using unique
>> Y = cummax(X)
Y =
1 2 5 5 5 7 7 7 10 10
>> [largest,index] = unique(Y)
largest =
1 2 5 7 10
index =
1
2
3
6
9

More Answers (0)

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Tags

Products


Release

R2016b

Community Treasure Hunt

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

Start Hunting!