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