System Identification Toolbox™ estimation algorithms support
complex data. For example, the following estimation commands estimate
complex models from complex data: `ar`

, `armax`

, `arx`

, `bj`

, `ivar`

, `iv4`

, `oe`

, `pem`

, `spa`

, `tfest`

, `ssest`

,
and `n4sid`

.

Model transformation routines, such as `freqresp`

and `zpkdata`

,
work for complex-valued models. However, they do not provide pole-zero
confidence regions. For complex models, the parameter variance-covariance
information refers to the complex-valued parameters and the accuracy
of the real and imaginary is not computed separately.

The display commands `compare`

and `plot`

also
work with complex-valued data and models. To plot the real and imaginary
parts of the data separately, use` plot(real(data))`

and `plot(imag(data))`

,
respectively.

If the `iddata`

object `data`

contains
complex values, you can use the following commands to process the
complex data and create a new `iddata`

object.

Command | Description |
---|---|

`abs(data)` | Absolute value of complex signals in `iddata` object. |

`angle(data)` | Phase angle (in radians) of each complex signals in `iddata` object. |

`complex(data)` | For time-domain data, this command makes the `iddata` object
complex—even when the imaginary parts are zero. For frequency-domain
data that only stores the values for nonnegative frequencies, such
that `realdata(data)=1` , it adds signal values for
negative frequencies using complex conjugation. |

`imag(data)` | Selects the imaginary parts of each signal in `iddata` object. |

`isreal(data)` | `1` when `data` (time-domain
or frequency-domain) contains only real input and output signals,
and returns `0` when `data` (time-domain
or frequency-domain) contains complex signals. |

`real(data)` | Real part of complex signals in `iddata` object. |

`realdata(data)` | Returns a value of `1` when `data` is
a real-valued, time-domain signal, and returns `0` otherwise. |

For example, suppose that you create a frequency-domain `iddata`

object `Datf`

by
applying `fft`

to a real-valued
time-domain signal to take the Fourier transform of the signal. The
following is true for `Datf`

:

isreal(Datf) = 0 realdata(Datf) = 1

Was this topic helpful?