How to do 'previous' interp1 behavior in 2014a?

6 views (last 30 days)
Hello,
I used interp1 in 2015b recently, and made use of the 'previous' interpolation function which will just return the YY value of the previous XX point. In 2014a however, when run using 'previous', if you actually look at the code it runs using 'pchip' instead as it only matches on the first letter! It seems that 'previous' is missing from earlier MATLAB versions.
interp1(X,Y,XX,'previous') is fast enough for my application, although I now need to use it in 2014a where it seems to be unavailable. Can anybody suggest a fast alternative algorithm? Any solution I have come up with seems horrendously slow compared to interp1.
Thanks!
  1 Comment
Steven Lord
Steven Lord on 20 Apr 2016
FYI the 'previous' and 'next' options for interp1 were introduced in release R2014b, as indicated in the third item in the Mathematics section of the Release Notes for that release.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 20 Apr 2016
Two output version of histc(), use the resulting bin numbers to index the edge list, and that will correspond to "previous".
  3 Comments
Walter Roberson
Walter Roberson on 20 Apr 2016
Assuming that X is in strictly ascending order,
[counts, binnumbers] = histc(XX, X);
y_at_x_no_later = Y(binnumbers);
Oliver Hawker
Oliver Hawker on 20 Apr 2016
That's great, I never would have thought of doing it that way, thanks!

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!