我想在某个“x”(标量)值处绘制一条线,因此每秒都会绘制一条具有特定值的垂直线。我知道,画一条垂直线(不考虑时间)的一种方式是声明就像一个向量:在特定时间绘制垂直线
y=0:0.01:5;
或类似的东西:
y=3:0.01:6;
,写plot(x,y);
另外,我已经完成了使用“暂停”参数的“动画”图,但在这种情况下我不知道该怎么做。谢谢你的帮助。
我想在某个“x”(标量)值处绘制一条线,因此每秒都会绘制一条具有特定值的垂直线。我知道,画一条垂直线(不考虑时间)的一种方式是声明就像一个向量:在特定时间绘制垂直线
y=0:0.01:5;
或类似的东西:
y=3:0.01:6;
,写plot(x,y);
另外,我已经完成了使用“暂停”参数的“动画”图,但在这种情况下我不知道该怎么做。谢谢你的帮助。
我建议的另一种方法是将plot
与hold 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
这就是我们得到:
我们定义了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
的值将不同,以及垂直线的绘制位置。
好吧,我会试试。谢谢。 – user3587175 2015-02-08 09:57:30
当然,让我知道。如果它有效,我不介意你接受我的答案。祝你好运! – rayryeng 2015-02-08 10:02:36
在for循环中添加“暂停(1)”行使其按照我的意愿工作。谢谢,我确定我会这样做。 – user3587175 2015-02-08 10:50:00
有几种方法可以在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)
来设置该行的属性。例如在你的电影中,你需要将它移动到新的位置,以便设置该属性。这样,通过最小的数据更改,您可以移动一条线或显示其加速度。
'x'是什么?我如何复制过去的例子,看看它的工作? – 2017-10-14 01:30:17