我們可以使用 interpn 指令來進行高維格子點內插,其使用語法如下:
vi = interpn(x1, x2,.., v, y1, y2,.., method) 其中 x1、x2、… 是資料點的輸入部份,v 是資料點的輸出部份,y1、y2、… 是內插點,而字串 method 則可指定內插方法,有下列 4 種:
- 'nearest':鄰近點內插
- 'linear':線性內插
- 'spline':Spline 內插法
- 'cubic':三次內插
使用 interpn 時,x1、x2、… 必須是嚴格遞增或遞減。為了保證格式正確,x1、x2、… 最好是由 ndgrid 指令產生,以保持其格式正確性。
二維格子點可由 meshgrid 指令產生,而高維格子點則可由 ndgrid 指令所產生,其使用語法如下:
[X1, X2, X3,…] = ndgrid(x1, x2, x3,…) 其中 XI 的第 i 維元素是由 xi 反覆產生。舉例來說,我們可計算下列方程式
$$ z = x_2 e^{-x_1^2-x_2^2-x_3^2} $$在格子點的值,並以顏色代表值的大小,然後再用更密的資料點來進行內插,得到更細緻的圖,如下:
在上述範例中,上方的圖比較粗糙,下方的圖則比較細密,顯示 interpn 指令的內插效果。另外,在上述範例中,我們使用 interpn 指令來對 3 個輸入的資料點進行內插,此功能是和 interp3 相同的,但事實上, interpn 指令是可以對更高維度的資料點進行內插,所以在功能更為強大。
MATLAB程式設計:進階篇