об этом спрашивали 7 лет go в этой теме:
Как определить системы LTI с задержкой по времени в Scipy?
Ответ устарел или по крайней мере, я не знаю, как заставить это работать, и я хотел бы знать, есть ли способ сделать это в настоящее время.
Я хочу создать передаточную функцию, которая выглядит как это , где s
равно 0,1, что является временной задержкой.
В Matlab я бы сделал что-то вроде этого:
H=tf(1,'InputDelay',0.1);
s=tf('s');
G=1/(s+1);
Q=1+0.5*s+2/s;
чтобы затем я мог работать с передаточными функциями следующим образом:
M=feedback(Q*G,H);
M=minreal(M);
display(M);
Я хотел бы знать, есть ли эквивалент в python. Так что мне не нужно использовать выражения Symboli c, которые ограничивают универсальность кода.
с выражениями symboli c это будет выглядеть так:
s = sym.symbols('s')
G = 1/(s+1)
Q = 1+0.5*s+2/s
H = sym.exp(-0.1*s)
# Cálculo de la función de transferencia global
M = Q*G/(1+Q*G*H)
M = sym.simplify(M)
sym.pprint(M)
I Мысль об использовании numpy или sympy exp, но ни одна из них не работает:
s = ct.tf('s')
H = np.exp(-0.1*s)
Вывод:
TypeError: loop of ufunc does not support argument 0 of type TransferFunction which has no callable exp method
Sympy дает это:
SympifyError: Sympify of expression 'could not parse '-0.1 s------ 1'' failed, because of exception being raised:
SyntaxError: invalid syntax (<string>, line 1)
Я гуглил все, что мог придумать, и не смог найти никакой документации по этому поводу, извините за мое невежество и плохой английский sh. Заранее спасибо!