因此,我們有像什麼數學方法適用於插值2d到2d函數?
12,32
24,12
...
與長度2×N個和另一個
44,32
44,19
...
與長度2×N個的矩陣,並且存在返回z [1],Z [一些函數f(x,y)的2]。我們給出的2個矩陣表示x,y和z [1],z [2]的已知值對。什麼是插值公式,這將有助於在這種情況下?
因此,我們有像什麼數學方法適用於插值2d到2d函數?
12,32
24,12
...
與長度2×N個和另一個
44,32
44,19
...
與長度2×N個的矩陣,並且存在返回z [1],Z [一些函數f(x,y)的2]。我們給出的2個矩陣表示x,y和z [1],z [2]的已知值對。什麼是插值公式,這將有助於在這種情況下?
如果你解決了一個返回值的問題,你可以通過插值找到兩個函數f_1(x,y)
和f_2(x,y)
,並將你的函數編寫爲f(x, y) = [f_1(x,y), f_2(x,y)]
。只需選擇任何方法來解決適合您問題的插值函數。
對於二維實際插值問題,有很多方法可以處理這個問題。如果您需要簡單,您可以使用線性插值。如果您可以使用分段函數,則可以使用貝塞爾曲線或樣條曲線。或者,如果數據是統一的,你可以用一個簡單的多項式插值(當然,在2D中不是很平凡,但很簡單)就可以避開。
編輯:更多信息和一些鏈接。
分段解決方案可以使用Bilinear interpolation (wikipedia)。對於多項式插值,如果您的數據位於網格上,則可以使用以下算法(我無法找到它的引用,它來自內存)。
如果數據點上k
通過l
格,重寫你的多項式如下:
f(x,y) = cx_1(x)*y^(k-1) + cx_2(x)*y^(k-2) + ... + cx_k(x)
在這裏,每個係數cx_i(x)
也是l
的多項式。第一步是通過內插網格的每一行或一列來找到程度爲l
的k
多項式。當做到這一點,你必須l
係數集(或者,換句話說,l
多項式)作爲插值點,每個cx_i(x)
多項式爲cx_i(x0)
,cx_i(x1)
,...,cx_i(xl)
(給你一個總的L * k個點)。現在,您可以使用上述常數確定這些多項式作爲插值點,它們會給出結果f(x,y)
。
對貝塞爾曲線或樣條曲線使用相同的方法。唯一的區別是您使用控制點而不是多項式係數。你首先得到一組將產生你的數據點的樣條曲線,然後你插入這些中間曲線的控制點來獲得曲面曲線的控制點。
讓我來添加一個例子來闡明上面的算法。我們有以下數據點:
0,0 => 1
0,1 => 2
1,0 => 3
1,1 => 4
我們開始通過擬合兩個多項式:一個用於數據點(0,0)和(0,1),而另一個爲(1,0)和(1,1 ):
f_0(x) = x + 1
f_1(x) = x + 3
現在,我們插在另一個方向來確定我們垂直閱讀這些多項式係數coefficients.When,我們需要兩個多項式。在0和1都評估爲1;而另一種計算結果爲1 0和3在1:
cy_1(y) = 1
cy_2(y) = 2*y + 1
如果我們結合到這些f(x,y)
,我們得到:
f(x,y) = cy_1(y)*x + cy_2(y)
= 1*x + (2*y + 1)*1
= x + 2*y + 1
你能解釋一下[或者給出參考解釋]你提到的方法對於二維信息的工作方式嗎? – amit
你尋找類似的多項式插值與函數2個變量? – amit
是的。但該函數將不得不返回2個變量... – Rella
您可以嘗試用複數來做到這一點。 – starblue