2つの変数の関数を作成し、2D配列を指定すると、補間された値が返されるようにするにはどうすればよいですか?
私が持っています N x M
配列A
。私はそれを補間し、どういうわけかその表面の関数を取得して、整数でない引数の値を選択できるようにする必要があります。 (2つの変数の関数としてその補間を使用する必要があります)
例えば:
A[N,M] //my array
// here is the method I'm looking for. Returns function interpolatedA
interpolatedA(3.14,344.1) //That function returns interpolated value
scatteredInterpolant
を使用した例を次に示します。
%# get some 2D matrix, and plot as surface
A = peaks(15);
subplot(121), surf(A)
%# create interpolant
[X,Y] = meshgrid(1:size(A,2), 1:size(A,1));
F = scatteredInterpolant(X(:), Y(:), A(:), 'linear');
%# interpolate over a finer grid
[U,V] = meshgrid(linspace(1,size(A,2),50), linspace(1,size(A,1),50));
subplot(122), surf(U,V, F(U,V))
補間オブジェクトはいつでも評価できることに注意してください。
>> F(3.14,3.41)
ans =
0.036288
上記の例では、ベクトル化された呼び出しを使用して、グリッドのすべてのポイントで補間します
_interp2
_関数を見たことがありますか?
MatLabのドキュメントから:
ZI = interp2(X,Y,Z,XI,YI)
は、ZI
およびXI
の要素に対応し、行列YI
、X
、およびY
で指定された2次元関数内の補間によって決定される要素を含む行列Z
を返します。 X
とY
は単調で、meshgrid
によって生成された場合と同じ形式(「格子縞」)である必要があります。行列X
およびY
は、データZ
が指定されるポイントを指定します。範囲外の値はNaN
sとして返されます。
次のようにspline()
コマンドを使用します。
% A contains N rows and 2 columns
pp = spline(A(:,1), A(:,2));
ppval(pp,3.44)
ans =
0.4454