2017-12-02 2 views
1

나는 내가 실행하는 스크립트에서 얻은 7x5x4의 T 매트릭스를 가지고 있습니다. 나의 궁극적 인 목표는 큐브의 모든면에서 온도를 보여주는 3D 플롯을 플롯하는 것이고, 가능하다면 내부 온도를 볼 수도 있습니다. 그러나 어떤 평면에서 온도 분포도를 얻을 수 있다면 행복 할 것입니다. (평면 (i, j, 1)에서 말하십시오.) >X, y-x 제외 (주어진온도 분포의 3D 플롯

데이터 크기가

코드와 함께이 문제

DX=0.1; % step size 
DY=0.1; 
DZ=0.1; 
Lx= 0.6; %length along x-axis in m 
Ly=0.4; %length along y-axis 
Lz=0.3; %length along z-axis 
X=0:DX:Lx; 
Y=0:DY:Ly; 
Z=0:DZ:Lz; 
[xx,yy,zz]=meshgrid(X,Y,Z); 
figure 
surf(xx,yy,T(:,:,1)); 
+0

x == X입니까? xx와 yy가 3 차원인지 확신합니까? T는 7x5 크기이고 xx 및 yy 크기는 5x7입니다. 이는 오류 일 수 있습니다. – Squeezie

답변

1

저를 도와주세요 동의해야합니다 : 나는 아래의 코드를 실행하고 있지만, 나는 오류 -> 및 z ->meshgrid 호출에서 Z)을 입력하면 surf의 세 입력은 5x7x4, 5x7x4 및 7x5 크기입니다. 이 세 가지 입력은 동일한 크기를 가져야하며 2 차원 행렬이어야합니다. 다른 옵션은 처음 두 인수가 벡터

수 있도록하는 것입니다

하나의 솔루션 :

[yy,xx,zz]=meshgrid(Y,X,Z); 
surf(xx(:,:,1),yy(:,:,1),T(:,:,1)); 

다른 솔루션 :

surf(Y,X,T(:,:,1)); 

MATLAB 자신의 문서 및 매개 변수의 순서로 오히려 혼란 ... 그들은 지수가 T(y,x,z) 인 경향이 있습니다. 따라서 실제로 X으로 정의한 내용은 Y이고 그 반대의 경우도 마찬가지입니다. x 축은 수평이고 두 번째 행렬 색인은 수평입니다.

음량 플로팅과 관련하여 : on the File Exchange에는 꽤 좋은 도구가 있습니다.

+0

대단히 감사합니다. Cris. 당신의 솔루션은 효과가 있었지만, 3D 플롯을 얻을 수 없었기 때문에 (x, y, z, T와 같은 용적 감각으로), 원하는 평면에 온도 플롯을 그리는 것을 선호 할 것입니다. 입방체의 측면, 왼쪽면, 꼭대기 ... 그리고 그 사이의 비행기들. 정말 고마워. –

+0

방금보기 (2) 명령을 추가했습니다. 도움을 주셔서 감사합니다! –