2016-09-27 38 views
-1

3D三角形のノードにデータがあり、三角形内のデータを取得するために補間する必要があります。ここで3D三角形内の線形補間

は私しようとしたものである:

x=[0,1,0]; 
y=[1,0,1]; 
z=[0,2,-1]; 
[X,Y,Z]=meshgrid(x,y,z); 
v=[2,5,-1]; 
xs=linspace(0,1,.1); 
ys=linspace(0,1,.1); 
zs=linspace(-1,2,.1); 
Vs = interp3(X,Y,Z,v,xs,ys,zs,'linear'); 

私はエラーを取得:入力の数は、これらの配列の次元数(NDIMS)に等しくない配列座標。

何が間違っていますか?

答えて

1

Xにノードのx座標、Yのy座標、Zのノードのz座標が含まれているようにしてください。ノードの値/データをVに格納します。ここで、これらの点のx、y、z座標をXsYsZsに保存して、データを補間する場所を指定できます。これらのポイントでのあなたのデータの価値は以下の通りです:

Vs = interp3(X,Y,Z,V,Xs,Ys,Zs,'linear'); 

あなたはMatlab documentationを見ることができます。

編集:コードを追加したときにエラーが発生しました:Vの寸法が間違っているようです。 X、Y、Zのドメイン外のMatlab Docu - > interp3 - > Evaluateの例を見ると、VX,YZという次元を持つ必要があります。ドキュメントXYおよびZのドキュメント:size(V) = [length(Y) length(X) length(Z)]から。ここ

は一例であり:

X = linspace(-1,2,5); 
Y = linspace(-1,7,23); 
Z = linspace(3,9,23); 
V = rand(23,5,23); 

xq = linspace(0,1,34); 
yq = linspace(0,2,34); 
zq = linspace(4,5,34); 
vq = interp3(X,Y,Z,V,xq,yq,zq,'linear',-1); 
+0

X、Y及びZは、関数meshgridを使用してグリッドすべきか? Xs Ys Zsはベクトルでなければなりませんか? – user2600366

+0

X、Y、Zはベクトル(Matlab documentation→interp3→入力引数)でもかまいません。したがって、X(1)は最初のノードのx座標です(2番目のノードのX(2))。YとZについても同じです。 – StefanM

+0

Xs、Ys、Zについても同じです。 – StefanM