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