C++中有类似于scipy.interpolate的smoothbivariatespline函数吗?

0 投票
1 回答
42 浏览
提问于 2025-04-14 15:18

这里有一段Python代码:

dispX = SmoothBivariateSpline(x, y, z, bbox=[0, 2859, 0, 2399],kx=1,ky=1)
result = dispX.ev(mc,yc)    

我想把上面的代码转换成C++。xyz是大小相同的一维numpy数组。在下一行,我想在点mcyc上计算样条(同时也进行双线性外推)。
如果你们知道C++中有类似的函数,请帮帮我。

谢谢!

我试过boost和gsl……在boost里没有外推功能,gsl是针对结构化数据的,而我有的是非结构化数据,opencv和ipp也没有与样条相关的函数。

1 个回答

1

我认为标准库里没有直接对应的函数。不过,有一个叫Eigen的库可以用来计算样条插值。

你可以试试看它是否能达到相同的效果。这是一个示例代码。

#include <Eigen/Dense>
using namespace Eigen;

int main() {
    // Example data
    VectorXd x(5), y(5), z(5);
    double new_x = 2.5;
    double new_y = 1.5;

    BicubicSpline<double> spline(x, y, z); // Construct the spline
    // Evaluate the spline at the new point
    double interpolated_value = spline(new_x, new_y);

    return 0;
}

你可以在这里找到这个库的链接 https://eigen.tuxfamily.org/index.php?title=Main_Page

撰写回答