曲线的MATLAB 3D绘图

时间:2014-07-07 19:41:14

标签: matlab plot mesh surf

我有2个变量,我正在尝试绘制图形,但我无法弄清楚要使用哪些函数来获得所需的图形。例如,我有一个变量Depth,它是一个70x12的矩阵,里面有数字。 12是一年中的每个月。我正在尝试绘制Depth vs Temperature图表,这也是一个70x12矩阵的数字。我这样做的当前方式是在for循环中使用plot3,并在z轴上绘制每个Depth vs Temperature曲线,以1分隔。看起来像这样:

旋转时看起来像这样:

但是,我想要的是在我的曲线之间进行某种网格或冲浪,这样我的图形看起来就像这样。我玩冲浪和网格一点点但我无法弄清楚如何使用我存储在变量中的数据来绘制曲线和通过看起来像这样的曲线的曲面。

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用plot3surf执行您想要的操作,但建议使用meshgrid创建深度和温度以及月份的矩阵。

以下代码显示了如何执行此操作。我只是编造了一些名为temps的任意温度数据,然后使用meshgrid将深度和月份的矢量转换为与临时值中每个条目对应的网格。请注意,由于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