Передаточная функция с дискретным на непрерывное время

Я реализовал класс для идентификации моделей ARX в Python. Следующим шагом является расчет оптимальных параметров PID на основе LQR. Очевидно, требуется модель с непрерывным временем, и у меня есть следующие возможности:

  • преобразовать модель с дискретным временем в модель с непрерывным временем,
  • определить модель непрерывного времени,
  • адаптировать подход LQR для определения оптимальных параметров PID для дискретной временной области.

В Matlab первые два подхода легко осуществимы, но мне они нужны в Python. Кто-нибудь знает, как реализован Matlab? d2c а есть ссылка?

1 ответ

Решение

Есть несколько вариантов, которые вы можете использовать python-control пакет или scipy.signal модуль или использование harold (бесстыдная вилка: я автор).

Вот пример

import harold

G = harold.Transfer(1, [1, 2, 1])

H_zoh = harold.discretize(G, dt=0.1, method='zoh')

H_tus = harold.discretize(G, dt=0.1, method='tustin')

H_zoh.polynomials
Out[5]: 
(array([[0.00467884, 0.00437708]]),
 array([[ 1.        , -1.80967484,  0.81873075]]))

H_tus.polynomials
Out[6]: 
(array([[0.00226757, 0.00453515, 0.00226757]]),
 array([[ 1.        , -1.80952381,  0.8185941 ]]))

В настоящее время zoh, foh, tustin, forward euler, backward euler поддерживается в том числе недискретизации. Документация находится по адресу http://harold.readthedocs.io/en/latest/index.html

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