如何使用循环时间绘制图形?

时间:2011-04-14 22:54:17

标签: matlab graph plot

我想绘制机器人关节的位置,速度和加速度的图表,但我不知道如何绘制它。这是我的等式:

(position)
for 0<=t<=tblend,
y = theta1s+((0.5.*acc1).*(t^2));
for tblend<t<tf-tblend,
y = -195.21+(52.08.*t);
for tf-tblend<t<=tf,
y = 20-15.*((5-a)^2);

我必须使用什么命令来绘制此图表?如果可能,我也希望显示y的等式。

1 个答案:

答案 0 :(得分:0)

首先创建t值的网格,假设步长(这里我选择了0.1),你提到的最终值叫做tf:

t = 0:0.1:tf;

然后使用逻辑索引将不同的函数应用于此网格值的不同区域:

y = ( theta1s+((0.5.*acc1).*(t^2)) ).*(0 <= t).*(t<=tblend) + ...
( -195.21+(52.08.*t)).*( tblend<t).*(t<tf-tblend) + ...
( 20-15.*((5-a)^2) ).*(tf-tblend<t).*(t<=tf);

这将应用函数y的分段定义,方法是将每个差异片段乘以仅在其应用的区域上为1的逻辑,在其他位置为0。然后一个简单的

plot(t,y)

会告诉你情节。要打印此功能,您需要使用Matlab的原生LaTeX语法格式化绘图图形窗口的标题。查找并使用LaTeX命令\ begin {cases} ... \ end {cases}作为分段函数。您可以将大部分内容直接传递给title()命令。

对于另一种解决方案,如果您有信号处理工具箱,则可以使用内置的

heaviside(t)

功能。适当地改变分段函数的新片段的每个左端点的t值,然后为片段的每个右端点减去和相应的heavyiside()项。如果您没有内置的heavyiside()函数,则可以在Matlab中央文件交换中轻松找到第三方实现。