Передаточная функция с дискретным на непрерывное время
Я реализовал класс для идентификации моделей 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