PEM

预测误差估计的线性和非线性模型

描述

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

SYS= PEM(数据init_sys选择使用选项集指定估计选项。

例子

全部折叠

估计使用子空间方法的离散时间状态空间模型。然后,通过最小化预测误差完善它。

使用估计离​​散时间状态空间模型n4sid,它适用的子空间方法。

加载iddata7Z7;z7a = Z7(1:300);选择= n4sidOptions(“焦点”“模拟”);init_sys = n4sid (z7a 4选择);

init_sys提供了一个73.85%的拟合到估计数据。

init_sys.Report.Fit.FitPercent
ans = 73.8490

使用PEM以提高拟合接近程度。

sys = pem (z7a init_sys);

分析结果。

比较(z7a,SYS init_sys);

SYS提供了74.54%配合到估计数据。

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

加载的实验数据,并指定信号属性,例如开始时间和单位。

负载(fullfile (matlabroot“工具箱”'IDENT''iddemos'“数据”'dcmotordata'));数据= IDDATA(Y,U,0.1);data.Tstart = 0;data.TimeUnit ='S';

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

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

FILE_NAME ='dcmotor_m';order = [2 1 2];参数= (1;0.28);initial_states = (0, 0);t = 0;init_sys = idnlgrey (file_name、秩序、参数initial_states Ts);init_sys。TimeUnit ='S';setinit(init_sys,'固定'{FALSE FALSE});

init_sys与它的结构非线性灰盒模型通过描述dcmotor_m.m。该模型具有一个输入,两个输出和两个状态,如通过指定订购

setinit (init_sys“固定”,{假假})的初始状态init_sys都是免费的估计参数。

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

SYS = PEM(数据,init_sys);

SYS是一个idnlgrey模型,它封装了参数估计和协方差。

分析估计结果。

比较(数据,SYS,init_sys);

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

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

初始化过程模型的系数。

init_sys = idproc (“P2UDZ”);init_sys.Kp = 10;init_sys.Tw = 0.4;init_sys.Zeta = 0.5;init_sys.Td = 0.1;init_sys.Tz = 0.01;

KpTW泽塔TD,TZ系数init_sys用他们最初的猜测来配置。

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

加载iddata1Z1;选择= procestOptions (“显示”'上''SearchMethod'“lm”);SYS = PEM(Z1,init_sys,优化);

检查模型是否适合。

sys.Report.Fit.FitPercent
ans = 70.6330

SYS提供了70.63%的适合测量数据。

输入参数

全部折叠

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

的输入 - 输出尺寸数据init_sys必须匹配。

识别模型,配置的初始参数SYS,指定为线性, 要么非线性模型。你可以获得init_sys通过利用测得的数据的估计或通过直接构造。

init_sys必须具有有限的参数值。可以配置初始猜测,用于估计的任何参数中指定的最小/最大界限,和修补程序或免费init_sys

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

  • 对于非线性灰盒模型,使用InitialStates参数属性。参数的约束不能用于非线性ARX和汉默斯坦 - 维纳模型来指定。

估计选项配置算法设置,搬运估计焦点,初始条件,和数据偏移的,指定为一个选项集。用于创建选项设置的命令依赖于初始模型类型:

输出参数

全部折叠

所标识的模型,返回的模型类型与init_sys。该模型是通过估计的自由参数获得init_sys采用预测误差最小化算法。

算法

PEM采用数值优化,以尽量减少成本函数,为预测误差的加权范数,对标量输出定义为:

V ñ G H = Σ Ť = 1 ñ Ë 2 Ť

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

Ë Ť = H - 1 q [ ÿ Ť - G q ü Ť ]

哪里e (t)是向量和代价函数吗 V ñ G H 为标量值。下标ñ表示代价函数是数据样本个数的函数,值越大越准确ñ。对于多输出模型,前一个方程比较复杂。更多信息,见第7章系统辨识:理论对于用户,第二版,由伦纳特·晶,普伦蒂斯霍尔PTR,1999年。

选择功能

您也可以达到同样的结果PEM通过对各种模型结构使用专用的估计命令。例如,使用init_sys ss(数据)估计状态空间模型。

之前介绍过的R2006a