2017-12-12 18 views
0

나는 3D 점 구름이 있습니다. 나는 그들을 표면으로 그려야한다. meshdrid, griddata, scatteredInterpolant, trisurf-delaunay를 사용하여 변형을 시도했습니다. 아무것도 작동하지 않습니다. 나는이 질문이 많이 논의되었지만 몇 가지 중요한 세부 사항을 이해하지 못하는 것 같습니다. 내가 지금 가지고있는 코드 : 표면 기능을 그릴 수있는 방법을 찾기 위해matlab에 3D 구름의 표면을 그립니다.

1) : enter image description here

당신이 나를 도울 수 :

load('coords.mat') 
figure() 
subplot(1,2,1) 
plot3(x,y,z,'.') 
axis off 
view(3) 

subplot(1,2,2) 
C=gray(numel(x)); % unsuccessful attempt 
[~,idx]=sort(z); %  to have 
C=C(idx,:);  % illumination 
scatter3(x,y,z,50,C,'filled') 
axis off 
view(3) 

는 다음과 같은 이미지를 생성합니다.

어떤 점으로 표면 내부에있을 수 있습니다 (수 있습니다 내 문제)

2) 어떻게 '보이지 않는'점을 제거하려면?

다양한 사례에 대한 해결책이 필요합니다. 그림과 데이터는 단지 하나의 예일뿐입니다.

매트 파일을 here에 다운로드 할 수 있습니다.

P.

중요 -이 도트의 좌표를 임의의 베 지어 곡선의 회전으로 얻습니다.

enter image description here

좌표 here이다 : 케이스 데이터

UPDATE

상기 I 도트의 작은 양의 또 다른 세트를 생성 너무 크다.

답변

1

어디에서이 데이터를 가져 옵니까? 벡터로 표시되지만 행렬로 다시 구성하면 surf 함수를 사용할 수 있습니다. 다음 코드를 사용해보십시오.

z=reshape(z,100,100); 
y=reshape(y,100,100); 
x=reshape(x,100,100); 
surf(x,y,z) 
+0

Coool !!! 감사!! 나는이 벡터들을 직접 생성한다 - 그것은 내 질문에 길고 중요한 코드는 아니다. – zlon

+0

미안하지만 바보 같은 문제가 있습니다. x, y, z가 정사각형 매트릭스로 재구성 될 수있는 것은 아닙니다 (두 번째 데이터 세트 참조). 보간을해야합니까? – zlon

+0

@ zlon 이것이 내가 데이터가 어디서 유래했는지 이야기하고 싶었던 이유입니다.) 벡터는 x 방향의 조각입니다. 크기가 100x100으로 재구성 된 이유입니다. 그것은 정사각형 수가 아니기 때문에가 아니라 100 개의 조각이 있었기 때문입니다. 작은 데이터 세트의 경우 크기를 100x60으로 변경해야합니다. 이러한 작업은 데이터를 생성 할 때보다 쉽게 ​​제어 할 수 있습니다. –