1

我使用系统识别工具来获得一些数据的状态空间(2阶)和过程模型(2个输入,1个输出,2阶传递函数+延迟)。这些模型在系统识别模型输出窗口 [图 1] 中显示出非常适合实验数据,但是当我使用 simulink 中的 idmodel 模块来模拟相同的数据时,它看起来与工具上的完全不同。

我对两个拟合模型都使用了完全相同的框图。状态空间拟合模型的结果与系统识别工具[图2-3]一致,而过程模型则完全不同[图4-5]。

状态空间模型仅适用于某些实验条件,而过程模型非常适合我的所有实验,这就是我尝试使用它的原因。下面的图片仅对应 1 个实验。

我认为问题在于,当使用流程模型而不是状态空间模型时,我无法为 idmodel 块设置初始条件。我可以使用 获得流程模型的初始条件findstates(model, data),但我不知道如何应用它们。关于如何在 simulink 中为已识别的传递函数/过程模型设置初始条件的任何提示?也许没有 simulink 的可能解决方法?我对任何解决方案或想法持开放态度。

谢谢你。

图 1. 状态空间和流程模型的系统识别工具输出 状态空间和过程模型的系统识别工具输出

图 2. 状态空间模型的 Simulink 输出 状态空间模型的 Simulink 输出

图 3. 具有状态空间模型的 idmodel 模块:初始条件参数可用 具有状态空间模型的 idmodel 块:初始条件参数可用

图 4. 带有流程模型的 idmodel 块:初始条件参数不可用 具有流程模型的 idmodel 块:初始条件参数不可用

图 5. 状态空间模型的 Simulink 输出 状态空间模型的 Simulink 输出

4

1 回答 1

0

在到达 matlab 中心并指出我正确的方向后,我想出了一个解决方案。感谢拉吉夫·辛格。

我首先需要使用 idss() 而不是 ss() 将流程模型从 idproc 转换为 idss - 请参阅这篇文章- 然后使用 compare() 而不是 findstates() 来获取初始条件并将初始条件馈送到 idmodel simulink 中的块。图形化:

model=idss(T3s_2d);
[y,fit,x0]=compare(run_data_s{8}, model);
%T3s_2d is the identified process model (idproc) from system identification toolbox
%run_data_s is the iddata object with the experimental runs

在此处输入图像描述 在此处输入图像描述

于 2020-07-21T15:42:49.203 回答