主要内容

pem

优化线性和非线性模型的预测误差最小化

描述

例子

sys= pem (数据init_sys更新初始模型的参数以适应估计数据。该函数使用预测误差最小化算法来更新初始模型的参数。使用此命令细化先前估计模型的参数。

例子

sys= pem (数据init_sys选择使用选项集指定评估选项。

例子

全部折叠

用子空间方法估计一个离散时间状态空间模型。然后,通过最小化预测误差来优化它。

估计一个离散时间状态空间模型使用n4sid,该方法应用子空间方法。

负载iddata7z7;Z7a = z7(1:300);opt = n4sidOptions(“焦点”“模拟”);Init_sys = n4sid(z7a,4,opt);

init_sys与估计数据的拟合率为73.85%。

init_sys.Report.Fit.FitPercent
Ans = 73.8490

使用pem提高贴合的紧密度。

Sys = pem(z7a,init_sys);

分析结果。

比较(z7a sys, init_sys);

图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象表示验证数据(y1), sys: 74.54%, init\_sys: 73.85%。

sys与估计数据的拟合率为74.54%。

估计非线性灰盒模型的参数以拟合直流电机数据。

加载实验数据,并指定开始时间、单位等信号属性。

负载(fullfile (matlabroot“工具箱”“识别”“iddemos”“数据”“dcmotordata”));数据= iddata(y, u, 0.1);数据。Tstart = 0;数据。TimeUnit =“年代”

配置非线性灰盒模型(idnlgrey)模型。

对于本例,使用dcmotor_m.m文件。要查看此文件,请键入编辑dcmotor_m.m在MATLAB®命令提示符。

file_name =“dcmotor_m”;Order = [2 1 2];参数= [1;0.28];Initial_states = [0;0];Ts = 0;init_sys = idnlgrey(file_name,order,parameters,initial_states,Ts);init_sys。TimeUnit =“年代”;setinit (init_sys“固定”,{假假});

init_sys非线性灰盒模型的结构描述为dcmotor_m.m.该模型具有一个输入、两个输出和两个状态,由订单

setinit (init_sys“固定”,{假假})的初始状态init_sys为自由估计参数。

估计模型参数和初始状态。

Sys = pem(data,init_sys);

sys是一个idnlgrey模型,它封装了估计的参数及其协方差。

分析估计结果。

比较(数据、sys init_sys);

图中包含2个轴对象。Axes对象1包含3个line类型的对象。这些对象表示验证数据(y1), sys: 98.34%, init\_sys: 79.39%。坐标轴对象2包含3个line类型的对象。这些对象表示验证数据(y2), sys: 84.48%, init\_sys: 49.15%。

sys提供了98.34%的拟合估计数据。

创建流程模型结构并更新其参数值,以最小化预测误差。

初始化流程模型的系数。

Init_sys = idproc(“P2UDZ”);init_sys。Kp = 10;init_sys。太瓦=0.4; init_sys.Zeta = 0.5; init_sys.Td = 0.1; init_sys.Tz = 0.01;

Kp太瓦ζ道明,Tz系数init_sys配置了他们的初始猜测。

使用init_sys利用测量数据配置预测误差最小化模型的估计。因为init_sys是一个idproc模型,使用procestOptions创建选项集。

负载iddata1z1;opt = procestOptions(“显示”“上”“SearchMethod”“lm”);Sys = pem(z1,init_sys,opt);
估计数据:时域数据z1数据有1个输出,1个输入,300个样本。模型类型:{'P2DUZ'}Levenberg-Marquardt搜索< br > ------------------------------------------------------------------------------------------ < br >一阶改进规范(%)< br >迭代步最优成本预期实现二分< br >------------------------------------------------------------------------------------------ 0 21.2201 - 414 3.8 - 8.55 - 3.8 19.4048 - 1.15 323 814 2 14.8743 - 2.48 6.84305 - 0.873 4.41 - 23.3 0 451 4.43 54 11 4 8.75 5.20355 0.977 1.49 e + 03 24 7 5 1.83911 - 0.973 473年1364.7 0 6 0 7 1.67335 0.062 6.57 1.67582 0.225 20.3 4.98 8.88 0.0829 1.67334 0.00494 0.0555 0.000374 0.000648 0.147 0 8 0  ------------------------------------------------------------------------------------------ 终止条件:附近(当地)最小,(标准(g) < tol) . .迭代次数:8次,函数评估次数:42次状态:PEM估计,拟合估计数据:70.63%,FPE: 1.73006

检查模型拟合。

sys.Report.Fit.FitPercent
Ans = 70.6330

sys与测量数据的拟合度为70.63%。

输入参数

全部折叠

包含测量的输入-输出数据的估计数据,指定为iddataidfrd对象。频域数据只能在以下情况下使用init_sys是一个线性模型。

的输入输出维度数据而且init_sys必须匹配。

的初始参数化所标识的模型sys,指定为线性,或非线性模型。你可以获得init_sys用测量数据或直接构造来进行估计。

init_sys必须有有限的参数值。您可以配置初始猜测,指定最小/最大边界,以及用于估计的任何参数的fix或freeinit_sys

  • 对于线性模型,使用结构财产。有关更多信息,请参见对模型参数值施加约束

  • 对于非线性灰盒模型,请使用InitialStates而且参数属性。非线性ARX和Hammerstein-Wiener模型不能指定参数约束。

估计选项,用于配置算法设置、估计焦点的处理、初始条件和数据偏移量,作为一个选项集指定。用于创建选项集的命令取决于初始模型类型:

输出参数

全部折叠

已标识的模型,作为相同的模型类型返回init_sys.模型是通过估计的自由参数得到的init_sys采用预测误差最小化算法。

算法

PEM使用数值优化来最小化成本函数,预测误差的加权范数,对于标量输出定义如下:

V N ( G H t 1 N e 2 ( t

在哪里e (t)是模型的测量输出与预测输出之间的差值。对于线性模型,误差定义为:

e ( t H 1 ( y ( t G ( u ( t

在哪里e (t)是向量和代价函数吗 V N ( G H 是标量值。下标N表示代价函数是数据样本数量的函数,且值越大越准确N.对于多输出模型,前面的方程更加复杂。有关更多信息,请参阅第7章系统识别:用户的理论,第二版,Lennart Ljung著,Prentice Hall PTR, 1999。

选择功能

你可以达到和pem通过对各种模型结构使用专用的估计命令。例如,使用init_sys ss(数据)用于估计状态空间模型。

版本历史

R2006a之前介绍