griddedInterpolant bug
显示 更早的评论
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 个评论
Honglei Chen
2012-3-26
Hi Nick, which version of MATLAB are you using, I tried this in R2012a and couldn't reproduce it.
Marc Lalancette
2012-10-18
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?
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.
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Interpolation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!