2013-10-26 4 views
1

다음과 같은 문제가 있습니다.옥타브 실험 데이터에서 메쉬가있는 3 차원 플롯

4.00000 7.00000 0.09035 
4.00000 6.00000 0.02632 
4.00000 5.00000 0.01184 
4.00000 4.00000 0.30728 
4.00000 3.00000 0.16022 
4.00000 2.00000 0.01734 
3.00000 6.00000 0.05817 
3.00000 5.00000 0.02296 
3.00000 4.00000 0.00000 
3.00000 3.00000 0.22576 
3.00000 2.00000 0.08331 
3.00000 1.50000 0.00297 
2.00000 6.00000 0.00000 
2.00000 5.00000 0.05184 
2.00000 4.00000 0.01883 
2.00000 3.00000 0.00000 
2.00000 2.00000 0.10719 
2.00000 1.50000 0.06689 

내 실제 문제는 내가 메쉬와 3D 플롯을 수행하는 방법을 모르는입니다 : 나는 행렬 (A)에 읽어 실험 데이터 (A, B, C)이 같이있는 테이블을 가지고있다. Wioth plot3d()는 단지 커브입니다. 이것은 나에게 쓸모가 없습니다. 오래된 질문에 대한 답변 것처럼 ,이 솔루션은 다음과 같이해야합니다 : 설명과

X = reshape(A(:,1),m,n); 
Y = reshape(A(:,2),m,n); % might be reshape(data(:,2),n,m) 
Z = reshape(A(:,3),m,n); 
mesh(X,Y,Z); 

: 이 경우 가정이 X에서 고유 한 값이이 Y에 고유 한 값을 해요이다, n은 당신 메쉬 (X ', Y', Z) 또는 그와 비슷한 것으로 메쉬를 호출 할 때 이것을 옮겨야 할 수도 있습니다.

나는 m과 n이 내 3D 플롯의 x와 y 방향에서 격자 점의 양이어야한다는 설명을 이해했습니다. 내가 가진 문제는, 예를 들어 x 방향의 한 그리드 점에 해당하는 y 방향의 그리드 점이 점으로 변경 될 수 있다는 것입니다. 내 3D 플롯 (N, m) = 최종 격자 규모 얻을

aa=unique(a) 
bb=unique(b) 
lengthaa=length(aa) 
lengthbb=length(bb) 

((lengthaa), 길이 (BB)),하지만 난 모양을 변경하고자 할 때 내가 쓴 것처럼 위와 같은 오류 메시지가 표시됩니다.

octave:20> x = reshape (A(:,1),clength,dlength) 
error: reshape: can't reshape 36x1 array to 6x12 array 

이제 나는 무엇을 검색해야할지 모릅니다. 좀 도와 줄 수있어? :)

편집

: 내 축의 오른쪽 skaling이
[aaa,bbb]=meshgrid(aa,bb) 

과 : 가 지금은 한 단계 더 해요. 이제는 데이터를 올바른 방식으로 주문해야합니다.

편집 2 : 문제는, 내가 데이터가없는 격자 점이 있다는 것입니다. 그게 이유 야, 왜 모양이 바뀌지 않는거야. 어떤 도움이 필요합니까?

답변

3

누락 된 점을 생성하려면 데이터를 보간 할 수 있습니다.

# Test script for http://stackoverflow.com/questions/19604387/octave-3d-plot-with-mesh-out-of-experimental-data 
# Trygve Utstumo, 2013-10-28 

data = [ 
4.00000 7.00000 0.09035 
4.00000 6.00000 0.02632 
4.00000 5.00000 0.01184 
4.00000 4.00000 0.30728 
4.00000 3.00000 0.16022 
4.00000 2.00000 0.01734 
3.00000 6.00000 0.05817 
3.00000 5.00000 0.02296 
3.00000 4.00000 0.00000 
3.00000 3.00000 0.22576 
3.00000 2.00000 0.08331 
3.00000 1.50000 0.00297 
2.00000 6.00000 0.00000 
2.00000 5.00000 0.05184 
2.00000 4.00000 0.01883 
2.00000 3.00000 0.00000 
2.00000 2.00000 0.10719 
2.00000 1.50000 0.06689 
]; 

# Evenly spaced axis, hacked to this dataset 
xi = min(data(:,1)):max(data(:,1)); 
yi = min(data(:,2)):0.5:max(data(:,2)); 

zi = griddata(data(:,1),data(:,2),data(:,3),xi,yi); 

mesh(xi, yi, zi) 
print("figure.png") 
pause() 

Sample output, you may want to increase the interpolation resolution a bit

: 나는 비슷한 문제가 있었다 나는 빠른 테스트를했다