我对MATLAB插值有疑问 图片正在绘制数据。 x轴是t y轴是rpmm
我想在输入y值时找到x值。 但我遇到错误信息
在找到y值的情况下,我可以在输入x值时找到y值 但不是x值
interp1(t,rpmm,30)
ans =
719.9229
interp1(rpmm,t,1200)
Error using griddedInterpolant
The grid vectors are not strictly monotonic increasing.
Error in interp1 (line 183)
F = griddedInterpolant(X,V,method);
答案 0 :(得分:1)
如果rpmm
中有两个或多个相同的值,则会发生此错误。在这种情况下,interp1
无法知道从rpmm
中的值映射到t
的值的正确值。解决此问题的一种方法是在rpmm
值中添加一个小抖动,如下所示:
interp1(rpmm+1e-10*randn(size(rpmm)),t,1200)
然而,这可能不是理想的行为,如果你确实在rpmm
中有两个相同的值,你应该试着理解你在这种模棱两可的情况下插入实际意味着什么。
<强>更新强>
您使用情节更新的问题确认了这一点:在20 < t < 25
区间内,您的rpmm
具有相同的值(~2500)。那么,当rpmm
为2500时,t
interp1
应该t > 35
返回?没有正确的答案。类似地,对于rpmm
,t
似乎达到渐近线,因此由于表示精度,其值可能会相同。
但是,由于您对rpmm
的{{1}}感兴趣,因此 的答案在该时间间隔内已明确定义,因此您可以排除来自插值的模糊区间如下:
interp1(rpmm(t>25&t<35),t(t>25&t<35),1200)