3D图中的多个1D图

时间:2016-08-03 15:24:11

标签: matlab plot 3d

我有一个二维方程,例如y = sin(x + t)。对于t的每个唯一值,我想绘制y的一维实现。例如,对于x = 0:0.1:2*pit = 1:10,对于t的每个值,我想为y = sin(x + t)绘制x = 0:0.1:2*pi。基本上,我希望t的每个值都沿着一个方向排列。

我有没有办法在MATLAB中做到这一点?

1 个答案:

答案 0 :(得分:3)

类似waterfall的情节会对你的情况有益吗?给定x坐标的向量,对于y的每个唯一值(在您的情况下为t),它将绘制该曲线的一维实现。首先,您将生成一个坐标为XY的二维网格,其中XY的每一行都是一个x坐标的向量y的实现,你可以在一个图中一起绘制所有这些。

这样的事情:

[t,x] = meshgrid(0:0.1:2*pi, 1:10);
waterfall(t, x, sin(x + t));
view(-50, 50); % Adjust for a better view
xlabel('x'); ylabel('t'); zlabel('y'); % Add axis labels

我们得到这个情节:

enter image description here

如果你不想要"垂直"您在绘图中看到的基线,然后您可以通过为其指定一些其他属性来使用surf

[t,x] = meshgrid(0:0.1:2*pi, 1:10);
surf(t, x, sin(x + t), 'FaceColor', 'white', 'EdgeColor', 'interp', 'MeshStyle', 'row');
view(-50, 50); 
xlabel('x'); ylabel('t'); zlabel('y');

FaceColorEdgeColor属性可以模仿您在waterfall图中看到的内容。每个可视化都具有白色面,并且插值幅度颜色。重要的是MeshStyle属性,您希望在其中显示绘图行的边缘。 mesh的默认方式是显示行和列,因此您可以在网格状图形中可视化您的绘图,这不是您想要的。将MeshStyle设置为row将模拟waterfall图,但不会显示您在该图中看到的垂直基线。

你会得到:

enter image description here