主要内容

模拟识别模型万博1manbetx

后估计在命令行或模型系统识别从MATLAB应用程序,您可以导入模型®工作区为仿真软件万博1manbetx®使用模型块。然后您可以模拟模型输出的初始条件和模型输入你指定。

模型模拟块添加到仿真软件模型的系统辨识工具箱™块库当你想:万博1manbetx

  • 代表一个物理组件的动力学仿真软件模型使用一个基于数据模型万博1manbetx

  • 替换一个复杂模型子系统与一个简单的基万博1manbetx于数据的模型

总结仿真模块

下面的模型块模型的系统辨识工具箱图书馆。万博1manbetx

描述
Idmodel 模拟线性确定模型在仿真软件的软件。万博1manbetx模型可以是一个过程(idproc),线性多项式(idpoly),状态(中的难点),灰色矩形(idgrey),或传递函数(idtf)模型。
非线性ARX模型 模拟idnlarx在仿真软件模型。万博1manbetx
Hammerstein-Wiener模型 模拟idnlhw在仿真软件模型。万博1manbetx
非线性灰色矩形模型 模拟非线性ODE (idnlgrey模型对象)的仿真软件。万博1manbetx

在这些模型中块,您指定的model-variable名称标识您想要导入模型。你也为模拟(参见指定初始条件指定初始条件的模拟)。您可以指定时域输入数据:

  • 使用一个从工作空间块,如果输入数据的一个示例是一个标量或矢量

  • 使用一个Iddata源在一块,如果输入数据iddata对象

有关如何配置块的详细信息,见相应的块引用页面。

指定初始条件的模拟

当你的模型不是静止的模拟,您必须指定初始条件。模型可能不开始休息,例如,当你:

  • 比较模型响应和测量数据或前一个模拟输出

  • 继续从先前的模拟

  • 启动你的模拟在稳态阶段

  • 启动你的模拟从预定的操作条件

如果你没有指定初始条件,引入一个误差源影响明显的性能模型。这个错误可能是短暂的;在模型中轻阻尼或组件包括一个积分,错误可能不会完全消失。

指定初始条件需要两个步骤:

  1. 确定初始条件应该(见估计模拟识别模型的初始条件)

  2. 在模型中指定这些值作为参数。

如果你有一个线性模型,不是中的难点idgrey,您还可以将模型转化为状态空间形式之前的第一步。

如果您已经使用进行了仿真比较,sim卡,或者是系统识别程序,你想看看你的仿真软件实现精确地复制你的早期结果,明白了万博1manbetx复制命令行或系统识别应用仿真软件的仿真结果万博1manbetx

指定初始状态的线性模型

为整数线性模型(指定初始状态中的难点,idgrey),用初始状态(状态空间只有:ids, idgrey)参数Idmodel块。初始状态必须是一个向量的长度等于的顺序模式。

其他类型的线性模型,如传输函数形式模型(idtf),不使用显式状态表示。初始状态的模型块因此没有输入规范;软件假定初始条件为零。指定其中一个模型的初始条件,首先把你的模型成状态方程的形式海量存储系统(mss)中在命令行中。

海量存储系统(mss)中= ids (m);
然后使用海量存储系统(mss)中识别模型参数的Idmodel块。现在,您可以指定您的初始状态在前款所述状态空间模型。

在仿真软件模拟了线性模型初始条件万博1manbetx

这个例子展示了如何设置初始状态等模拟线性模型的模拟提供了一个最适合测量输入输出数据。

你第一次估计模型使用一个综合实验室数据集Z从三个实验-,它包含数据z1,z2,z3

加载multi-experiment数据。

负载(fullfile (matlabroot“工具箱”,“识别”,“iddemos”,“数据”,“twobodiesdata”))

创建一个iddata对象存储multi-experiment数据。集“Tstart”开始时间为0,这样数据匹配仿真软件开始时间0 f 0年代。万博1manbetx

z1 = iddata (y1, u1, 0.005,“Tstart”,0);z2 = iddata (y2, u2, 0.005,“Tstart”,0);z3 = iddata (y3, u3, 0.005,“Tstart”,0);Z =合并(z1、z2 z3);

估计5阶状态空间模型。

[M, x0] = n4sid (Z, 5);

使用输入模拟模型u2,使用x0 (: 2)为初始状态。x0 (: 2)计算最大化之间的适合测量输出y2和模拟的反应

提取初始状态,适合相应的输出最大化y2和模拟模型在仿真软件中使用第二个实验中,万博1manbetxz2

x0 = x0 (:, 2);

打开一个预配置仿真软件模型。万博1manbetx

mdl =“ex_idmodel_block”;open_system (mdl)

模型使用Iddata源、Idmodel和块范围。以下预配置指定块参数仿真数据,估计模型,初始条件。

块Iddata源参数块:

  • IDDATA对象- - - - - -z2

块Idmodel块的参数:

  • 识别模型- - - - - -

  • 初始状态- - - - - -x0

两秒钟,模拟模型,比较了模拟输出ysim测量输出ymeasured使用块范围。

simOut = sim (mdl);open_system ([mdl/范围的])

