Main Content

Estimate frequency response with fixed frequency resolution using spectral analysis

estimates the frequency response, along with
uncertainty,
and the noise spectrum from time- or frequency-domain data
`G`

= spa(`data`

)`data`

. If `data`

is a time series,
`spa`

(`data)`

returns the output power
spectrum along with uncertainty. `spa`

computes the spectra at
128 equally spaced frequency values between 0 (excluded) and π, using a Hann
window.

`spa`

applies the Blackman-Tukey spectral analysis method by
following these steps:

Compute the covariances and cross-covariance from

*u*(*t*) and*y*(*t*):$$\begin{array}{l}{\widehat{R}}_{y}\left(\tau \right)={\scriptscriptstyle \frac{1}{N}}{\displaystyle \sum _{t=1}^{N}y\left(t+\tau \right)y\left(t\right)}\\ {\widehat{R}}_{u}\left(\tau \right)={\scriptscriptstyle \frac{1}{N}}{\displaystyle \sum _{t=1}^{N}u\left(t+\tau \right)u\left(t\right)}\\ {\widehat{R}}_{yu}\left(\tau \right)={\scriptscriptstyle \frac{1}{N}}{\displaystyle \sum _{t=1}^{N}y\left(t+\tau \right)u\left(t\right)}\end{array}$$

Compute the Fourier transforms of the covariances and the cross-covariance:

$$\begin{array}{l}{\widehat{\Phi}}_{y}(\omega )={\displaystyle \sum _{\tau =-M}^{M}{\widehat{R}}_{y}}(\tau ){W}_{M}(\tau ){e}^{-i\omega \tau}\\ {\widehat{\Phi}}_{u}(\omega )={\displaystyle \sum _{\tau =-M}^{M}{\widehat{R}}_{u}}(\tau ){W}_{M}(\tau ){e}^{-i\omega \tau}\\ {\widehat{\Phi}}_{yu}(\omega )={\displaystyle \sum _{\tau =-M}^{M}{\widehat{R}}_{yu}}(\tau ){W}_{M}(\tau ){e}^{-i\omega \tau}\end{array}$$

where $${W}_{M}(\tau )$$ is the Hann window with a width (lag size) of

*M*. You can specify*M*to control the frequency resolution of the estimate, which is approximately equal to 2π/*M*rad/sample time.By default, this operation uses 128 equally spaced frequency values between 0 (excluded) and π, where

`w`

=`[1:128]/128*pi/Ts`

and`Ts`

is the sample time of that data set. The default lag size of the Hann window is`M = min(length(data)/10,30)`

. For default frequencies, the operation uses fast Fourier transforms (FFT), which are more efficient than for user-defined frequencies.Compute the frequency-response function $${\widehat{G}}_{N}\left({e}^{i\omega}\right)$$ and the output noise spectrum $${\widehat{\Phi}}_{v}(\omega )$$.

$${\widehat{G}}_{N}\left({e}^{i\omega}\right)=\frac{{\widehat{\Phi}}_{yu}\left(\omega \right)}{{\widehat{\Phi}}_{u}\left(\omega \right)}$$

$${\Phi}_{v}(\omega )\equiv {\displaystyle \sum _{\tau =-\infty}^{\infty}{R}_{v}}(\tau ){e}^{-iw\tau}$$

`spectrum`

is the spectrum matrix for both the output and the input
channels. That is, if `z = [data.OutputData`

,
`data.InputData]`

, `spectrum`

contains as spectrum
data the matrix-valued power spectrum of `z`

.

$$S={\displaystyle \sum _{m=-M}^{M}Ez\left(t+m\right)z}{\left(t\right)}^{\prime}{W}_{M}\left({T}_{s}\right)\mathrm{exp}\left(-i\omega m\right)$$

Here, `'`

is a complex-conjugate transpose.

[1] Ljung, Lennart.
*System Identification: Theory for the User*. 2nd ed. Prentice
Hall Information and System Sciences Series. Upper Saddle River, NJ: Prentice Hall PTR,
1999.