Estimate frequency response and spectrum using spectral analysis with frequency-dependent resolution

`g = spafdr(data)`

g = spafdr(data,Resol,w)

`g = spafdr(data)`

estimates the transfer
function and noise spectrum *Φ _{υ}* of
the general linear model

$$y(t)=G(q)u(t)+v(t)$$

where *Φ _{υ}*(

`data`

contains
the output-input data as an `iddata`

object. The
data can be complex valued, and either time or frequency domain. It
can also be an `idfrd`

object containing frequency-response
data. `g`

is an `idfrd`

object
with the estimate of $$G\left({e}^{i\omega}\right)$$ at the frequencies `w`

. `g`

also includes
information about the spectrum estimate of `g`

. The normalization of
the spectrum is the same as described in `spa`

.Information about the estimation results and options used is
stored in the model's `Report`

property. `Report`

has
the following fields:

`Status`

— Summary of the model status, which indicates whether the model was created by construction or obtained by estimation.`Method`

— Estimation command used.`WindowSize`

— Frequency resolution.`DataUsed`

— Attributes of the data used for estimation. Structure with the following fields:`Name`

— Name of the data set.`Type`

— Data type.`Length`

— Number of data samples.`Ts`

— Sample time.`InterSample`

— Input intersample behavior.`InputOffset`

— Offset removed from time-domain input data during estimation.`OutputOffset`

— Offset removed from time-domain output data during estimation.

`g = spafdr(data,Resol,w)`

specifies frequencies
and frequency resolution.

The frequency variable `w`

is either specified
as a row vector of frequencies, or as a cell array `{wmin,wmax}`

.
In the latter case the covered frequencies will be 50 logarithmically
spaced points from `wmin`

to `wmax`

.
You can change the number of points to `NP`

by entering `{wmin,wmax,NP}`

.

Omitting `w`

or entering it as an empty matrix
gives the default value, which is 100 logarithmically spaced frequencies
between the smallest and largest frequency in data. For time-domain
data, this means from `1/N*Ts`

to `pi*Ts`

,
where `Ts`

is the sample time of data and `N`

is
the number of data.

The argument `Resol`

defines the frequency
resolution of the estimates. The resolution (measured in rad/s) is
the size of the smallest detail in the frequency function and the
spectrum that is resolved by the estimate. The resolution is a tradeoff
between obtaining estimates with fine, reliable details, and suffering
from spurious, random effects: The finer the resolution, the higher
the variance in the estimate. `Resol`

can be entered
as a scalar (measured in rad/s), which defines the resolution over
the whole frequency interval. It can also be entered as a row vector
of the same length as `w`

. Then `Resol(k)`

is
the local, frequency-dependent resolution around frequency `w(k)`

.

The default value of `Resol`

, obtained by omitting
it or entering it as the empty matrix, is `Resol(k) = 2(w(k+1)-w(k))`

,
adjusted upwards, so that a reasonable estimate is guaranteed. In
all cases, the resolution is returned in the variable `g.Report.WindowSize`

.

Was this topic helpful?