System Identification Toolbox | ![]() ![]() |
Generate signals, typically to be used as inputs for identification.
Syntax
Description
idinput
generates input signals of different kinds, that are typically used for identification purposes. u is returned as a matrix or column vector.
For further use in the toolbox it is recommended to create an iddata
object from u
, indicating sampling time, input names, periodicity, and so on: u = iddata([],u)
;
N
determines the number of generated input data. If N
is a scalar, u
will be a column vector with this number of rows.
N = [N nu]
gives an input with nu
input channels each of length N
.
N = [P nu M]
gives a periodic input with nu
channels, each of length M*P
and periodic with period P.
type
defines the type of input signal to be generated. This argument takes one of the following values:
type =
'rgs
': Gives a random, Gaussian signal.
type =
'rbs
': Gives a random, binary signal.
type =
'prbs
': Gives a pseudo-random, binary signal.
type =
'sine
': Gives a signal which is a sum of sinusoids.
The frequency contents of the signal is determined by the argument band
. For the choices type =
'rs
', 'rbs
', and 'sine
', this argument is a row-vector with two entries
that determine the lower and upper bound of the pass-band. The frequencies wlow
and whigh
are expressed in fractions of the Nyquist frequency. A white noise character input is thus obtained for band = [0 1]
, which also is the default value.
where B
is such that the signal is constant over intervals of length 1/B (the clock period)
. Also in this case the default is band = [0 1]
.
The argument levels
defines the input level. It is a row vector
such that the signal u
will always be between the values minu
and maxu
for the choices type =
'rbs
',
'prbs
' and 'sine
'. For type =
'rgs
', the signal level is such that minu
is the mean value of the signal, minus one standard deviation, while maxu
is the mean value plus one standard deviation. Gaussian white noise with zero mean and variance one is thus obtained for levels = [-1, 1]
, which is also the default value.
In the 'sine'
case, the sinusoids are chosen from the frequency grid
(for Grid_Skip,
see below.) For multi-input signals, the different inputs use different frequencies from this grid. An integer number of full periods is always delivered. The selected frequencies are obtained as the second output argument, freqs
, where row ku
of freqs
contains the frequencies of input number ku
. The resulting signal is affected by a fifth input argument sinedata
meaning that No_of_Sinusoids
is equally spread over the indicated band
. No_of_Trials
(different, random, relative phases) are tried until the lowest amplitude signal is found.
Grid-skip
may be useful for controlling odd and even frequency multiples, e.g., to detect nonlinearities of various kinds.
Algorithm
Very simple algorithms are used. The frequency contents is achieved for 'rgs'
by an eighth order Butterworth, noncausal filter, using idfilt
. This is quite reliable. The same filter is used for the 'rbs
' case, before making the signal binary. This means that the frequency contents is not guaranteed to be precise in this case.
For the
'sine
' case, the frequencies are selected to be equally spread over the chosen grid, and each sinusoid is given a random phase. A number of trials are made, and the phases that give the smallest signal amplitude are selected. The amplitude is then scaled so as to satisfy the specifications of levels
.
Reference
See Söderström and Stoica (1989), Chapter C5.3. For a general discussion of input signals, see Ljung (1999), Section 13.3.
![]() | idgrey | idmodel | ![]() |