*Correlation analysis* refers to methods
that estimate the impulse response of a linear model, without specific
assumptions about model orders.

The impulse response, *g*, is the system's
output when the input is an impulse signal. The output response to
a general input, *u*(*t*), is obtained
as the convolution with the impulse response. In continuous time:

$$y(t)={\displaystyle {\int}_{-\infty}^{t}g\left(\tau \right)u\left(t-\tau \right)}d\tau $$

In discrete-time:

$$y\left(t\right)={\displaystyle \sum _{k=1}^{\infty}g\left(k\right)u\left(t-k\right)}$$

The values of *g*(*k*) are
the *discrete time impulse response coefficients*.

You can estimate the values from observed input-output data
in several different ways. `impulseest`

estimates
the first *n* coefficients using the least-squares
method to obtain a finite impulse response (FIR) model of order *n*.

Several important options are associated with the estimate:

**Prewhitening**— The input can be pre-whitened by applying an input-whitening filter of order`PW`

to the data. This minimizes the effect of the neglected tail (`k > n`

) of the impulse response.A filter of order

`PW`

is applied such that it whitens the input signal`u`

:`1/A = A(u)e`

, where`A`

is a polynomial and`e`

is white noise.The inputs and outputs are filtered using the filter:

`uf = Au`

,`yf = Ay`

The filtered signals

`uf`

and`yf`

are used for estimation.

You can specify prewhitening using the

`PW`

name-value pair argument of`impulseestOptions`

.**Regularization**— The least-squares estimate can be regularized. This means that a prior estimate of the decay and mutual correlation among`g(k)`

is formed and used to merge with the information about`g`

from the observed data. This gives an estimate with less variance, at the price of some bias. You can choose one of the several kernels to encode the prior estimate.This option is essential because, often, the model order

`n`

can be quite large. In cases where there is no regularization,`n`

can be automatically decreased to secure a reasonable variance.You can specify the regularizing kernel using the

`RegularizationKernel`

Name-Value pair argument of`impulseestOptions`

.**Autoregressive Parameters**— The basic underlying FIR model can be complemented by`NA`

autoregressive parameters, making it an ARX model.$$y\left(t\right)={\displaystyle \sum _{k=1}^{n}g\left(k\right)u\left(t-k\right)}-{\displaystyle \sum _{k=1}^{NA}{a}_{k}y\left(t-k\right)}$$

This gives both better results for small

`n`

and allows unbiased estimates when data are generated in closed loop.`impulseest`

uses NA = 5 for t>0 and NA = 0 (no autoregressive component) for t<0.**Noncausal effects**— Response for negative lags. It may happen that the data has been generated partly by output feedback:$$u(t)={\displaystyle \sum _{k=0}^{\infty}h(k)y\left(t-k\right)}+r\left(t\right)$$

where

*h*(*k*) is the impulse response of the regulator and*r*is a setpoint or disturbance term. The existence and character of such feedback*h*can be estimated in the same way as*g*, simply by trading places between*y*and*u*in the estimation call. Using`impulseest`

with an indication of negative delays, $$\text{mi}=\text{impulseest}(data,nk,nb),\text{}nk0$$, returns a model`mi`

with an impulse response$$\left[h(-nk),h(-nk-1),\mathrm{...},h(0),g(1),g(2),\mathrm{...},g(nb+nk)\right]$$

aligned so that it corresponds to lags $$\left[nk,nk+1,\mathrm{..},0,1,2,\mathrm{...},nb+nk\right]$$. This is achieved because the input delay (

`InputDelay`

) of model`mi`

is`nk`

.

For a multi-input multi-output system, the impulse response *g*(*k*)
is an *ny*-by-*nu* matrix, where *ny* is
the number of outputs and *nu* is the number of inputs.
The *i*–*j* element of the
matrix *g*(*k*) describes the behavior
of the *i*th output after an impulse in the *j*th
input.