Python ValueError:输入必须是秩1数组。使用scipy.signal.ss2zpk时
我正在使用Python ValueError:输入必须是秩1数组。使用scipy.signal.ss2zpk时,python,numpy,scipy,signal-processing,Python,Numpy,Scipy,Signal Processing,我正在使用scipy.signal并尝试使用scipy.signal.ss2zpk将状态空间表示转换为ZeroPoleGain表示,因为我想更改增益以控制系统。我正在这样做: A = np.array([[0, 1, 0, 0], [0, 0, (-3*m*g*l/(4*M + m)), 0], [0, 0, 0, 1], [0, 0, 3*(M+m)*g/((4*M + m)*l), 0]]) B = np
scipy.signal
并尝试使用scipy.signal.ss2zpk
将状态空间表示转换为ZeroPoleGain表示,因为我想更改增益以控制系统。我正在这样做:
A = np.array([[0, 1, 0, 0],
[0, 0, (-3*m*g*l/(4*M + m)), 0],
[0, 0, 0, 1],
[0, 0, 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,0,0],
[0,0,0,0],
[0,0,1,0],
[0,0,0,0]
])
D = np.array([
[0],
[0],
[0],
[0]
])
sys_zpk = signal.ss2zpk(A,B,C,D)
但我得到了一个错误:
ValueError Traceback (most recent call last)
<ipython-input-64-5eec82e63217> in <module>()
----> 1 sys_zpk = signal.ss2zpk(A,B,C,D)
2 frames
/usr/local/lib/python3.6/dist-packages/scipy/signal/lti_conversion.py in ss2zpk(A, B, C, D, input)
332
333 """
--> 334 return tf2zpk(*ss2tf(A, B, C, D, 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.
ValueError回溯(最近一次调用)
在()
---->1系统zpk=信号。ss2zpk(A、B、C、D)
2帧
/ss2zpk中的usr/local/lib/python3.6/dist-packages/scipy/signal/lti_conversion.py(A、B、C、D、input)
332
333 """
-->334返回tf2zpk(*ss2tf(A、B、C、D,输入=输入))
335
336
/tf2zpk中的usr/local/lib/python3.6/dist-packages/scipy/signal/filter_design.py(b,a)
1067K=b[0]
1068 b/=b[0]
->1069 z=根(b)
1070 p=根(a)
1071返回z,p,k
根(*args,**kwargs)
/根中的usr/local/lib/python3.6/dist-packages/numpy/lib/polymonery.py(p)
219 p=至少1d(p)
220如果p.ndim!=1:
-->221 raise VALUERROR(“输入必须是秩1数组”)
222
223#查找非零数组项
ValueError:输入必须是秩1数组。
有人能帮我吗?你的
M,M,g,l的值是多少?我用的是g=9.8,M=1,M=0.1,l=0.5,F=10