## Estimation Input Signals

Frequency response estimation requires an input signal to excite the model at frequencies of interest. The software then measures the response at the specified output, using the input signal and measured response to estimate the frequency response.

When you perform frequency response estimation, you specify what type of input signal to use and what its properties are.

### Offline Estimation

The following table summarizes the types of input signals you can use for offline
estimation in **Model Linearizer** or at the MATLAB^{®} command line for use with `frestimate`

.

Signal | Description |
---|---|

Sinestream | A series of sinusoidal perturbations applied one after another. Sinestream signals are recommended for most situations. They are especially useful when your system contains strong nonlinearities or you require highly accurate frequency response models. |

Chirp | A swept-frequency signal that excites your system at a range of frequencies, such that the input frequency changes instantaneously. Chirp signals are useful when your system is nearly linear in the simulation range. They are also useful when you want to obtain a response quickly for a lot of frequency points. |

PRBS | A deterministic pseudorandom binary sequence that shifts between two values and has white-noise-like properties. PRBS signals reduce total estimation time compared to using sinestream input signals, while producing comparable estimation results. PRBS signals are useful for estimating frequency responses for communications and power electronics systems. |

Random | A random input signal. Random signals are useful because they can excite the system uniformly at all frequencies up to the Nyquist frequency. |

Step | A step input signal. Step inputs are quick to simulate and can be useful as a first try when you do not have much knowledge about the system you are trying to estimate. |

Arbitrary | A MATLAB timeseries with which you can specify any time-varying signal as input. |

In general, the estimated frequency response is related to the input and output signals as:

$$Resp=\frac{FFT\left({y}_{est}(t)\right)\text{\hspace{0.17em}}}{FFT\left({u}_{est}(t)\right)}.$$

Here, *u _{est}*(

*t*) is the injected input signal and

*y*(

_{est}*t*) is the corresponding simulated output signal. For more details, see the Algorithms section of

`frestimate`

.### Online Estimation

For online estimation with the Frequency Response Estimator block, you can use two types of input signals:

Sinestream — A series of sinusoidal perturbations applied one after another

Superposition — A set of sinusoidal perturbations applied simultaneously

For online estimation, using a sinestream signal can be more accurate and can accommodate a wider range of frequencies than a superposition signal. The sinestream mode can also be less intrusive. However, due to the sequential nature of the sinestream perturbation, each frequency point you add increases the experiment time. Thus the estimation experiment is typically much faster with a superposition signal with satisfactory results.

To specify which type of input signal to use for online estimation, use the
**Experiment mode** parameter of the Frequency Response
Estimator block.

### Sinestream Signals

For details about the structure of sinestream signals and how to create them, see Sinestream Input Signals.

### Chirp Signals

For details about the structure of chirp signals and how to create them, see Chirp Input Signals.

### PRBS Signals

For details about the structure of PRBS signals and how to create them, see PRBS Input Signals.

### Random Signals

Random signals are useful because they can excite the system uniformly at all frequencies up to the Nyquist frequency. To create a random input signal for estimation:

In the

**Model Linearizer**, on the**Estimation**tab, select**Input Signal**>**Random**.At the command line, use

`frest.Random`

to create the random signal and use it as an input argument to`frestimate`

.

The random signal comprises uniformly distributed random numbers in the interval
`[0 Amplitude]`

or `[Amplitude 0]`

for positive and
negative amplitudes, respectively. You can specify the amplitude, sample time, and number of
samples directly when you create the input signal. Alternatively, if you have a relevant
linear time-invariant (LTI) model such as a state-space (`ss`

) model, you
can use it to initialize the random signal parameters. For instance, if you have an exact
linearization of your system, you can use it to initialize the parameters.

When you use a random input signal for estimation, the frequencies returned in the
estimated `frd`

model depend on the length and sampling time of the
signal. They are the frequencies obtained in the fast Fourier transform of the input signal
(see the Algorithm section of `frestimate`

).

