scipy.signal.impulse2(system, X0=None, T=None, N=None, **kwargs)[source]#

Impulse response of a single-input, continuous-time linear system.

Deprecated since version 1.11.0: Function impulse2 is deprecated in favor of the faster impulse function. impulse2 will be removed in SciPy 1.13.

systeman instance of the LTI class or a tuple of array_like

describing the system. The following gives the number of elements in the tuple and the interpretation:

  • 1 (instance of lti)

  • 2 (num, den)

  • 3 (zeros, poles, gain)

  • 4 (A, B, C, D)

X01-D array_like, optional

The initial condition of the state vector. Default: 0 (the zero vector).

T1-D array_like, optional

The time steps at which the input is defined and at which the output is desired. If T is not given, the function will generate a set of time samples automatically.

Nint, optional

Number of time points to compute. Default: 100.

kwargsvarious types

Additional keyword arguments are passed on to the function scipy.signal.lsim2, which in turn passes them on to scipy.integrate.odeint; see the latter’s documentation for information about these arguments.


The time values for the output.


The output response of the system.


The solution is generated by calling scipy.signal.lsim2, which uses the differential equation solver scipy.integrate.odeint.

As impulse2 is now deprecated, users are advised to switch to the faster and more accurate impulse function. Keyword arguments for scipy.integrate.odeint are not supported in impulse, but not needed in general.

If (num, den) is passed in for system, coefficients for both the numerator and denominator should be specified in descending exponent order (e.g. s^2 + 3s + 5 would be represented as [1, 3, 5]).

New in version 0.8.0.


Compute the impulse response of a second order system with a repeated root: x''(t) + 2*x'(t) + x(t) = u(t)

>>> from scipy import signal
>>> system = ([1.0], [1.0, 2.0, 1.0])
>>> t, y = signal.impulse2(system)
>>> import matplotlib.pyplot as plt
>>> plt.plot(t, y)