interp1 using method 'previous' returns an unexpected NaN?

5 vues (au cours des 30 derniers jours)
Marc Cousoulis
Marc Cousoulis le 12 Jan 2017
Modifié(e) : Stephen23 le 12 Jan 2017
x = [1 2 4]; v = [17 100 17]; xq = 1:5; vq = interp1(x,v,xq,'previous');
vq = 17 100 100 17 NaN
Why is vq(5) not equal to 17?

Réponse acceptée

Stephen23
Stephen23 le 12 Jan 2017
Modifié(e) : Stephen23 le 12 Jan 2017
This is clearly explained in the interp1 documentation, in the section "Extrapolation strategy":
  • If you specify the 'pchip' or 'spline' interpolation methods, then the default behavior is 'extrap'.
  • All other interpolation methods return NaN by default for query points outside the domain.
Your query point is outside of the input domain (from 1 to 4), so NaN is the correct and documented output.
As the documentation states, if you want to extrapolate, then you need to specify this:
vq = interp1(x,v,xq,'previous','extrap')

Plus de réponses (0)

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by