C++中有类似于scipy.interpolate的smoothbivariatespline函数吗?
这里有一段Python代码:
dispX = SmoothBivariateSpline(x, y, z, bbox=[0, 2859, 0, 2399],kx=1,ky=1)
result = dispX.ev(mc,yc)
我想把上面的代码转换成C++。x
、y
、z
是大小相同的一维numpy数组。在下一行,我想在点mc
和yc
上计算样条(同时也进行双线性外推)。
如果你们知道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