MATLAB Answers

0

How to calculate maximum up to current point?

Asked by Steven Niggebrugge on 18 Aug 2017
Latest activity Commented on by John D'Errico
on 18 Aug 2017
Hi, how can i calculate the an array of current maxima, i.e. for each point in the array to calculate the maximum from the first observation of the array to the current? e.g. for array [3 8 10 6] i want the output to be [3 8 10 6] ?
Is there a function to do this (movmax i think it works for a fixed lookback or lookforward) or do i just need to loop through all observations?

  2 Comments

You probably meant [3,8,10,10] as your result.

Sign in to comment.

2 Answers

Answer by John D'Errico
on 18 Aug 2017

cummax([3 8 10 6])
ans =
3 8 10 10

  2 Comments

+1
Whenever I think of a tortured way, there's a built-in function. It is hard to keep up.
I keep learning new things on Answers. New little goodies that appeared when I was not watching. I guess we all should read the release notes religiously. That would take all the fun out of it though. :)

Sign in to comment.


Answer by José-Luis
on 18 Aug 2017

a = [3,8,10,6,5,11,12,-20];
n = numel(a);
result = tril(bsxfun(@minus,a,a'));
[~,idx] = max(result,[],2);
result = a(idx)

  0 Comments

Sign in to comment.