径向基插值部分
有关径向基插值的基本概念参考: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
薄板样条插值矩阵构建参考: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