我正在尝试确定Python中的步骤响应的以下步骤特性:
Matlab为我提供了函数stepinfo,但我无法在Python中找到合适的替代方法。我确实尝试使用numpy和scipy来推动我自己,但我还没有运气,我对信号处理的知识缺乏。
我可以在互联网上找到的大多数信息看起来相当复杂,但我想更多地了解这一点。如果任何人可以推荐我一本好书或其他来源来了解更多信息,我将不胜感激!谢谢!
这是我目前的阶段响应:
答案 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)
你能不能只实施这些公式? (假设这是一个二阶系统/有两个主导极点,可以近似为二阶)
对于上升和结算时间,有一些不同的近似值,因此互联网是你的朋友。
您还可以计算阻尼频率(从绘图数据的最大值和最小值),并使用它来计算固有频率:
根据您的了解,有一些公式可以将这些不同的数量联系起来。