MATLAB 的 interp3 可進行 3 維格子點的內插,其一般格式為
vi = interp3(x, y, z, v, xi, yi, zi, method) 其中 x、y、z、v 是三維矩陣,前三者代表資料點的輸入部份,v 則是資料點的輸出部份,xi、yi 及 zi 則是內插點,字串 method 則指定不同的內插方法,共有 4 種:
- 'nearest':鄰近點內插
- 'linear':線性內插
- 'cubic':三次內插
- 'spline':Spline 內插法
使用 interp3 時,矩陣 x、y、z 必須是嚴格遞增或遞減。一般情況下, x、y 及 z 都是由 ndgrid 指令 所產生,以保證其格式的正確性。
使用 interp3 的例子如下。首先,我們使用 flow 指令產生三度空間中的資料點(這些資料是火箭噴射口的速度大小),並以切面圖(Slice)的方式畫出:
由上可知 x、y、z 的維度是 10×20×10。在上例中,slice 指令可對三度空間做“切片”,之後經由顏色的不同,就可以區別函數值的高低,「顏色」與「函數值」的對照表,可以參見圖形右方的 colorbar。
很明顯的,由上述範例的圖形,可以感覺資料的解析度太低,因此圖形很粗糙。為了使圖形更為細緻,接著我們使用 meshgrid 指令產生三度空間的格子點,並用 interp3 來進行內插,範例如下:
由上可知 xi、yi、zi 的維度是 25×40×25,比原先的分佈要稠密許多,因此畫出來的圖形也比較細緻、美觀。
MATLAB程式設計:進階篇