1
Step函数
step(x,x0,h0,x1,h1)
x是自变量,x0表示step函数起点,x1表示step函数终点。h0是函数在起
点的值,h1是函数终点的值。在起点和终点间返回的是按公式h0+(h1-h0)*a*a*
(3-2a)计算的值。其中a=(x-x0)/(x1-x0).
step5变量的意义是一样的,只是在计算其中返回的值的计算公式不同。计算公式的
不同使得起点和终点函数曲线的连续性不同。返回的值也有差异。具体在adams自
带的帮助里面都可以查到的。
Step的两种表示方法
相信大家对step的用法已经是相当的熟练了,在这里我只是想把自己对step的理
解总结一下,希望能对大家有所帮助。
首先简要介绍下step的形式及其各个参数的物理含义:
格式:STEP(x,x0,h0,x1,h1)
参数说明:
x―自变量,可以是时间或时间的任一函数
x0―自变量的STEP函数开始值,可以是常数或函数表达式或设计变量;
x1―自变量的STEP函数结束值,可以是常数、函数表达式或设计变量
h0―STEP函数的初始值,可以是常数、设计变量或其它函数表达式
h1―STEP函数的最终值,可以是常数、设计变量或其它函数表达式
而在实际的运用过程中,它有两种表示方法,一种是嵌入式:
STEP(x,x0,h0,x1,
(STEP(x,x1,h1,x2,
(STEP(x,x2,h2,x3,h2)))))(当然你可以嵌套更多的)
2
另一种就是增量式:
STEP(x,x0,h0,x1,h1)+
STEP(x,x1,h2,x2,h3)+
STEP(x,x2,h4,x3,h5)+
……
我常用的是后者,下面就举例(附件请参考文件)说明下他们的区别。其
实他们都可以表示同一种你所需要的曲线,如下所示曲线:
用嵌入式可表示为:
step(time,0,0d,3,
(step(time,3,0d,5,
(step(time,5,5d,8,
(step(time,8,5d,10,
(step(time,10,0d,12,0d)))))))))
用增量式表示为:
step(time,3,0,5,5)+
step(time,5,0,8,0)+
step(time,8,0,10,-5)
在使用后者的过程中很多人会误表示为:
step(time,0,0d,3,0d)+
step(time,3,0d,5,5d)+
step(time,5,5d,8,5d)+
step(time,8,5d,10,0d)+
step(time,10,0d,12,0d)
3
还有一种是错误的:
step(time,3,0d,5,5d)+
step(time,8,5d,10,0d)
这两种都是错误的表示的方法,不信你自己可以试试的☺
总结:从上面的例子中大家可以清楚的看出,增量式明显比嵌入式要简洁的多,
但是嵌入式却比增量式思路要清晰、严谨的多,他们各有自己的优点,所以大家可以针
对性的使用他们,习惯用什么方式就用什么方式,当然他们还有其他的不同点我还没想
到的,也欢迎你多多提出意见。
多个step函数表达式的应用
问:时间是0时,值为0;
时间为2时,值为10;
时间为3时,值为10;
时间为4时,值为0。
用step(time,0,0,2,10)+step(time,3,10,4,0)不能达到预期的效果。那么应该
怎样表达?
答:应为:step(time,0,0,2,10)+step(time,3,0,4,-10)应该清楚step函数的表达
意义,step(time,0,0,2,10)+step(time,3,0,4,-10)这是一个整体式,不能只看第二
个。
第二个step是以第一个的step完成后的位置为初始位置的,是相对的,不是绝对
的,像上面的例子step(time,0,0,2,10)+step(time,3,10,4,0),如果是这样的话,
达到的实际效果是:
时间是0时,值为0;
时间为2时,值为10;
时间为3时,值为20;
时间为4时,值为20。
step(time,3,10,4,0),是以第一个step后的位置开始算的。
问:step(x,x0,h0,x1,h1),其中x大多数都是时间,请问x可以是别的吗?
4
譬如,我做的180度的旋转运动,我想在0—30时加速,30-150匀速,150—180
减速,我想把x定义为degree,但是好象出错,不知道可以不?
答:step中的x可以是任意变量或测量值,但运动只能是时间的函数!
问:step(time,0,0,0.7,time*75d)我设计总时间为1秒,为什么它能转动
75度,如果step(time,0,0,0.7,time*75d)+step(time,0,0,1,0d)还是转动
75度?他转到53度应该停吧,
这不是我需要的。
答:step(time,0,0,0.7,time*75d)你的总时间为1秒,所以time*75d就
为1x75d=75d了,这是它在仿真1秒后的最后的状态。time*75d是个时间变量的,
但它在时间为0.7秒的时候,转过的角度为0.7x75d=52.5d。
另外step(time,0,0,0.7,time*75d)+step(time,0,0,1,0d),你不觉得它
有点问题吗,后面的step(time,0,0,1,0d)0秒时为0,1秒时还为0d,所以它
的增量最后还是0,就相当于没有。
本文发布于:2022-12-28 00:43:09,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/43670.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |