2010-12-23 5 views
6

3 열 x, y, z 의 데이터 파일을 가지고 있으며 표면을 시각화하기 위해 3D 플롯을 만들고 싶습니다.Matlab의 데이터 파일에서 3D 표면을 플롯하는 방법

나는 meshgrid를 사용할 수 있었지만 문제는 단지 y가 y < = x 인 데이터에만 해당된다는 것입니다. 그것을 할 수있는 방법이 있습니까?

예 :

 
x y z 
============ 
1 1 0.5 
2 1 0.3 
2 2 1.2 
3 1 1.1 
3 2 8.0 
3 3 1.4 
============ 

답변

5

당신은 결정 론적으로 누락 된 값을 입력 할 수 있습니다, xy 모두 두 개의 중첩 루프를 단지 작은 스크립트.

그렇지 않으면 MATLAB 문서의 meshgrid 함수를 다시 살펴보십시오. 거기에 See Also 섹션이 있습니다. 우연히 함수 griddata이 거기에 나열되어 있습니다. 그것이 당신이 필요로하는 것입니다! 나는 또한 더 나은 gridfit을 추천 할 수있다.

0

당신은 가지고있는 포인트를 통해 곡면을 맞출 수 있고 곡면을 그래프로 나타낼 수 있습니다. x2fx 함수를 사용하여 완전한 2 차 모델을 생성 한 다음 \ 연산자를 사용하여 모델에 데이터를 맞 춥니 다. 그래프로 표시하려는 표면의 기본 특성에 대해 알고 있습니까? 데이터에 잡음이 많이 있습니까? 8.0이 조금 밖에 보이지 않는가, 아니면 특이한 데이터인가?

7

많은 경우 간단한 해결책은 trisurf를 사용하는 것입니다. 예를 들어 ...

x = [1, 2, 2, 3, 3, 3]; 
y = [1, 1, 2, 1, 2, 3]; 
z = [0.5, 0.3, 1.2, 1.1, 1.8, 1.4]; 

tri = delaunay(x,y); 
trisurf(tri,x,y,z) 

alt text

+0

참고 : 나는 8 그 숫자의 오타라고 가정, 그래서 1.8에 넣어. 또한, (x, y) 평면의 데이터가 볼록 영역을 나타내지 않는다면, delaunay는 여전히 그것을 볼록하게 만듭니다. 이로 인해 가장자리 주위에 보간 아티팩트가 생길 수 있습니다. –

관련 문제