Python中的Stepinfo

2024-09-28 01:30:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试为Python中的步骤响应确定以下步骤特征:

  • 上升时间
  • 结算时间
  • 沉降min
  • 沉降最大值
  • 过冲
  • 下冲
  • 高峰
  • 高峰期

Matlab为我提供了函数stepinfo,但我在Python中找不到合适的替代方法。我确实尝试过使用numpy和scipy来实现自己的目标,但是我还没有太多的运气,我的信号处理知识还很欠缺。在

我能在网上找到的大多数信息看起来相当复杂,但我确实想了解更多。如果有人能向我推荐一本好书或其他来源,我会很感激的!谢谢您!在

这是我目前得到的阶跃响应:

step response


Tags: 方法函数numpy目标时间步骤scipy特征
2条回答

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

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

对于上升和稳定时间有一些不同的近似值,所以互联网是你的朋友。在

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

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

有一些公式可以把这些不同的量联系起来,这取决于你所知道的。在

这个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函数来获取所需的其他信息。在

相关问题 更多 >

    热门问题