我有一个二维方程,例如y = sin(x + t)
。对于t
的每个唯一值,我想绘制y
的一维实现。例如,对于x = 0:0.1:2*pi
和t = 1:10
,对于t
的每个值,我想为y = sin(x + t)
绘制x = 0:0.1:2*pi
。基本上,我希望t
的每个值都沿着一个方向排列。
我有没有办法在MATLAB中做到这一点?
答案 0 :(得分:3)
类似waterfall
的情节会对你的情况有益吗?给定x
坐标的向量,对于y
的每个唯一值(在您的情况下为t
),它将绘制该曲线的一维实现。首先,您将生成一个坐标为X
,Y
的二维网格,其中X
和Y
的每一行都是一个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
我们得到这个情节:
如果你不想要"垂直"您在绘图中看到的基线,然后您可以通过为其指定一些其他属性来使用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');
FaceColor
和EdgeColor
属性可以模仿您在waterfall
图中看到的内容。每个可视化都具有白色面,并且插值幅度颜色。重要的是MeshStyle
属性,您希望在其中显示绘图行的边缘。 mesh
的默认方式是显示行和列,因此您可以在网格状图形中可视化您的绘图,这不是您想要的。将MeshStyle
设置为row
将模拟waterfall
图,但不会显示您在该图中看到的垂直基线。
你会得到: