Closed
Description
Discussed in #747
Originally posted by fhchl June 29, 2022
I had some code that I wanted to port from using scipy.signal.StateSpace
etc. to python-control
. There seems to be some scaling difference between the two implementations. What am I overlooking?
import numpy as np
import control
import scipy.signal
# random state space matrices
t= np.linspace(0, 10, dtype=float)
ss = control.drss(3, 2, 1)
A, B, C, D = ss.A, ss.B, ss.C, ss.D
dt = t[1]
# compute impulse response with python-control
ss = control.ss(A, B, C, D, dt=dt)
t_control, h_control = control.impulse_response(ss, T=t)
plt.figure()
plt.plot(t_control, h_control[0, 0])
plt.plot(t_control, h_control[1, 0])
# compute impulse response with scipy.signal
ss_scipy = scipy.signal.StateSpace(A, B, C, D, dt=dt)
t_scipy, (h_scipy,) = scipy.signal.dimpulse(ss_scipy, t=t)
plt.figure()
plt.plot(t_scipy, h_scipy[:, 0])
plt.plot(t_scipy, h_scipy[:, 1])
plt.show()
Creates these two here.
Metadata
Metadata
Assignees
Labels
No labels