Does the order (index) of inputs and outputs matter in MIMO system identification?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Amin Gholami
il 18 Giu 2020
Modificato: Rajiv Singh
il 23 Giu 2020
I have a simple MISO system identification code, where "GenVolt" is the output; "Pressure" and "MagVolt" are the input signals. I noticed if we swap the order of inputs when we define the iddata structure, the result would be totally different! As can be seen in the following code, I just swapped the order of "Pressure" and "MagVolt" as the inputs, and I get totally diffent estimations. I was wondering why this happens?
clc
clear
% load data
load SteamEng
Pressure = 0.1*MagVolt + 0.2;
% Estimating the transfer function
steam1 = iddata([GenVolt],[Pressure,MagVolt],0.05);
steam1.InputName = {'Pressure1';'MagVolt1'};
steam1.OutputName = {'GenVolt1'};
sys1 = tfest(steam1,2,1)
% Swapping the order of the inputs
steam2 = iddata([GenVolt],[MagVolt,Pressure],0.05);
steam2.InputName = {'MagVolt2';'Pressure2'};
steam2.OutputName = {'GenVolt2'};
sys2 = tfest(steam2,2,1)
The result is
sys1 =
%From input "Pressure1" to output "GenVolt1":
-4.961 s + 3.082
---------------------
s^2 + 29.89 s + 11.06
%From input "MagVolt1" to output "GenVolt1":
17.97 s + 48.5
---------------------
s^2 + 41.93 s + 120.6
sys2 =
%From input "MagVolt2" to output "GenVolt2":
17.59 s + 54.35
---------------------
s^2 + 42.73 s + 138.3
%From input "Pressure2" to output "GenVolt2":
-9.183 s + 43.3
---------------------
s^2 + 422.1 s + 154.5
0 Commenti
Risposta accettata
Rajiv Singh
il 23 Giu 2020
Modificato: Rajiv Singh
il 23 Giu 2020
Yes the order matters since within a given noise level, there are many models that can explain the data. Settings related to search method, search options and initialization method all matter. In this example, an initial model is first generated using instrument variables. This model is different when the inputs are swapped. You can enforce a closer agreement by using a different initializer, but there is not gaurantee, or a way of enforcing, a strict match. The following seems to work better here:
steam2.InputName = {'MagVolt1';'Pressure1'};
steam2.OutputName = {'GenVolt1'};
m1=ssest(steam1,2);
m2=ssest(steam2,2);
sys1 = tfest(steam1,m1);
sys2 = tfest(steam2,m2);
figure
bode(sys1,sys2(1,[2 1]))
figure
compare(steam1,sys1,sys2)
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Transfer Function Models in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!