Stepinfo в Python

Я пытаюсь определить следующие характеристики шага для ответа шага в Python:

  • Время нарастания
  • SettlingTime
  • SettlingMin
  • SettlingMax
  • выброс
  • недолет
  • Пик
  • Час пик

Matlab предлагает мне функцию stepinfo, но я не могу найти подходящую альтернативу в Python. Я пытался накатить свои собственные, используя numpy и scipy, но мне пока не очень повезло, мои знания по обработке сигналов отсутствуют.

Большая часть информации, которую я могу найти в Интернете, выглядит довольно сложной, но мне нравится больше узнавать об этом. Если бы кто-нибудь мог порекомендовать мне хорошую книгу или другой источник, чтобы узнать больше, я был бы признателен за это! Спасибо!

Это ответ на шаг, который у меня сейчас есть:

пошаговый ответ

2 ответа

Это обсуждение предлагает своего рода реализацию:

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 в разделе "Обработка сигналов", чтобы получить другую необходимую вам информацию.

Не могли бы вы просто реализовать формулы? (Предполагая, что это система второго порядка / имеет два доминирующих полюса и может быть аппроксимирована как второй порядок)

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

Для времени нарастания и посадки есть несколько разных приближений, поэтому интернет - ваш друг.

Вы также можете вычислить демпфированную частоту (из максимумов и минимумов данных вашего графика) и использовать ее для определения собственной частоты:

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

Есть несколько формул, которые связывают эти различные величины, в зависимости от того, что вы знаете.

Другие вопросы по тегам