control.impulse_response
- control.impulse_response(sysdata, T=None, input=None, output=None, T_num=None, transpose=False, return_x=False, squeeze=None)[source]
Compute the impulse response for a linear system.
If the system has multiple inputs and/or multiple outputs, the impulse response is computed for each input/output pair, with all other inputs set to zero. Optionally, a single input and/or single output can be selected, in which case all other inputs are set to 0 and all other outputs are ignored.
For information on the shape of parameters T, X0 and return values T, yout, see Time series data.
- Parameters
sysdata (I/O system or list of I/O systems) – I/O system(s) for which impluse response is computed.
T (array_like or float, optional) – Time vector, or simulation time duration if a scalar (time vector is autocomputed if not given; see
step_response()
for more detail)input (int, optional) – Only compute the impulse response for the listed input. If not specified, the impulse responses for each independent input are computed.
output (int, optional) – Only report the step response for the listed output. If not specified, all outputs are reported.
T_num (int, optional) – Number of time steps to use in simulation if T is not provided as an array (autocomputed if not given); ignored if sys is discrete-time.
transpose (bool, optional) – If True, transpose all input and output arrays (for backward compatibility with MATLAB and
scipy.signal.lsim()
). Default value is False.return_x (bool, optional) – If True, return the state vector when assigning to a tuple (default = False). See
forced_response()
for more details.squeeze (bool, optional) – By default, if a system is single-input, single-output (SISO) then the output response is returned as a 1D array (indexed by time). If squeeze=True, remove single-dimensional entries from the shape of the output even if the system is not SISO. If squeeze=False, keep the output as a 2D array (indexed by the output number and time) even if the system is SISO. The default value can be set using config.defaults[‘control.squeeze_time_response’].
- Returns
results – Time response represented as a
TimeResponseData
object or list ofTimeResponseData
objects. Seeforced_response()
for additional information.- Return type
TimeResponseData or TimeResponseList
See also
Notes
This function uses the forced_response function to compute the time response. For continuous time systems, the initial condition is altered to account for the initial impulse. For discrete-time aystems, the impulse is sized so that it has unit area. The impulse response for nonlinear systems is not implemented.
Examples
>>> G = ct.rss(4) >>> T, yout = ct.impulse_response(G)