sys = impulseest(data) estimates
an impulse response model, sys,
using time- or frequency-domain data, data. The
model order (number of nonzero impulse response coefficients)
is determined automatically using persistence of excitation analysis
on the input data.

sys = impulseest(data,N) estimates
an Nth order impulse response model, corresponding
to the time range 0 :Ts : (N –1)*Ts,
where Ts is the data sampling time.

sys = impulseest(data,N,NK) specifies
a transport delay of NK samples in the estimated
impulse response.

sys = impulseest(___,options) specifies
estimation options using the options set options.

Use nonparametric impulse response to analyze data for
feedback effects, delays and significant time constants.

Input Arguments

data

Estimation data with at least one input signal and nonzero sample
time.

For time domain estimation, data is an iddata object
containing the input and output signal values.

For frequency domain estimation, data can
be one of the following:

iddata object with its properties
specified as follows:

InputData — Fourier transform
of the input signal

OutputData — Fourier transform
of the output signal

Domain — ‘Frequency'

N

Order of the FIR model. Must be one of the following:

A positive integer.

For data containing Nu inputs and Ny outputs,
you can also specify N as an Ny-by-Nu matrix
of positive integers, such that N(i,j) represents
the length of impulse response from input j to
output i.

[] — Determines the order
automatically using persistence of excitation analysis on the input
data.

NK

Transport delay in the estimated impulse response, specified
as a scalar integer. For data containing Nu inputs
and Ny outputs, you can also specify a Ny-by-Nu matrix.

To generate the impulse response coefficients for
negative time values, which is useful for feedback analysis, use a
negative integer. If you specify a negative value, the value must
be the same across all output channels.

You can also use NK = 'negative' to automatically
pick negative lags for all input/output channels of the model.

Specify NK = 0 if the delay is
unknown. The true delay is then be indicated by insignificant impulse
response values in the beginning of the response.

Specify NK = 1 to create a system
whose leading numerator coefficient is zero.

Positive values of NK greater than 1 are
stored in the ioDelay property of sys (sys.ioDelay
= max(NK-1,0)). Negative values are stored in the InputDelay property.

The impulse response (input j to output i)
coefficients correspond to the time span NK(i,j)*Ts : Ts
: (N(ij)+NK(i,j)-1)*Ts.

Compute a nonparametric impulse response model using data from a hair dryer. The input is the voltage applied to the heater and the output is the heater temperature. Use the first 500 samples for estimation.

load dry2
ze = dry2(1:500);
sys = impulseest(ze);

ze is an iddata object that contains time-domain data. sys, the identified nonparametric impulse response model, is an idtf model.

Analyze the impulse response of the identified model from time 0 to 1.

h = impulseplot(sys,1);

Right-click the plot and select Characteristics>Confidence Region to view the statistically zero-response region. Alternatively, you can use the showConfidence command.

showConfidence(h);

The first significantly nonzero response value occurs at 0.24 seconds, or, the third lag. This implies that the transport delay is 3 samples. To generate a model where the 3-sample delay is imposed, set the transport delay to 3:

As the plot shows, using regularization makes the response smoother.

Plot the confidence interval.

showConfidence(h);

The uncertainty in the computed response is reduced at larger lags for the model using regularization. Regularization decreases variance at the price of some bias. The tuning of the regularization is such that the bias is dominated by the variance error though.

Use the empirical impulse response of the measured data to verify whether there are feedback effects. Significant amplitude of the impulse response for negative time values indicates feedback effects in data.

Compute the noncausal impulse response using a fourth-order prewhitening filter, automatically chosen order and negative lag using nonregularized estimation.

sys is a noncausal model containing response values for negative time.

Analyze the impulse response of the identified model.

h = impulseplot(sys);

View the statistically zero-response region by right-clicking on the plot and selecting Characteristics>Confidence Region. Alternatively, you can use the showConfidence command.

showConfidence(h);

The large response value at t=0 (zero lag) suggests that the data comes from a process containing feedthrough. That is, the input affects the output instantaneously. There could also be a direct feedback effect (proportional control without some delay that u(t) is determined partly by y(t)).

Also, the response values are significant for some negative time lags, such as at -7 seconds and -9 seconds. Such significant negative values suggest the possibility of feedback in the data.

To view the impulse or step response of sys, use either impulseplot or stepplot,
respectively.

A significant value of the impulse response of sys for negative time values indicates
the presence of feedback in the data.

To view the region of insignificant impulse response
(statistically zero) in a plot, right-click on the plot and select Characteristics > Confidence
Region. A patch depicting the zero-response
region appears on the plot. The impulse response at any time value
is significant only if it lies outside the zero response region. The
level of significance depends on the number of standard deviations
specified in ShowConfidence or
options in the property editor. A common choice is 3 standard deviations,
which gives 99.7% significance.

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:

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 RegulKernel 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.

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:

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

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 ith output after an impulse in the jth
input.