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 of TimeResponseData objects. See forced_response() for additional information.

Return type

TimeResponseData or TimeResponseList

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)