The command scipy.signal.dimpulse(system, x0=None, t=None, n=None)
does not seem to accept a scipy StateSpace
as an input to its system
parameter.
Here is my code, and the error. The goal is to generate a series of k-th order Laguerre basis functions.
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)
The last command gives this error message:
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__
Also, the control.tf2ss
command returns an 'instance', not a 'StateSpace', which seems unusual.
How can I translate the outputs from control.tf2ss
and control.matlab.series
into acceptable input formats to the scipy.signal.dimpulse
system?
Thank you!