markov(Y, U, m=None, transpose=False)¶
Calculate the first m Markov parameters [D CB CAB …] from input U, output Y.
This function computes the Markov parameters for a discrete time system
given data for u and y. The algorithm assumes that that C A^k B = 0 for k > m-2 (see 1). Note that the problem is ill-posed if the length of the input data is less than the desired number of Markov parameters (a warning message is generated in this case).
Y (array_like) – Output data. If the array is 1D, the system is assumed to be single input. If the array is 2D and transpose=False, the columns of Y are taken as time points, otherwise the rows of Y are taken as time points.
U (array_like) – Input data, arranged in the same way as Y.
m (int, optional) – Number of Markov parameters to output. Defaults to len(U).
transpose (bool, optional) – Assume that input data is transposed relative to the standard Time series data. Default value is False.
H – First m Markov parameters, [D CB CAB …]
- Return type
J.-N. Juang, M. Phan, L. G. Horta, and R. W. Longman, Identification of observer/Kalman filter Markov parameters - Theory and experiments. Journal of Guidance Control and Dynamics, 16(2), 320-329, 2012. http://doi.org/10.2514/3.21006
Currently only works for SISO systems.
This function does not currently comply with the Python Control Library Time series data for representation of time series data. Use transpose=False to make use of the standard convention (this will be updated in a future release).
>>> T = numpy.linspace(0, 10, 100) >>> U = numpy.ones((1, 100)) >>> T, Y, _ = forced_response(tf(, [1, 0.5], True), T, U) >>> H = markov(Y, U, 3, transpose=False)