1. 程式人生 > >徑向基-薄板樣條插值數學公式、原理,以及程式碼實現基本過程

徑向基-薄板樣條插值數學公式、原理,以及程式碼實現基本過程

徑向基插值部分

徑向基函式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帶入公式即可計算出待求點的屬性值

矩陣操作

對於矩陣(非稀疏矩陣)操作部分,採用的庫為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()

對於矩陣間的運算,或者矩陣與向量間的運算直接用*即可