### Step Signals

Step inputs are quick to simulate. Like a random signal, a step signal can excite the system at all frequencies up to the Nyquist frequency. For those reasons, a step input can be useful as a first try when you do not have much knowledge about the system you are trying to estimate. However, the amplitude of the excitation decreases rapidly with increasing frequency. Therefore, step signals are best used to identify low-order plants where the slowest poles are dominant. Step inputs are not recommended for estimation across a wide range of frequencies.

To create a step input signal for estimation, use `frest.createStep`

. This function creates a MATLAB
`timeseries`

that represents a step input having the sample time, step
time, step size, and total signal length that you specify when you call
`frest.createStep`

.

To use the step input signal you created in the MATLAB workspace:

In the

**Model Linearizer**, on the**Estimation**tab, select it from the**Existing Input Signals**section of the**Input Signal**drop-down list.At the command line, use it as an input argument to

`frestimate`

.

When you use a step input signal for estimation, the frequencies returned in the
estimated `frd`

model depend on the length and sampling time of the
signal. They are the frequencies obtained in the fast Fourier transform of the input signal
(see the Algorithm section of `frestimate`

).

### Arbitrary Signals

If you want to use a signal other than a sinestream, chirp, step, or random signal, you
can provide your own MATLAB
`timeseries`

object. For instance, you can
create a `timeseries`

representing a ramp, sawtooth, or square wave
input.

To use a `timeseries`

object as the input signal for estimation, first
create the `timeseries`

in the MATLAB workspace. Then:

In the

**Model Linearizer**, on the**Estimation**tab, select it from the**Existing Input Signals**section of the**Input Signal**drop-down list.At the command line, use it as an input argument to

`frestimate`

.

When you use an arbitrary input signal for estimation, the frequencies returned in the
estimated `frd`

model depend on the length and sampling time of the
signal. They are the frequencies obtained in the fast Fourier transform of the input signal
(see the Algorithm section of `frestimate`

).

### Superposition Signals

Superposition signals are available only for online estimation with the Frequency Response
Estimator block. For frequency response estimation at a vector of frequencies
*ω* = [*ω*_{1}, … ,
*ω _{N}*] at amplitudes

*A*= [

*A*

_{1}, … ,

*A*], the superposition signal is given by:

_{N}$$\Delta u={\displaystyle \sum _{i}{A}_{i}\mathrm{sin}\left({\omega}_{i}t\right)}.$$

The block supplies the perturbation Δ*u* for the duration of the experiment (while the **start/stop** signal is positive). The block determines how long to wait for system transients to die away and how many cycles to use for estimation as shown in the following illustration.

*T _{exp}* is the experiment duration that you specify
with your configuration of the start/stop signal (See the

**start/stop**port description on the block reference page for more information). For the estimation computation, the block uses only the data collected in a window of

*N*. Here,

_{longest}P*P*is the period of the slowest frequency in the frequency vector

*ω*, and

*N*is the value of the

_{longest}**Number of periods of the lowest frequency used for estimation**block parameter. Any cycles before this window are discarded. Thus, the settling time

*T*=

_{settle}*T*–

_{exp}*N*. If you know that your system settles quickly, you can shorten

_{longest}P*T*without changing

_{exp}*N*to effectively shorten

_{longest}*T*. If your system is noisy, you can increase

_{settle}*N*to get more averaging in the data-collection window. Either way, always choose

_{longest}*T*long enough for sufficient settling and sufficient data-collection. The recommended

_{exp}*T*= 2

_{exp}*N*.

_{longest}PTo use a superposition signal for estimation, in the Frequency Response
Estimator block, set the **Experiment mode** parameter to
**Superposition**. For details, see Frequency Response
Estimator.

## See Also

`frestimate`

| `frest.createStep`

| `frest.Random`

| `frest.Sinestream`

| `frest.Chirp`

| `frest.PRBS`