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

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.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. 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. data, model, time series, armax, input MATLAB Answers — New Questions