微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。