ValueError:输入必须是1级数组使用scipy.signal.ss2zpk时

问题描述

我正在与scipy.signal合作,并且尝试使用scipy.signal.ss2zpk将状态空间表示转换为ZeroPoleGain表示,因为我想更改增益以控制系统。我正在这样做:

A = np.array([[0,1,0],[0,(-3*m*g*l/(4*M + m)),1],3*(M+m)*g/((4*M + m)*l),0]])

B = np.array([[0],[4/(4*M + m)],[0],[-3*F/((4*M + m)*l)]])

C = np.array([
              [1,0]
])

D = np.array([
              [0],[0]
])
sys_zpk = signal.ss2zpk(A,B,C,D)

但是我收到此ValueError:

ValueError                                Traceback (most recent call last)
<ipython-input-64-5eec82e63217> in <module>()
----> 1 sys_zpk = signal.ss2zpk(A,D)

2 frames
/usr/local/lib/python3.6/dist-packages/scipy/signal/lti_conversion.py in ss2zpk(A,D,input)
    332 
    333     """
--> 334     return tf2zpk(*ss2tf(A,input=input))
    335 
    336 

/usr/local/lib/python3.6/dist-packages/scipy/signal/filter_design.py in tf2zpk(b,a)
   1067     k = b[0]
   1068     b /= b[0]
-> 1069     z = roots(b)
   1070     p = roots(a)
   1071     return z,p,k

<__array_function__ internals> in roots(*args,**kwargs)

/usr/local/lib/python3.6/dist-packages/numpy/lib/polynomial.py in roots(p)
    219     p = atleast_1d(p)
    220     if p.ndim != 1:
--> 221         raise ValueError("Input must be a rank-1 array.")
    222 
    223     # find non-zero array entries

ValueError: Input must be a rank-1 array.

有人可以帮助我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)