griddedInterpolant bug

4 Ansichten (letzte 30 Tage)
Nick Wong
Nick Wong am 25 Mär. 2012
Kommentiert: Wen am 2 Jun. 2014
There is a bug with the griddedInterpolant function with nearest and linear methods. If the query set contains any out-of-range values, the entire evaluated set is NaN, not just the results corresponding to the out-of-range queries.
In contrast, the griddedInterpolant with cubic interpolation method returns NaN for only out-of-range queries and correctly evaluates the in-range queries.
This is an problem for me because I'd like to use the linear method. I'm currently filtering out the out-of-range values from the query before processing, but the best solution would be to get the linear griddedInterpolant to work as it should. How should I fix it?
This bug is demonstrated by the following example script:
[X,Y,Z] = ndgrid(1:10,1:10,1:10);
V = X.^.5 + Y.^.5 + Z.^.5;
nearestInterp = griddedInterpolant(X,Y,Z,V,'nearest');
linearInterp = griddedInterpolant(X,Y,Z,V,'linear');
cubicInterp = griddedInterpolant(X,Y,Z,V,'cubic');
splineInterp = griddedInterpolant(X,Y,Z,V,'spline');
[Xq,Yq,Zq] = ndgrid(0:.5:10,0:.5:10,0:.5:10);
Vq_nearest = nearestInterp(Xq,Yq,Zq);
Vq_linear = linearInterp(Xq,Yq,Zq);
Vq_cubic = cubicInterp(Xq,Yq,Zq);
Vq_spline = splineInterp(Xq,Yq,Zq);
Thanks, Nick
  3 Kommentare
Marc Lalancette
Marc Lalancette am 18 Okt. 2012
I know this is an old thread but I also ran into this problem, using version 2011b. Is it possible to get this fixed without paying hundreds of dollars for a new version?
Matt J
Matt J am 18 Okt. 2012
Bearbeitet: Matt J am 18 Okt. 2012
The best solution, other than upgrading, is probably to create your own wrapper that separates out-of-bounds values from inbound values and only calls griddedInterpolant on the latter. You would do that only when the linear interpolation method is active, of course.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Sean de Wolski
Sean de Wolski am 18 Okt. 2012
This behavior was fixed in R2012a. If you are current on SMS, you can download R2012a or R2012b for free.
  5 Kommentare
Matt J
Matt J am 2 Jun. 2014
Bearbeitet: Matt J am 2 Jun. 2014
That's not a bug, I don't think. With splines, the piecewise polynomial coefficients used to interpolate between the V(i) depend on all V(i) simultaneously. Any NaNs in the given data set can be expected to propagate everywhere.
Wen
Wen am 2 Jun. 2014
Ah ok, makes sense. I see cubic has more NaNs in its interpolated values than linear, and it depends on 4 points (or is it 3?) rather than 2. Okay.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Interpolation finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by