2011-10-16 5 views
6

だから、長さ2xNの長さ2xNのと別の2次元から2次元への補間にはどのような数学的手法が有効ですか? Z [1]、Zを返す

44,32 
44,19 
... 

12,32 
24,12 
... 

様マトリックスを有し、いくつかの関数f(x、y)があります[ 2]。我々が与えられた2つの行列は、x、y、z [1]、z [2]の既知の値ペアを表します。そのような場合に役立つ補間式は何ですか?

+0

はあなたが機能を持つために多項式補間のようなものを探しています2変数? – amit

+0

はい。しかし、その関数は2つの変数を返す必要があります... – Rella

+0

あなたは複素数でそれをしようとする可能性があります。 – starblue

答えて

4

戻り値の問題を解決した場合は、補間によってf_1(x,y)f_2(x,y)の2つの関数を見つけ、関数をf(x, y) = [f_1(x,y), f_2(x,y)]としてください。問題に適した補間関数を解くための方法を選択するだけです。

2次元の実際の補間問題については、これを処理する方法がたくさんあります。あなたが必要とするものがシンプルなら、線形補間を使うことができます。区分的な関数で問題ない場合は、ベジェ曲線またはスプラインを使用できます。あるいは、データが一様であれば、単純な多項式補間を取り除くことができます(2Dのときはそれほど簡単ではありませんが、簡単です)。


EDIT:詳細といくつかのリンク。

Bilinear interpolation (wikipedia)を使用して区分的な解決が可能です。

多項式補間の場合、データがグリッド上にある場合は、次のアルゴリズムを使用できます(メモリの参照が見つかりません)。

データポイントは次のように多項式を書き換え、klにより、グリッド上にある場合:

f(x,y) = cx_1(x)*y^(k-1) + cx_2(x)*y^(k-2) + ... + cx_k(x) 

をここで、各係数cx_i(x)も度lの多項式です。第1のステップは、グリッドの各行または列を補間することによってlの多項式kを見つけることである。これが完了すると、各cx_i(x)多項式の補間点として、cx_i(x0),cx_i(x1)、...、cx_i(xl)(合計1 * k点を与えます)のような係数セット(つまり、l多項式)があります。これらの多項式は、上の定数を補間点として使用して、結果としてf(x,y)を得ることができます。

ベジェ曲線またはスプラインでも同じ方法が使用されます。唯一の違いは、多項式係数の代わりに制御点を使用することです。最初にデータ点を生成する一連のスプラインを取得し、これらの中間曲線の制御点を補間してサーフェスカーブの制御点を取得します。


上記のアルゴリズムを明確にするための例を追加します。

0,0 => 1 
0,1 => 2 
1,0 => 3 
1,1 => 4 

我々はフィッティング2つの多項式で開始:(1、0)と(1、1のデータ・ポイントの1(0,0)と(0,1)、および他のは、以下のデータポイントを持ってみましょう):今

f_0(x) = x + 1 
f_1(x) = x + 3 

、我々は我々が縦にこれらの多項式の係数を読んcoefficients.Whenを決定するために、他の方向に補間し、我々は2つの多項式を必要としています。 1つは0と1の両方で1に評価されます。そして1時0で1と評価されている別の、そして3:我々はf(x,y)にこれらを組み合わせた場合

cy_1(y) = 1 
cy_2(y) = 2*y + 1 

は、我々が得る:

f(x,y) = cy_1(y)*x + cy_2(y) 
     = 1*x + (2*y + 1)*1 
     = x + 2*y + 1 
+0

2次元情報のためにあなたが言及した方法がどのように働くかを説明することができますか? – amit

関連する問題