scipy.signal.impulse2#
- 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
impulse2is deprecated in favor of the fasterimpulsefunction.impulse2will be removed in SciPy 1.13.- Parameters:
- 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 toscipy.integrate.odeint; see the latter’s documentation for information about these arguments.
- Returns:
- Tndarray
The time values for the output.
- youtndarray
The output response of the system.
See also
Notes
The solution is generated by calling
scipy.signal.lsim2, which uses the differential equation solverscipy.integrate.odeint.As
impulse2is now deprecated, users are advised to switch to the faster and more accurateimpulsefunction. Keyword arguments forscipy.integrate.odeintare not supported inimpulse, 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 + 5would be represented as[1, 3, 5]).New in version 0.8.0.
Examples
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)