stuartgew 发表于 2006-7-7 21:33

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) ))))(当然你可以嵌套更多的)
另一种就是增量式:
STEP (x, x0, h0, x1, h1)+
STEP (x, x1, h2, x2, h3)+
STEP (x, x2, h4, x3, h5)+
……
我常用的是后者,下面就举例(附件请参考step.cmd文件)说明下他们的区别。其实他们都可以表示同一种你所需要的曲线,如下所示曲线:


用嵌入式可表示为:
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)
还有一种是错误的:
step(time,3,0d,5,5d)+
step(time,8,5d,10,0d)
这两种都是错误的表示的方法,不信你自己可以试试的
   
总结:从上面的例子中大家可以清楚的看出,增量式明显比嵌入式要简洁的多,但是嵌入式却比增量式思路要清晰、严谨的多,他们各有自己的优点,所以大家可以针对性的使用他们,习惯用什么方式就用什么方式,当然他们还有其他的不同点我还没想到的,也欢迎你多多提出意见。

[ 本帖最后由 yejet 于 2006-10-1 19:42 编辑 ]

zhangmeng 发表于 2006-7-9 13:57

是ADAMS里面的吗?
我偏爱用Spline直接来做的!

stuartgew 发表于 2006-7-10 12:08

恩,是adams下的!

zhangmeng 发表于 2006-7-10 15:06

我知道一种方法来模拟阶跃力
可不使用高阶趋近的,就是真正的阶跃力
前沿和后沿都是尖锐的,就是原本的方波
知道怎样在ADAMS里实现吗?

stuartgew 发表于 2006-7-10 15:23

方波也是用step函数啊
知道这个样一个函数
step(sin(2*pi*3*time),-0.01,0,0.01,7)
它的波形就是方波,可调整时间使其尖锐
见图片


不过完全理想的方波的实现不知道如何做

andyxin 发表于 2006-10-9 23:20

LZ,拿别人的东西至少得说明一下吧

dxsh 发表于 2006-11-1 09:10

我是这么使用的step(time,x0,h0,x1,h1)+step(time-time1,x2,h2,x3,h3+step(time-time3,......)+step()

wang9813 发表于 2006-11-7 09:57

学习了谢谢!!

xw_bai 发表于 2007-4-12 07:45

长见识了 谢谢

hch1975a 发表于 2012-3-22 23:06

謝謝大大的分享啊

lcy1989 发表于 2012-4-17 12:35

很好啊~ 学习了
之前李军的那本书里好像用的就是增量式
页: [1]
查看完整版本: step函数的两种表示方法