## Documentation Center |

On this page… |
---|

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?