2012-09-16 29 views
0

給定由均勻和離散(x,y,z)值的f(x,y,z)定義的三維數據集,Matlab如何計算函數f(x,y,z)在某個位置這不是來自原始數據集(例如,x + 0.1,y + 0.1,z + 0.1)。該3D數據集可以是具有特定離散x,y,z值的像素有效性值的3D圖像。Matlab中用於interp3的算法是什麼?

+0

選擇功能的名稱,然後執行Ctrl-D。這會給你它的源代碼。請記住,源代碼受版權保護,因此如果您計劃實施類似的內容,請小心。 – 0xFE

回答

1

這取決於提供的「方法」參數,默認情況下(沒有提供方法),它使用linear插值,您還可以選擇「最接近」,它只是找到最近的點並指定相同的值,或者您可以使用「樣條」和「立方體」。

對於單調數據(均勻分佈網格),您可以使用'* linear',這可能使用trilinear插值。

編輯: 回答這裏的評論問題是一個三線性插值的例子 說f(x,y,z)定義爲x,y,z屬於{0,1}並且我想要爲0 <值= I,J,K < = 1

f(i,j,k) = ((f(0,0,0)*(1-i)+f(1,0,0)*i)*(1-j)+ 
      (f(0,1,0)*(1-i)+f(1,1,0)*i)* j )  * (1-k)+ 

      ((f(0,0,1)*(1-i)+f(1,0,1)*i)*(1-j)+ 
      (f(0,1,1)*(1-i)+f(1,1,1)*i)* j )  *  k 

通知有這裏7個線性內插。

+0

3D數據集中的線性插值意味着什麼?如果您有一個立方體,並且每個頂點都被定義爲原始數據集的(x,y,z)座標,那麼我將如何在立方體的中心找到值say。 – user1084113

+0

有一個很好的三線插值解釋[這裏](http://en.wikipedia.org/wiki/Trilinear_interpolation) – pseudoDust

+0

但通常情況下,給定一個立方體,你首先做4對頂點的一維liniar插值,現在你得到4在包含目標點的單個2D平面上創建新的數據點,現在,您可以對這些新點進行插值,以便在包含目標點的線上獲得2個更多的數據點,並且從這裏開始只有一個1D插值。 – pseudoDust