2012-04-27 9 views
1

私は2つの3Dアレイを持っている:3Dスプライン補間のMatlab

A=[ 
12751 4616 15915 
15864 4622 15667 
12877 4683 21050 
15816 4668 21253 
11374 5006 18495 
16995 5466 18493 
11638 4880 20023 
17078 4938 20006 
11576 4886 17011 
]; 

B=[ 
12402 2138 15743 
10285 3175 15851 
10237 3084 21052 
12130 2129 21299 
8074 3802 18505 
14515 1623 18497 
8415 3713 19856 
14462 1120 20061 
8340 3711 17145 
14483 1157 16990]; 

をし、私はVを定義する必要があり、私はMatlab.HowでInterp3を使用して、それらの間のスプラインまたは3D補間をしたいですVI = interp3(X,Y,Z,V,XI,YI,ZI)

Yyy = spline(x,Y,xx)です。

+2

これらのアレイは、私にとって非常に** **次元です。 –

+0

これらの配列は何を表していますか?注意:絶対にNOの場合、interp3はここでの補間に適したツールになります。 –

答えて

0

Bのデータは、A(またはその逆)の機能ですか?また、これらのアレイは3Dではなく1Dのように見えます。これを明確にすることはできますか?あなたの関数呼び出し

yy = spline(x, Y, xx) 

Y

は、あなたが補間されている従属変数である:Yxの関数であり、上記の関数呼び出しの結果はxxYの値を返すことです。 1次元の例として、より多くの情報と、この関数の使用例についてspline documentationアウト

x = linspace(0., 2.*pi, 100); 
Y = sin(x); 

% What is the value of Y (or sin(x)) at pi/2? 
xx = pi/2.; 
yy = spline(x, Y, xx); % This should result in yy = 1.000 

チェックしてみてください。

この関数は1Dフィッティングのためのもので、yy = interp1(x, Y, xx, 'spline')に相当する(私は仮定します)。 3次元ルックアップを行いたい場合は、interp3を使用する必要があります。これは上の例を3Dに一般化しています。したがって、ただ1つの独立した座標であるxではなく、yzの2つがあり、ルックアップを実行するポイントの3つの座標があります。xx,yyおよびzzです。補間する関数は、座標(x, y, z)の3D関数でなければなりません。例として試してみてください:

x = linspace(-1., 1., 100); y = x; z = x; 
[X, Y, Z] = meshgrid(x, y, z); 
s = exp(-sqrt(X.^2 + Y.^2 + Z.^2)); 

sinterp = interp3(x, y, z, s, 0., 0., 0.) % Should give sinterp = 0.9827 
関連する問題