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

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 commentaire

Steven Lord
Steven Lord le 20 Avr 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.

Connectez-vous pour commenter.

 Réponse acceptée

Walter Roberson
Walter Roberson le 20 Avr 2016

0 votes

Two output version of histc(), use the resulting bin numbers to index the edge list, and that will correspond to "previous".

3 commentaires

Oliver Hawker
Oliver Hawker le 20 Avr 2016
I'm not sure I understand, could you give me a super-quick example in terms of X, Y and XX?
Thanks for your help
Assuming that X is in strictly ascending order,
[counts, binnumbers] = histc(XX, X);
y_at_x_no_later = Y(binnumbers);
Oliver Hawker
Oliver Hawker le 20 Avr 2016
That's great, I never would have thought of doing it that way, thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by