Scipy.signal.dimpulse(system):如何将 StateSpace 转换为“系统”?

信息处理 离散信号 Python 有限脉冲响应 状态空间 scipy
2022-02-11 05:55:42

该命令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.tf2sscontrol.matlab.series输入格式scipy.signal.dimpulse

谢谢!

0个回答
没有发现任何回复~