timeresp
¶
Functions:
Name | Description |
---|---|
forced_response |
Compute the output of a linear system given the input. |
forced_response
¶
forced_response(
sysdata,
T=None,
U=0.0,
X0=0.0,
transpose=False,
params=None,
interpolate=False,
return_x: bool = None,
squeeze=None,
)
Compute the output of a linear system given the input.
As a convenience for parameters U
, X0
:
Numbers (scalars) are converted to constant arrays with the correct shape.
The correct shape is inferred from arguments sys
and T
.
For information on the shape of parameters U
, T
, X0
and
return values T
, yout
, xout
, see :ref:time-series-convention
.
Parameters¶
sysdata : I/O system or list of I/O systems I/O system(s) for which forced response is computed.
array_like, optional for discrete LTI sys
Time steps at which the input is defined; values must be evenly spaced.
If None, U
must be given and len(U)
time steps of sys.dt are
simulated. If sys.dt is None or True (undetermined time step), a time
step of 1.0 is assumed.
array_like or float, optional
Input array giving input at each time T
.
If U
is None or 0, T
must be given, even for discrete
time systems. In this case, for continuous time systems, a direct
calculation of the matrix exponential is used, which is faster than the
general interpolating algorithm used otherwise.
array_like or float, default=0.
Initial condition.
dict, optional
If system is a nonlinear I/O system, set parameter values.
bool, default=False
If True, transpose all input and output arrays (for backward
compatibility with MATLAB and :func:scipy.signal.lsim
).
bool, default=False
If True and system is a discrete time system, the input will
be interpolated between the given time steps and the output
will be given at system sampling rate. Otherwise, only return
the output at the times given in T
. No effect on continuous
time simulations.
bool, default=None
Used if the time response data is assigned to a tuple:
-
If False, return only the time and output vectors.
-
If True, also return the the state vector.
-
If None, determine the returned variables by config.defaults['forced_response.return_x'], which was True before version 0.9 and is False since then.
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
is True, remove single-dimensional entries from the shape of
the output even if the system is not SISO. If squeeze
is False, keep
the output as a 2D array (indexed by the output number and time)
even if the system is SISO. The default behavior can be overridden by
config.defaults['control.squeeze_time_response'].
Returns¶
results : :class:TimeResponseData
or :class:TimeResponseList
Time response represented as a :class:TimeResponseData
object or
list of :class:TimeResponseData
objects containing the following
properties:
* time (array): Time values of the output.
* outputs (array): Response of the system. If the system is SISO and
`squeeze` is not True, the array is 1D (indexed by time). If the
system is not SISO or `squeeze` is False, the array is 2D (indexed
by output and time).
* states (array): Time evolution of the state vector, represented as
a 2D array indexed by state and time.
* inputs (array): Input(s) to the system, indexed by input and time.
The `plot()` method can be used to create a plot of the time
response(s) (see :func:`time_response_plot` for more information).
See Also¶
step_response, initial_response, impulse_response, input_output_response
Notes¶
-
For discrete time systems, the input/output response is computed using the :func:
scipy.signal.dlsim
function. -
For continuous time systems, the output is computed using the matrix exponential
exp(A t)
and assuming linear interpolation of the inputs between time points. -
If a nonlinear I/O system is passed to
forced_response
, theinput_output_response
function is called instead. The main difference betweeninput_output_response
andforced_response
is thatforced_response
is specialized (and optimized) for linear systems.