我需要在Delphi中做一个简单的数字线性插值,本来想实现一个函数,但后来想得更好,我认为应该已经有了一些库。我在谷歌上一无所获。
我的问题很简单,我有一个包含X和Y数据的数据集,以及其他新的数据集X数据(Xb),这将是找到插值的新Y数据(Yin)的基础。
例如,在R中,有一个函数approx
可以很容易地实现这一点。此功能还允许Xb长度为任何大小。
Yin <- approx (X, Y, Xb, method = "linear")$y
Delphi中有一些统计库可以做到这一点吗?还是继续编写我的函数(基于approx
)?
1D数据的线性插值非常简单:
- 在X数组中找到这样的索引,即
X[i] <= Xb < X[i+1]
(随机访问情况下的二进制搜索,逐步Xb变化情况下的线性搜索)
-
计算
Yb = Y[i] + (Y[i+1] - Y[i]) * (Xb - X[i]) / (X[i+1] - X[i])