## Sinestream Input Signals

In frequency response estimation, a *sinestream* signal consists of
sine waves of varying frequencies applied one after another. Each frequency excites the system
for a period of time.

You can use a sinestream input signal for estimation at the command line, in Model Linearizer, or with the Frequency Response Estimator block. The estimation algorithm injects the sinestream signal at the input point you specify for estimation, and measures the response at the output point.

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. The frequency-response model that results when you use a sinestream input contains all the frequencies in the sinestream signal.

When you create your sinestream input signal, you specify the following parameters for each frequency:

Number of periods for ramping up the signal to its maximum value

Number of settling periods

Total number of periods.

The number of *estimation periods* is the total number of periods
minus the number of settling periods. The estimation algorithms discard response data
collected during the *ramp periods* and *settling
periods* time frames. Doing so allows any transient responses to die out. The
algorithm uses data collected during the estimation periods to compute the estimated frequency
response.

(In offline estimation, if FIR filtering is on, the software also discards the first
estimation period as shown in the illustration. For details about the offline and online
estimation algorithms, see the Algorithms sections of `frestimate`

and Frequency Response
Estimator, respectively.)

### Create Sinestream Signals Using Model Linearizer

In the Model Linearizer, to use a sinestream input signal for estimation, on
the **Estimation** tab, select:

**Input Signal**>**Sinestream**when the sample time of the I/Os is continuous.**Input Signal**>**Fixed Sample Time Sinestream**when the sample time of the I/Os is discrete.

You can specify the frequencies to use in the sinestream in one of two ways:

Manually, as shown in Estimate Frequency Response Using Model Linearizer

Based on the dynamics of a linear model, such as a linearization of your system, as shown in Estimate Frequency Response with Linearization-Based Input Using Model Linearizer

Other parameters you can specify for a sinestream signal in Model Linearizer include:

**Amplitude**— Amplitude of injected sine waves**Number of periods**— Total number of periods at each frequency**Settling periods**— Number of periods to discard for the estimation computation**Ramp periods**— Number of periods for ramping up the amplitude of each sine wave to its maximum value**Perform filtering to improve estimation results**— Filter the response data before estimating frequency response (see the Algorithms section of`frestimate`

)

### Create Sinestream Signals Using MATLAB Code

To create a sinestream signal for estimation at the command line with
`frestimate`

, use:

`frest.Sinestream`

— Use when signal at input linearization point is continuous.`frest.createFixedTsSinestream`

— Use when signal at input linearization point is discrete.

### Sinestream Signals for Online Estimation

You can use a sinestream signal for online estimation with the Frequency Response
Estimator block. To do so, set the **Experiment mode** parameter
to **Sinestream**. Other relevant block parameters include:

**Frequencies**— Vector of frequencies for the sinestream signal.**Amplitudes**— Signal amplitudes. You can specify a single amplitude for all frequencies, or separate amplitudes for each frequency.**Number of settling periods**— Number of periods to discard for the estimation computation.**Number of estimation periods**— Number of periods to use in the estimation computation.

For details, see the Frequency Response Estimator block reference page.

### Create Sinestream Signals in Simulink

*Since R2024a*

To create a sinestream signal for estimation in Simulink^{®}, use the Sinestream Signal
Generator block. This block is helpful when you to generate perturbation signals
to inject in your plant models in desktop simulation or on hardware through code generation.
You can then collect the plant response data to the perturbation signal and perform custom
processing to identify plant characteristics.

## See Also

`frest.Sinestream`

| `frest.createFixedTsSinestream`