2015-02-08 145 views
2

我想在某个“x”(标量)值处绘制一条线,因此每秒都会绘制一条具有特定值的垂直线。我知道,画一条垂直线(不考虑时间)的一种方式是声明就像一个向量:在特定时间绘制垂直线

y=0:0.01:5; 

或类似的东西:

y=3:0.01:6; 

,写plot(x,y);

另外,我已经完成了使用“暂停”参数的“动画”图,但在这种情况下我不知道该怎么做。谢谢你的帮助。

+0

'x'是什么?我如何复制过去的例子,看看它的工作? – 2017-10-14 01:30:17

回答

3

我建议的另一种方法是将plothold on组合使用。与plot,你只能指定两点,其中每个点具有相同的x值,但y值可以更改为任何你想要的。当您使用plot绘制点时,默认行为是在点之间绘制一条线。如果我们指定具有相同坐标的两个点,但坐标不同,我们将在这些点之间绘制垂直线。

例如,假设你想拥有每一个“第二”有一条垂直线,我们可以做这样的事情:

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,以便我们在两点之间绘制一条线:(x,y) = (idx, ystart(idx))(x,y) = (idx, yend(idx))idx变为1-6。很明显,你可以通过指定另一个数组改变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开始垂直线最多为x = 10,步长为2.结果基本相同,但x的值将不同,以及垂直线的绘制位置。

+0

好吧,我会试试。谢谢。 – user3587175 2015-02-08 09:57:30

+0

当然,让我知道。如果它有效,我不介意你接受我的答案。祝你好运! – rayryeng 2015-02-08 10:02:36

+1

在for循环中添加“暂停(1)”行使其按照我的意愿工作。谢谢,我确定我会这样做。 – user3587175 2015-02-08 10:50:00

2

有几种方法可以在Matlab中绘制垂直线。最简单的建议是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)来设置该行的属性。例如在你的电影中,你需要将它移动到新的位置,以便设置该属性。这样,通过最小的数据更改,您可以移动一条线或显示其加速度。