反向插补功能:按y值查找x值

时间:2015-10-16 11:35:48

标签: matlab interpolation

我对MATLAB插值有疑问 图片正在绘制数据。 x轴是t y轴是rpmm

我想在输入y值时找到x值。 但我遇到错误信息

在找到y值的情况下,我可以在输入x值时找到y值 但不是x值

plot of x and y

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);

1 个答案:

答案 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返回?没有正确的答案。类似地,对于rpmmt似乎达到渐近线,因此由于表示精度,其值可能会相同。

但是,由于您对rpmm的{​​{1}}感兴趣,因此 的答案在该时间间隔内已明确定义,因此您可以排除来自插值的模糊区间如下:

interp1(rpmm(t>25&t<35),t(t>25&t<35),1200)