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!