很抱歉标题有点让人困惑,但我不确定如何更清晰地概括这个问题。
我有两组X,Y数据,每组对应一个整体的值。它们从原始数据中进行了相当密集的采样。我正在寻找一种方法,可以为我已经有的两组数值之间的任何给定Y值找到插值的X值。
以下的图表可以更清楚地说明:
在这个例子中,红线是对应于100的集合,黄线是对应于50的集合。
换句话说,假设这些集合对应于一系列的值(尽管它们明显是由离散的X、Y测量值构成的),我想知道如何找到这样一个值:如果Y等于500,对应于一个值为75的集合,那么此时的X值是多少?
在这个例子中,我期望我的目标点大约在这里:
我并不需要这个函数过于复杂——它可以是简单的线性插值数据点。我只是在思考这个问题时有些困难。
需要注意的是,两组数据点中的X和Y坐标并不完全重叠。然而,“找到这两组共享的最近的X点”或“找到这两组共享的最近的Y点”却是相当简单的。
我已经尝试过使用已知值之间的简单插值(例如找到集合“50”和“100”的相应Y值,然后取平均得到“75”),但结果看起来像这样:
很明显我在这里做错了什么。显然,在所有Y高于“最低”集的最大Y的情况下,X都正确地返回为0。事情一开始很顺利,但在接近最低集的最大Y时,它开始失控。
很容易看出我的做法有何问题。以下是另一种解决问题的方法:
在“正确”的版本中,X应该大约是250。相反,我正在将400和0平均,所以X是200。如何在这种情况下求解X?我想双线性插值可能有答案,但我找到的所有信息似乎都结构不同,没有清晰地说明我该如何解决这类问题。
感谢您的帮助。请注意,虽然我显然已经在R中绘制了上述数据,以便更容易看出我在说什么,但最终的工作是在Javascript和PHP中完成的。我不需要重型工具;简单就好。