MATLAB Answers

How to convert a input and output arrays of complex numbers to iddata, idfrd or any other models in System Identification Toolbox?

5 views (last 30 days)
Gleb Derzkij
Gleb Derzkij on 22 Jul 2019
Edited: Gleb Derzkij on 17 Aug 2019
Dear colleagues,
Please tel me, how to convert a input and output arrays of complex numbers to iddata, idfrd or any other models in System Identification Toolbox?

  0 Comments

Sign in to comment.

Answers (1)

Rajiv Singh
Rajiv Singh on 29 Jul 2019
  • If you have input-output signals, the data can be packed into an iddata object, using the syntax iddata(y,u,Ts), where y is the matrix of output signals (observations along rows and channels/variables along columns), u is the matrix of input signals and Ts is the sample time. You can apply this to frequency domain signals too: z = iddata(Y,U,Ts,'Frequency',w) creates a "frequency domain" iddata object where Y = fft(y) is the Fourier Transform of time domain signal y etc.
  • If your numerical data represents, (complex) frequency response, use an idfrd object, data = idfrd(response, frequency). In SISO case, response is a complex vector and frequency is a real vector. In MIMO case, response is a 3D matrix since you need to specify a vector for eqach input-output pair. See idfrd reference page for more information on syntax.
  • For model creation by construction (specifying numerical values of parameters manually), use model objects such as idpoly, idss, idproc, idtf. But in System Identification Toolbox, the models are usually created by applying an identification algorithm to a dataset, using syntax similar to model = estimator(data, orders, options...). "estimator" is a function that identified a model based on given data (iddata or idfrd) and associated orders that specify the model structure (number of states, number of poles/zeros etc). See commands like ssest, tfest, procest, arx, armax (etc) that identify different types of models.

  1 Comment

Gleb Derzkij
Gleb Derzkij on 17 Aug 2019
Thanks, Rajiv!
My data is only a complex numbers in input and output vectors, in_out.mat
I dont have any information about frequency vector...
May I split real/imaginery parts into 2 inputs [real(EXin') imag(EXin')] and 2 outputs [real(EXout') imag(EXout')] system?

Sign in to comment.

Sign in to answer this question.