Python中的Stepinfo

时间:2014-07-11 13:34:46

标签: python matlab numpy scipy control-theory

我正在尝试确定Python中的步骤响应的以下步骤特性:

  • 上升时间
  • SettlingTime
  • SettlingMin
  • SettlingMax
  • 过冲
  • PeakTime

Matlab为我提供了函数stepinfo,但我无法在Python中找到合适的替代方法。我确实尝试使用numpy和scipy来推动我自己,但我还没有运气,我对信号处理的知识缺乏。

我可以在互联网上找到的大多数信息看起来相当复杂,但我想更多地了解这一点。如果任何人可以推荐我一本好书或其他来源来了解更多信息,我将不胜感激!谢谢!

这是我目前的阶段响应:

step response

2 个答案:

答案 0 :(得分:1)

discussion提出了一种实施方式:

def step_info(t,yout):
    print "OS: %f%s"%((yout.max()/yout[-1]-1)*100,'%')
    print "Tr: %fs"%(t[next(i for i in range(0,len(yout)-1) if yout[i]>yout[-1]*.90)]-t[0])
    print "Ts: %fs"%(t[next(len(yout)-i for i in range(2,len(yout)-1) if abs(yout[-i]/yout[-1])>1.02)]-t[0])

然后,您需要在“信号处理”部分中使用numpy函数来获取所需的其他信息。

答案 1 :(得分:0)

你能不能只实施这些公式? (假设这是一个二阶系统/有两个主导极点,可以近似为二阶)

%OS = 100 \cdot e^{\left ({\frac{-\zeta \pi}{\sqrt{1-\zeta^2}}}\right)}

对于上升和结算时间,有一些不同的近似值,因此互联网是你的朋友。

您还可以计算阻尼频率(从绘图数据的最大值和最小值),并使用它来计算固有频率:

\omega_d = \omega_n \cdot (\sqrt{1-\zeta^2})

根据您的了解,有一些公式可以将这些不同的数量联系起来。