2016-11-10 12 views
0

Matlabの双線形補間をどのようにコード化するのかを理解する上で問題があります。私たちの割り当ては私たちにこの機能を使用させています。Matlabの双線形補間(組み込み関数はありません)

B(X、Y)= Z_(IJ)+ *(X - XJ)+ B×(Y - イル)+ C×(X - XJ)(Y - イル)我々は「

2つの関数を再構築します。一つは係数を計算します(私は既に行いました。そしてそれは教授から 'チェック'アルゴリズムを渡しました)、そして関数を計算する別の関数です。以下は私が持っているコードです。 x、y、z、xi、yiが与えられていますが、a、b、cはすでに計算されています。

私の問題:この関数は実行されますが、ベクターを返すだけの場合は行列を返します。しかし、それは実際の混乱を招く1列、& 2行の正しい値を返します。また、与えられた値は正方行列(z)と1x2 xとyの値ですが、問題の後半部分では、正方行列ではないz = mxn行列が与えられます。そのために働いている。以下は私の現在のコードです。助けていただければ幸いですが、私はあなたに私に答えを与えることを期待していません!

%Given x = [0,1], y=[0,1], z=[0,1;2,4], a = 1, b = 2, c = 1, xi = [0,.5],  yi = [0,.5] 

function zi = bilinear_eval(x, y, z, a, b, c, xi, yi) 
    [m,n] = size(z); 
    for j = 1:length(xi) 
     for i = length(x) 
     zi(i,j) = z(j,j) + a*(xi(i) - x(j)) + b*(yi(i) - y(j)) + c*(xi(i) - x(j))*(yi(i) - y(j)) 
     end 
    end 
    end 
+0

ここに 'python'や' C++'タグがあるのはなぜですか? –

+0

ベクトル出力が必要な場合は、 'i'と' j'の両方で 'zi'のインデックスを作成すべきではありません。 – excaza

+0

@taylorswift私はPythonとC++を知っています。誰かがそれらの形式で答えられるとすれば、私はMatlabにも推論することができます。しかし、私はあなたのためにそれらを削除しました。 – ovp

答えて

0

補間の順番はわかりませんが、ここでは有限要素解析によるラグランジュ多項式や形状関数を知ることが役に立ちます。

私は四つの値の間を補間したかった関数f(x、y)を持っていた場合、私はこのようにそれを記述します

f(x, y) = f1*N1(r, s) + f2*N2(r, s) + f3*N3(r, s) + f4*N4(r, s) 

どこ

-1 <= r <= 1 
-1 <= s <= 1 

N1(r, s) = (1-r)*(1-s)/4.0 
N2(r, s) = (1+r)*(1-s)/4.0 
N3(r, s) = (1+r)*(1+s)/4.0 
N4(r, s) = (1-r)*(1+s)/4.0 

この配置では、4つの点がf1が左下に、f2が下のリグ右上のht、f3、四角形の左上のf4。

補間関数の範囲は0から1までです。

関連する問題