2012-04-22 8 views
4

I이 형태 x, y, z 목록 가지고X, Y, Z 점과면 도면

-0.2894 1.2835 0.5405 
    -0.8171 -0.3034 0.1824 
    2.7864 0.5506 0.0037 

I가 plot3(x,y,z, '*')을 사용하여 플롯 수를하고 잘 작동한다.

지금은 표면을 그릴 싶지만, 내가 할 때

>> surf(x,y,z) 
??? Error using ==> surf at 78 
Z must be a matrix, not a scalar or vector. 

내가 그것을 어떻게 그릴 것인가?

답변

7

난는 X, Y 값들의 들로네 삼각 분할을 제안하고 표면 플롯 높이와 Z를 사용

x = randn(100,1); 
y = randn(100,1); 
z = (exp(-x.^2-y.^2)); 
tri = delaunay(x,y); 
trisurf(tri,x,y,z) 

enter image description here

EDIT

후로 Matlab 버전에 문제가있는 것 같습니다. 대안은 다음과 같습니다. griddata을 사용하여 데이터를 일반 격자에 보간하여 플롯팅에 surf을 사용할 수 있습니다.

x = randn(100,1); 
y = randn(100,1); 
z = (exp(-x.^2-y.^2)); 
[xx,yy]=meshgrid(-2:0.1:2,-2:0.1:2); 
zz = griddata(x,y,z,xx,yy); 
dfig,surf(xx,yy,zz) 

enter image description here

+0

흥미 롭. 내가'tri = delaunay (x, y);를 실행하면 matlab이 충돌합니다. 어떤 생각? – Macarse

+0

@Macarse : 내 사례에서나 데이터에 대한 것입니까? 또한 : 어떤 종류의 충돌? CTD? 세고 폴트? 오류? – Jonas

+0

예 : (사실 실제로 어떤 유형의 오류가 발생하는지 알지 못합니다. 어떤 버전을 사용하고 있습니까? – Macarse

관련 문제