【问题标题】:Set initial values in simulink idmodel block for an identified process model在 simulink idmodel 模块中为已识别的流程模型设置初始值
【发布时间】:2020-07-18 03:53:28
【问题描述】:

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

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

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

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

谢谢。

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

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

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

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

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

【问题讨论】:

    标签: matlab system-identification


    【解决方案1】:

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

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 2013-05-15
      • 1970-01-01
      相关资源
      最近更新 更多