径向基-薄板样条插值数学公式、原理,以及代码实现基本过程

径向基插值部分

有关径向基插值的基本概念参考:https://blog.csdn.net/qq_18343569/article/details/48227839?isappinstalled=0&from=groupmessage

径向基函数RBF (Radial Basis Function)有以下五种基函数

其中r代表代待求点X与已知点Xi之间的向量距离

上边的公式是适用于以上五种基函数的计算公式,其中X代表向量,不是一个数字

对于薄板样条插值,其公式(是经过上边的公式变形所得到的公式)为:

这个公式是用于二维的插值,对于三维的插值,应该加上+dz,以及等式:AjZj(对j=1到j=n取和)=0,之后分解该公式,构造出矩阵,对矩阵取逆;

对矩阵取逆,用该矩阵左乘value(或Z坐标值)构成的一个向量,得到一个向量,该向量代表了A1-An,以及a、b、c、d(A代表一个数字,不是矩阵),将A带入公式即可计算出待求点的属性值

具体插值公式参考:https://blog.csdn.net/qq_18343569/article/details/48227839?isappinstalled=0&from=groupmessage

扫描二维码关注公众号,回复: 4419367 查看本文章

薄板样条插值矩阵构建参考:https://blog.csdn.net/caoniyadeniniang/article/details/78107057?isappinstalled=0&from=singlemessage

矩阵操作

对于矩阵(非稀疏矩阵)操作部分,采用的库为Eigen数学库

头文件:#include <Eigen/Dense>

矩阵定义:

方法1:Eigen::Matrix<double, 5, 5, Eigen::RowMajor> matrix

方法2:

Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> matrix

matrix.resize(rowNum, colNum)   //分配内存、空间

矩阵赋值:

matrix(i, j) = 3.6

矩阵取逆:

matrix = matrix.inverse()

矩阵转置:

matrix = matrix.transpose()

对于矩阵间的运算,或者矩阵与向量间的运算直接用*即可

关于Eigen的细节部分可参考我自己总结的一篇博客:https://blog.csdn.net/qq_16334327/article/details/83577860

猜你喜欢

转载自blog.csdn.net/qq_16334327/article/details/84068451