该命令scipy.signal.dimpulse(system, x0=None, t=None, n=None)似乎不接受 scipyStateSpace作为其system参数的输入。
这是我的代码和错误。目标是生成一系列 k 阶拉盖尔基函数。
k=5
num_points=100
alpha = 0.01
# create sys1
nn = np.sqrt(1-alpha**2)
n1 = [0,nn]
p1 = [1,-alpha]
sys1 = control.tf2ss(n1, p1)
# create sys0
n0 = [-alpha, 1]
p0 = [1,-alpha]
sys0 = control.tf2ss(n0, p0) #type(sys0) is an "instance", not a "StateSpace"
# create k-th order series
for i in range(2, k):
result_sys = control.matlab.series(sys0, sys1)
# generate discrete impulse response
result_lti = result_sys.returnScipySignalLti() #(maybe Lti format will work as input...no.)
y1 = scipy.signal.dimpulse(result_sys,x0=1,n=num_points+1)
最后一条命令给出了这个错误信息:
Traceback (most recent call last):
File "<ipython-input-8-a569a95625b6>", line 55, in <module>
y1 = scipy.signal.dimpulse(result_sys,x0=1,n=num_points+1)
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/scipy/signal/dltisys.py", line 173, in dimpulse
A, B, C, D, dt = _system_to_statespace(system)
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/scipy/signal/dltisys.py", line 20, in _system_to_statespace
if len(system) == 3:
AttributeError: StateSpace instance has no attribute '__len__
此外,该control.tf2ss命令返回一个“实例”,而不是一个“StateSpace”,这似乎很不寻常。
如何将输出从系统转换为可接受control.tf2ss的control.matlab.series输入格式scipy.signal.dimpulse?
谢谢!