我想在某个" x" (作为标量)值,所以每秒,将绘制具有特定值的垂直线。我知道绘制垂直线(不考虑时间)的一种方法是声明一个矢量,如:
y=0:0.01:5;
或类似的东西:
y=3:0.01:6;
并撰写plot(x,y);
此外,我已经完成了#34;动画"使用"暂停"参数,但我不知道在这种情况下如何做到这一点。谢谢你的帮助。
答案 0 :(得分:4)
我建议的另一种方法是将plot
与hold on
结合使用。使用plot
,您只需指定两个点,其中每个点具有相同的x
值,但y
值可以更改为您想要的任何值。使用plot
绘制点时,默认行为是在点之间绘制一条线。如果我们指定具有相同x
坐标但坐标不同y
的两个点,我们基本上会在这些点之间绘制一条垂直线。
例如,假设您希望每个"秒"有一条垂直线,我们可以这样做:
ystart = [-1 -2 -3 -1 -2 -3];
yend = [1 2 3 1 2 3];
figure; hold on;
for idx = 1 : numel(ystart)
plot([idx idx], [ystart(idx) yend(idx)]);
end
这就是我们得到的:
我们定义了两个包含6个元素的数组,其中ystart
表示起始y
点,yend
表示结束y
点。我们生成一个新图,使用hold on
在同一图表上绘制多行,然后使用for
循环plot
,以便在两点之间绘制一条线:{{1 }和(x,y) = (idx, ystart(idx))
。 (x,y) = (idx, yend(idx))
从1到6.显然,您可以通过指定另一个数组来更改idx
值的绘制位置...称之为x
:
x
在这里,我们将绘制从x = 0:2:10; %// Time values
ystart = [-1 -2 -3 -1 -2 -3];
yend = [1 2 3 1 2 3];
figure; hold on;
for idx = 1 : numel(ystart)
plot([x(idx) x(idx)], [ystart(idx) yend(idx)]);
end
到x = 0
的垂直线,步长为2.结果基本相同,但x = 10
值会有所不同,如以及绘制垂直线的位置。
答案 1 :(得分:2)
有几种方法可以在Matlab中绘制垂直线。最简单的建议是line
功能:
line(X,Y)将向量X和Y中定义的直线添加到当前 轴。如果X和Y是相同大小的矩阵,则线条绘制一条线 每列。
根据需要多次调用。
h=line(X,Y)
将为您提供该行的属性
另一种方式是
X= X0*(Y./Y)
然后
plot(X,Y)
将在X0点绘制一条垂直线。您可以做的另一件事是使用上述line
函数从点(X0, min(Y))
到点(X0, max(Y))
绘制一条线,这是最优雅的解决方案。如果您要创建影片,则需要使用h=line(X,Y)
访问此行的属性。要将行移动到新位置,您必须通过调用set(h, Property, value)
来设置此行的属性。例如,在电影中,您需要将其移动到新位置,以便设置该属性。这样,通过最小化数据更改,您可以移动一条线或显示其加速。