2016-09-27 2 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 좌표를 Xs, YsZs에 저장하여 데이터를 보간 할 위치를 지정할 수 있습니다. 이 지점의 데이터 값은 다음과 같습니다.

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

Matlab documentation을 살펴볼 수 있습니다.

편집 : 코드를 추가 할 때 : 오류는 사용자의 V 크기가 잘못된 것으로 보입니다. X, Y, Z의 도메인 외부에서 Matlab Docu -> interp3 -> Evaluate를 살펴보면 VX, YZ과 같은 차원을 가져야한다는 것을 알 수 있습니다. 문서에서 : X, YZ에 대한 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 좌표 (두 번째 노드의 X (2))입니다. Y와 Z도 마찬가지입니다. – StefanM

+0

Xs, Ys 및 Z에 대해서도 벡터가 될 수 있습니다. – StefanM