How to fix error about interp1?
2 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I have some data and i want to run this code:
xi = [85];
yi = interp1(y,x,xi)
but I have this error:
Error using griddedInterpolant
The grid vectors are not strictly monotonic increasing.
Error in interp1 (line 183)
F = griddedInterpolant(X,V,method);
Error in Q4 (line 19)
yi = interp1(y,x,xi)
How can I fix it?
0 件のコメント
採用された回答
Star Strider
2017 年 3 月 12 日
編集済み: Star Strider
2017 年 3 月 12 日
One way (without seeing your data, so this is a guess on my part):
y85 = find(y <= 85, 1, 'last');
yi = interp1(y(y85-1:y85+1),x(y85-1:y85+1),xi, 'linear','extrap');
That is how I would do it. This assumes there is only 1 where ‘y’ is approximately 85.
Note — This is obviously UNTESTED CODE. It should work, if there is one ‘y’ near 85.
EDIT — Added the 'extrap' option to make my approach more robust.
4 件のコメント
その他の回答 (1 件)
John D'Errico
2017 年 3 月 12 日
The fix is easy. Don't use interp1 to interpolate data that is not strictly monotone in the independent variable.
After all, how can interp1 know which value to predict on a function that is apparently multi-valued? For example, consider points around the perimeter of acircle. For any given x, there are TWO solutions. Interp1 requires a single valued function for any given x.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Interpolation についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!