Adding exogenous input to iddata (to expand an ARMAX model)

3 views (last 30 days)
Extended ARMAX model:
A(q)y(k)=B(q)u(k)+C(q)e(t)+D(q)w(t)
w(t) is not an input, in the sense that I don't have control over it. But I can meassure the value, and I want to refine the model with it, since I'm certain that it has an influence on the output y(t). Therefore I thought of regarding it as an exogenous input to the model.
how can I expand the data-set to a MISO system with the additional ex. input. w(t) in MATLAB?
So far I have done the following (of course, it is oversimplified here):
y = cell(1,N_Experiments);
u = cell(1,N_Experiments);
u_exogenous = cell(1,N_Experiments);
period = cell(1,N_Experiments);
for i = 1:N_Experiments
[y{i},u{i},u_exogenous{i},period{i}] = simulate_system();
end
data = iddata(y,[u,u_exogenous],period);
orders = get_orders(data);
arx_sys = arx(data,orders);
where "get_orders" is a function that guesses the orders with "selstruc" and other MATLAB functions designed for this.
Question(s) :
  • Is this a valid approach to consider exogenous inputs in a model?
  • Do the System Identification Toolbox functions (e.g. "iddata", "armax", etc) recognize "u_exogenous" as what it is?
As for now, the above script works without errors (iddata admits MISO systems). But there is no performance improvement (fit with the "compare" function, MSE,etc) from adding the exogenous input, which contradicts all theory and intuition, so I'm not sure if "u_exogenous" is recognized properly with this approach.

Answers (0)

Community Treasure Hunt

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

Start Hunting!