1

MATLAB で一種のルックアップ テーブルを実装しようとしています。

3 つの変数がスイープされたスクリプトから生成されたデータがありますvar_a, var_b, var_c。これらはネストされたスイープ ( var_a-> var_b-> var_c) で、10 個の出力がありますout_01, out02, ..., out10

ここで、各出力を次のように配置しましたout_01 = f(var_a,var_b,var_c)。つまり、ネストされたループに似たデータを単純に再配置します。

私の質問は、そのようなデータのルックアップ テーブルを作成するにはどうすればよいですか? get out_01@ certain のような入力をしますvar_a(X), var_b(Y), var_c(Z)

私は以下を試しました。

    idx1_var_a   = max(find(data.var_a <= options.var_a));
    idx2_var_a   = min(find(data.var_a >= options.var_a));

    idx1_var_b = max(find(data.var_b <= options.var_b));
    idx2_var_b = min(find(data.var_b >= options.var_b));

    idx1_var_c = max(find(data.var_c <= options.var_c));
    idx2_var_c = min(find(data.var_c >= options.var_c));

    Y1 = interpn(data.var_c,data.var_b,data.var_a,data.out_01,data.var_c(idx1_var_c),data.var_b(idx1_var_b),data.var_a(idx1_var_a))

    Y2 = interpn(data.var_c,data.var_b,data.var_a,data.out_01,data.var_c(idx2_var_c),data.var_b(idx2_var_b),data.var_a(idx2_var_a))        

    if Y1 == Y2
        Y = Y1
    else        
        Here I am unable to figure how to interpolate between these two output values,Y1, and Y2!!
    end

どんな助けでも大歓迎です。

4

1 に答える 1

1

私はあなたがこれを探していると思います:

あなたが持っていると仮定します:

var_a = 1:3;
var_b = 0:0.3:0.9;
var_c = 1:2;

[A, B, C] = ndgrid(var_a, var_b, var_c)

F = A.^3+B.^2+C;

これで、既存のすべてのポイントで関数に直接アクセスできます。

F(1,2,2) 

または代わりに

F(var_a==1,var_b==0.3,var_c==2)

グリッドポイント間の値に興味がある場合は、次を使用できますinterp3

Vq = interp3(F,1.5,2.5,1.5)

これは、ベクトル内の目的の位置を入力として受け取ることに注意してください。

于 2013-11-08T08:48:44.547 に答える