2014-07-07 6 views
0

그래프를 만들려고하는 2 개의 변수가 있는데 원하는 그래프를 얻으려면 어떤 함수를 사용해야하는지 알 수 없습니다. 예를 들어, 70x12 행렬의 숫자로 구성된 변수 Depth가 있습니다. 12는 해당 연도의 매월입니다. 나는 Depth to Temperature를 그래프로 나타내려고 노력하고 있는데, 이것은 또한 70x12 행렬로 구성된 행렬입니다. 현재 내가하고있는 방법은 for 루프를 사용하여 plot3을 사용하고 z 축에 1로 분리 된 각 Depth 대 Temperature 곡선을 그려 넣는 것입니다. 즉 다음과 같습니다MATLAB 3D 곡선 도형

그리고 회전 때 다음과 같습니다가 :

그러나

, 내가 원하는 것은 내 곡선 inbetween meshgrid 또는 서핑의 일종 내 그래프 있도록 이것과 비슷한 것을 볼 수 있습니다. 서핑과 메쉬를 가지고 놀았지만 커브를 그리기 위해 변수에 저장 한 데이터를 사용하는 방법과 그런 식으로 보이는 커브를 통해 서페이스를 사용하는 방법을 알아낼 수 없습니다.

enter image description here

답변

0

당신은 당신이 plot3surf을 사용하여 원하는 있지만 깊이와 온도와 meshgrid를 사용하여 달 모두의 행렬을 만드는 데 매우 좋습니다 일을 할 수 있습니다.

다음 코드는이를 수행하는 방법을 보여줍니다. 방금 temps이라는 임의의 온도 데이터를 작성한 다음을 사용하여 심도와 월 벡터를 temps의 각 항목에 해당하는 격자로 전환했습니다. MD이 이제는 행렬이기 때문에 for 루프가 필요 없으며 한 번에 모두 plot3이 될 수 있습니다.

% create some data. The problem is that depths and months are vectors while 
% I have a 70x12 grid o temperatures: 
nd = 70; 
depths = linspace(0, 1e3, nd); 
months = 1:12; 
temps = sin((1:nd)'*months/(nd*8)); 


% So make temps and depths matrices too: 
[M, D] = meshgrid(months, depths) 

% and now plot: 
figure(112) 
clf 

% plot the surface from the matrices returned by meshgrid: notice I used 
% facealpha to change the transparency: 
hs = surf(temps, D, M, 'facealpha', .5); 
hold all; 

% now that we used meshgrid we can plot everything at once: 
plot3(temps, D, M, 'linewidth', 3) 

view(3) 
grid on 
+0

고맙습니다. 그 덕분에 서프 플롯을 만들기 위해 필요한 것을 이해하는 데 도움이되었고 for 루프가없는 플롯 3이 정말 도움이되었습니다. Days에 대해 70x12 행렬을 생성하는 것은 이미 Depth에 대해 동일한 12 개의 열이 있었기 때문에해야 할 일이었습니다. 일단 내가 얻은 것은 좋은 서핑 구도를 만들고 당신이 보여준 모든 곡선을 그릴 수있었습니다. 감사합니다. –