在特定时间绘制垂直线

时间:2015-02-08 02:40:22

标签: matlab plot

我想在某个" x" (作为标量)值,所以每秒,将绘制具有特定值的垂直线。我知道绘制垂直线(不考虑时间)的一种方法是声明一个矢量,如:

y=0:0.01:5;

或类似的东西:

y=3:0.01:6;

并撰写plot(x,y);

此外,我已经完成了#34;动画"使用"暂停"参数,但我不知道在这种情况下如何做到这一点。谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

我建议的另一种方法是将plothold 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

这就是我们得到的:

enter image description here

我们定义了两个包含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)来设置此行的属性。例如,在电影中,您需要将其移动到新位置,以便设置该属性。这样,通过最小化数据更改,您可以移动一条线或显示其加速。