| System Identification Toolbox | Search  Help Desk |
| idinput | See Also |
Generate signals, typically to be used as inputs for identification.
u = idinput(N) u = idinput(N,type,band,levels) u = idinput(N,'sine',band,levels,auxvar)
idinput generates input signals of different kinds, that are typically used for identification purposes. Only scalar inputs are generated.
N is the number of data points generated, i.e., the length of u.
type defines the type of input signal to be generated. This argument takes one of the following values:
type = 'rs' : This gives a random, Gaussian signal.
type = 'rbs': This gives a random, binary signal.
type = 'prbs': This gives a pseudo-random, binary signal.
type = 'sine': This gives a signal which is a sum of sinusoids.
type = 'rbs'.
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
band = [wlow, whigh]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.
For the choice type = 'prbs' we have
band = [twologp, M]where the periodicity of the generated PRBS is
2^twologp -1, and M is such that the signal is constant over intervals of length 1/M. twologp = 0 gives the maximum length PRBS, corresponding to twologp = 18. Also in this case the default is band = [0 1].
The argument levels defines the input level. It is a row vector
levels = [minu, maxu]such that the signal u will always be between the values
minu and maxu for the choices type = 'rbs', 'prbs' and 'sine'. For type = 'rs', 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.
For the option type = 'sine', there is a fourth argument
auxvar = [no_of_sinusoids, no_of_trials]determining the number of sinusoids to be used in the input signal. The variable
no_of_trials determines how many trials to be made to minimize the signal amplitude by assigning random phases to the different sinusoids. Default is auxvar = [10, 10].
Very simple algorithms are used. The frequency contents is achieved for 'rs' by an eighth order Butterworth, non-causal 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 pass band, 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.)
The Frequency Domain System Identification Toolbox contains several commands for input design that utilize more sophisticated algorithms.
For PRBS, see, e.g., Söderström and Stoica (1989), Chapter C5.3.