比较这个结果和结果会得到没有设置初始条件。你可以取消X0初始状态块的仿真软件模型取代万博1manbetxx0变量0。你也可以取消x0本身在命令行,如下所示。

x0 = 0 * x0;

运行仿真,查看新结果。

simOut = sim (mdl);open_system ([mdl/范围的])

在这个情节,模拟输出有很大的瞬态开始,但这短暂的解决时间。

指定Hammerstein-Wiener模型的初始状态

美国Hammerstein-Wiener模型对应的嵌入的线性(idpoly中的难点)模型。关于美国Hammerstein-Wiener模型的更多信息,参见idnlhw参考页面。

默认的初始状态为模拟Hammerstein-Wiener模型是0。对模拟指定初始条件的更多信息,见IDNLHW模型参考页面。

在仿真软件模拟Hammerstein-Wiener模型万博1manbetx

比较Hammerstein-Wiener模型的模拟输出块测量系统的输出。你提高测量和模拟响应之间的协议估计初始状态值。

加载示例数据。

负载twotankdata

创建一个iddata从样本数据对象。集“Tstart”开始时间为0,这样数据匹配仿真软件开始时间0 f 0年代。万博1manbetx

z1 = iddata (y, u, 0.2,“Tstart”0,“名字”,“两舱系统”);

估计Hammerstein-Wiener模型使用数据。

mw1 = nlhw (z1, [1 5 3], idPiecewiseLinear idPiecewiseLinear);

你现在可以模拟的输出估计模型在仿真软件使用的输入数据万博1manbetxz1。为此,打开一个预配置仿真软件模型。万博1manbetx

模型=“ex_idnlhw_block”;open_system(模型);

模型使用Iddata源、Hammerstein-Wiener模型和范围。以下预配置指定块参数估计数据,估计模型,和初始条件:

块Iddata源参数块:

  • IDDATA对象- - - - - -z1

块Hammerstein-Wiener模型的参数块:

  • 模型- - - - - -mw1

  • 初始条件- - - - - -(默认)

运行仿真。

视图之间的差异测量输出与模型输出通过使用块范围。

simOut = sim(模型);open_system([模型/范围的])

提高测量和模拟响应之间的协议,估计模型的初始状态向量的估计数据z1,使用findstates。指定的最大数量的迭代估计为100。指定预测地平线,因此该算法计算模拟误差最小化的初始状态。

选择= findstatesOptions;opt.SearchOptions。米axIterations = 100; x0 = findstates(mw1,z1,Inf,opt);

设置初始条件块Hammerstein-Wiener模型的参数值块状态值。默认的初始状态x0

set_param([模型“/ Hammerstein-Wiener模型”),“集成电路”,“国家价值观”);

再次运行仿真,和视图之间的差异测量输出与模型输出的范围。测量和模拟响应之间的差异正在减少。

simOut = sim(模型);

指定初始状态的非线性ARX模型

非线性ARX模型对应的状态非线性ARX模型的动态元素结构,模型的解释变量。解释变量可以延迟输入/输出变量(标准解释变量)或用户定义的转换延迟输入/输出变量(自定义解释变量)。关于美国的更多信息的非线性ARX模型,看到idnlarx参考页面。

对于模拟非线性ARX模型,您可以指定初始条件作为输入/输出值,或作为一个向量。对模拟指定初始条件的更多信息,见IDNLARX模型参考页面。

在仿真软件模拟非线性ARX模型万博1manbetx

这个例子展示了如何比较一块非线性ARX模型的模拟输出的测量输出系统。你提高测量和模拟响应之间的协议估计初始状态值。

加载示例数据并创建一个iddata对象。集“Tstart”开始时间为0,这样数据匹配仿真软件开始时间0 f 0年代。万博1manbetx

负载twotankdataz = iddata (y, u, 0.2,“Tstart”0,“名字”,“两舱系统”);z1 = z (1:1000);

估计非线性ARX模型。

mnlarx1 = nlarx (z1 (5 1 3) idWaveletNetwork (8));

你现在可以模拟的输出估计模型在仿真软件使用的输入数据万博1manbetxz1。为此,打开一个预配置仿真软件模型。万博1manbetx

模型=“ex_idnlarx_block”;open_system(模型);

模型使用Iddata源、非线性ARX模型,和范围。以下预配置指定块参数估计数据,估计模型,以及输入和输出水平:

块Iddata源参数块:

  • IDDATA对象- - - - - -z1

块参数的非线性ARX模型块:

  • 模型- - - - - -mnlarx1

  • 初始条件输入和输出值(默认)

  • 输入电平- 10

  • 输出电平- 0.1

运行仿真。

视图之间的差异测量输出与模型输出通过使用块范围。

simOut = sim(模型);open_system([模型/范围的])

提高测量和模拟响应之间的协议,估计模型的初始状态向量的估计数据,z1

x0 = findstates (z1, mnlarx1 Inf);

设置初始条件块非线性ARX模型块的参数值状态值。指定初始状态x0

set_param([模型“/非线性ARX模型”),“ICspec”,“国家价值观”,“X0”,“x0”);

再次运行仿真,和视图之间的差异测量输出与模型输出的范围。测量和模拟响应之间的差异正在减少。

simOut = sim(模型);

另请参阅

||||

相关的话题