【发布时间】:2020-06-28 22:26:00
【问题描述】:
这是 7 年前在这个帖子中提出的问题:
How to define LTI systems with Time delay in Scipy?
答案已经过时或者至少我不知道如何使它起作用,我想知道目前是否有办法做到这一点。
我想创建一个类似于this 的传递函数,其中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中是否有等价物。这样我就不必使用限制代码多功能性的符号表达式。
使用符号表达式,它看起来像这样:
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)
我曾想过使用 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)
我已经用谷歌搜索了我能想到的所有内容,但找不到任何关于此的文档,对于我的无知和糟糕的英语感到抱歉。 提前谢谢!
【问题讨论】:
标签: python python-3.x matlab transfer-function python-control