Delphi 上的数值线性插值

Numeric Linear Interpolation on Delphi

我需要在 Delphi 中做一个简单的数值线性插值,正在考虑实现一个函数,但后来想得更好,我认为应该已经是某个库了。我在 google.

上什么也没找到

我的问题很简单,我有一个包含 X 和 Y 数据的数据集,以及其他新的数据集 X 数据 (Xb),它们将作为寻找新的 Y 数据 (Yin) 插值的基础。

例如,在 R 中,有一个函数 approx 可以轻松完成此操作。该函数还允许Xb长度为任意大小。

Yin <- approx (X, Y, Xb, method = "linear")$y

在 Delphi 中有一些统计库可以做到这一点吗?还是继续写我的函数(基于approx)?

一维数据的线性插值非常简单:

  • 在 X 数组中找到这样的索引,即 X[i] <= Xb < X[i+1]

(随机访问情况下的二进制搜索,逐步Xb变化情况下的线性搜索)

  • 计算

    Yb = Y[i] + (Y[i+1] - Y[i]) * (Xb - X[i]) / (X[i+1] - X[i])