示例脚本获得MIMO ARX模型的参数(VARX)使用最小二乘法。
N = 1000;%的样本数量
p = 5;%过去VARX模型的窗口
directfeedthrough = 1;% VARX模型包括直接引线
r = 2;%的输入
l = 3;%的输出
u = randn (r, N);%的输入数据
y = randn (l, N);%输出数据
%连接过去的数据向量
m = r + l;
z = [u;y);
Z = 0 (p * m,阻燃剂);
为i = 1: p
Z((张)* m + 1:我* m:) = Z(:,我:N + i-p-1);
结束
%解决VARX问题
Y = Y (:, p + 1: N);
U = U (:, p + 1: N);
如果directfeedthrough
Z = [Z;U];
结束
VARX = Y / Z;%最小二乘估计
% idpoly对象转换解决方案
=细胞(l, l);
B =细胞(左,右);
如果directfeedthrough
VARX0 = [VARX眼(l)];
其他的
VARX0 = [VARX 0(左,右)眼睛(l)];
结束
为i = 1: l
为j = 1: l
{i, j} = fliplr (VARX0 (i r + j: m: m * p + r + j));
结束
为k = 1: r
{我k} = fliplr (VARX0 (i、k: m: m * p + k));
结束
结束
Ts = 1;%样品时间
E = Y - VARX * Z;
NoiseVariance = x (E);
sys = idpoly (A, B, []、[] [], NoiseVariance, Ts);% MIMO ARX模型对象
对于较大的模型,最小二乘问题可以生病的条件和需要正则化得到良好的估计。如果需要调整,我建议看下面的matlab函数的源代码。