在 simulink idmodel 块中为已识别的过程模型设置初始值
Set initial values in simulink idmodel block for an identified process model
我使用系统识别工具获得了一些数据的状态space(2阶)和过程模型(2个输入,1个输出,二阶传递函数+延迟)。这些模型非常适合系统识别模型输出中的实验数据 window [图 1] 但是当我在 simulink 中使用 idmodel 块来模拟相同的数据时,它看起来根本不像在工具上.
我对两个拟合模型使用了完全相同的框图。使用状态-space 拟合模型,结果与系统识别工具[图 2-3] 一致,同时过程模型完全不同 [图 4-5]。
状态-space模型只适用于某些实验条件,而过程模型非常适合我的所有实验,这就是我尝试使用它的原因。以下图片仅对应1个实验
我认为问题在于当使用过程模型而不是状态模型时我无法为 idmodel 块设置初始条件 space。我可以使用 findstates(model, data)
获得流程模型的初始条件,但我不知道如何应用它们。关于如何在 simulink 中为已识别传输 function/process 模型设置初始条件的任何提示?也许没有 simulink 的可能解决方法?我愿意接受任何解决方案或想法。
谢谢。
图 1. 状态 space 和过程模型的系统识别工具输出
图 2. state-space 模型的 Simulink 输出
图 3. 带有状态的 idmodel 块-space 模型:初始条件参数可用
图 4. 带有过程模型的 idmodel 块:初始条件参数不可用
图 5. state-space 模型的 Simulink 输出
在到达 matlab central 并指出正确的方向后,我想出了一个 solution。感谢 Rajiv Singh。
我首先需要使用 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
我使用系统识别工具获得了一些数据的状态space(2阶)和过程模型(2个输入,1个输出,二阶传递函数+延迟)。这些模型非常适合系统识别模型输出中的实验数据 window [图 1] 但是当我在 simulink 中使用 idmodel 块来模拟相同的数据时,它看起来根本不像在工具上.
我对两个拟合模型使用了完全相同的框图。使用状态-space 拟合模型,结果与系统识别工具[图 2-3] 一致,同时过程模型完全不同 [图 4-5]。
状态-space模型只适用于某些实验条件,而过程模型非常适合我的所有实验,这就是我尝试使用它的原因。以下图片仅对应1个实验
我认为问题在于当使用过程模型而不是状态模型时我无法为 idmodel 块设置初始条件 space。我可以使用 findstates(model, data)
获得流程模型的初始条件,但我不知道如何应用它们。关于如何在 simulink 中为已识别传输 function/process 模型设置初始条件的任何提示?也许没有 simulink 的可能解决方法?我愿意接受任何解决方案或想法。
谢谢。
图 1. 状态 space 和过程模型的系统识别工具输出
图 2. state-space 模型的 Simulink 输出
图 3. 带有状态的 idmodel 块-space 模型:初始条件参数可用
图 4. 带有过程模型的 idmodel 块:初始条件参数不可用
图 5. state-space 模型的 Simulink 输出
在到达 matlab central 并指出正确的方向后,我想出了一个 solution。感谢 Rajiv Singh。
我首先需要使用 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