在命令行中优化初始 ARMAX 模型
本示例演示了如何使用 pem 估计初始模型并对其进行优化。
加载测量数据。
load iddata8将数据分为初始估计数据集和精细化数据集。
init_data = z8(1:100); refine_data = z8(101:end);
init_data 是一个 iddata 对象,其中包含 z8 的前 100 个样本;而 refine_data 是一个 iddata 对象,代表 z8 中的剩余数据。
对一个 ARMAX 模型进行估计。
na = 4; nb = [3 2 3]; nc = 2; nk = [0 0 0]; sys = armax(init_data,[na nb nc nk]);
armax 使用默认的算法属性来估计 sys。
通过指定估计法的选项来优化估计模型。指定更严格的容差,并增加最大迭代次数。
opt = armaxOptions; opt.SearchOptions.Tolerance = 1e-5; opt.SearchOptions.MaxIterations = 50; refine_sys = pem(refine_data,sys,opt);
比较初始模型和优化后的模型的拟合效果。
compare(refine_data,sys,refine_sys)
legend(Interpreter="none")
refine_sys 比 sys 更能贴合数据。
同样地,您也可以使用 polyest 或 armax 来优化估计模型。