如何在 python 中模拟一个传递函数的一步
How to simulate one step to a transfer function in python
我发现 scipy.signal.dstep
、scipy.signal.dlsim
函数有助于模拟传递函数的行为,例如:
signal.dlsim(signal.cont2discrete(([1], [1, 1]), 0.1), u=[1, 1], t=[0.0, 0.1])
允许在 [0, 0.1]
时间间隔内使用值为 1
的控制信号对 1/(s+1)
函数进行建模。
但是这些函数不允许仅使用初始值对一步进行建模。
是否有任何其他函数可以对传递函数的一步建模,或者如何更好地建模?
首先,我不确定,如果你想使用离散时间或连续时间,因为你正在使用 s
运算符作为 cont。时间,函数dstep
和dlsim
用于离散时间表示。但是,我在示例中使用了连续的。
您可以使用 scipy.signal
的 lti
函数在 python 中创建一个 dlti
对象。创建的过滤器对象有一个方法 step
,其中第一个参数用于初始时间向量。 lti.step
因此,您可以使用此代码段绘制阶跃响应。
import scipy.signal as sig
import matplotlib.pyplot as plt
filt = sig.lti(1, (1,1))
plt.plot(*filt.step())
plt.plot(*filt.step(-1))
plt.show()
如果您不想绘制它们,只需调用
t, a = filt.step()
我发现 scipy.signal.dstep
、scipy.signal.dlsim
函数有助于模拟传递函数的行为,例如:
signal.dlsim(signal.cont2discrete(([1], [1, 1]), 0.1), u=[1, 1], t=[0.0, 0.1])
允许在 [0, 0.1]
时间间隔内使用值为 1
的控制信号对 1/(s+1)
函数进行建模。
但是这些函数不允许仅使用初始值对一步进行建模。
是否有任何其他函数可以对传递函数的一步建模,或者如何更好地建模?
首先,我不确定,如果你想使用离散时间或连续时间,因为你正在使用 s
运算符作为 cont。时间,函数dstep
和dlsim
用于离散时间表示。但是,我在示例中使用了连续的。
您可以使用 scipy.signal
的 lti
函数在 python 中创建一个 dlti
对象。创建的过滤器对象有一个方法 step
,其中第一个参数用于初始时间向量。 lti.step
因此,您可以使用此代码段绘制阶跃响应。
import scipy.signal as sig
import matplotlib.pyplot as plt
filt = sig.lti(1, (1,1))
plt.plot(*filt.step())
plt.plot(*filt.step(-1))
plt.show()
如果您不想绘制它们,只需调用
t, a = filt.step()