Identification of MISO / MIMO models based on transfer functions: poles multiply contained in resulting model

12 views (last 30 days)
Dear all,
I am attempting to identify a MIMO model (2 Inputs, 5 Outputs) using the System Identification Toolbox. For some reason the identification of state-space models does not give satisfactory results. I can however identify SISO transfer function models and even MISO transfer-functions quite well.
Now here is the snag: when I combine the 10 SISO models into a 5x2 transfer-matrix and use "pole", every single pole appears twice in the model. This also holds for the identification of 2 input / 1 output models using tfest. Every pole twice.
Looking at the state-space representation of the models, I get a block diagonal system-matrix where all of the main diagonal blocks are identical :-( so every pole IS represented twice.
That's definitely a bit of a bother, as I want to do the following:
1.) augment the system stability using one input and one output. 2.) use PI-controllers to control two of the outputs.
which does work in theory and practice, though not with the models obtained from the identification toolbox, as the poles of the different transfer-functions don't interact.
And considering the transfer-matrix derived from a state-space model: this gives G(s) = C*(s*I-A)^(-1)*B where the poles result from the inversion of (s*I-A) and are the same for all transfer-functions.
Is there a simple and / or elegant way to force the identification toolbox to give me a transfer-matrix that does not contain the same poles n-times each?
Thanks in advance,
best regards,
Marc
  1 Comment
Ryan G
Ryan G on 14 May 2013
It sounds like your system is highly coupled and therefore you can't achieve satisfactory identification on a SISO basis. What methods are you using to obtain your model using sys ID? What functions/processes are you using to obtain the MIMO sys id?

Sign in to comment.

Answers (3)

clement Batie
clement Batie on 2 Apr 2016
i want the codes to perform that

Rajiv Singh
Rajiv Singh on 15 May 2013
The repeated poles are probably a result of concatenation; do pole(ss(zpk(rss(2,2,2)))) to check this phenomenon. You can use SMINREAL, MINREAL or BALRED to perform a reduction to eliminate pole-zero cancellations.
You can then even run some iterations on the reduced model (using TFEST or SSEST) to fine tune the left over coefficients of the MIMO system.

Marc
Marc on 15 May 2013
Edited: Marc on 15 May 2013
Thanks guys for the answers.
Yes, the system is strongly coupled, and yes the User Manual states that (horizontal) concatenation can do that for you. But the UM also implies, that you can do vertical concatenation without having this effect. So we tried to identify transfer-function and state-space models having one output and two inputs each.
No success: the state-space models' simulated output didn't even come close to the measured responses having fits of less than 25 percent. The resulting transfer-matrix gave us excellent fits (>95 percent) yet: poles multiplied. And: no pole-zero-cancellations, so minreal / balred didn't work.
Any further ideas?
  1 Comment
Rajiv Singh
Rajiv Singh on 15 May 2013
The poles could duplicate for vertical concatenations too: try sys = rss(2); sys2 = [sys; sys]; pole(sys2)
Reducing order using BALRED should always work for stable systems since you would be picking the reduced order yourself.
Aside: What kind of data do you use for estimation? If it is time domain signals, you cannot decompose a multi-input estimation into several single-input estimations.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!