Manipulating Complex-Valued Data
Supported Operations for Complex Data
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.
Processing Complex iddata Signals at the Command Line
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