我使用系统识别工具获得了一些数据的状态空间(2阶)和过程模型(2个输入,1个输出,2阶传递函数+延迟)。这些模型与系统识别模型输出窗口中的实验数据非常吻合,如图1所示,但当我使用simulink中的idmodel块模拟相同的数据时,它看起来与工具上的完全不同。
我对两个拟合的模型都使用了完全相同的框图。使用状态空间拟合模型,结果与系统识别工具图2-3一致,而过程模型则完全不同,图4-5。
状态空间模型只有在某些实验条件下才能很好地工作,而进程模型很适合我的所有实验,这就是我尝试使用它的原因。下面的图片仅对应于一个实验。
我认为问题在于,当使用进程模型而不是状态空间模型时,我不能为idmodel块设置初始条件。我可以使用findstates(model, data)获得流程模型的初始条件,但我不知道如何应用它们。关于如何在simulink中为已识别的传递函数/过程模型设置初始条件,有什么提示吗?也许可以在没有simulink的情况下解决问题?我对任何解决方案或想法都持开放态度。
谢谢。
图1.状态空间和流程模型的系统识别工具输出

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

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

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

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

发布于 2020-07-21 23:42:49
在到达matlab中心并为我指明了正确的方向后,我想出了一个solution。感谢拉吉夫·辛格。
我首先需要使用idss()而不是ss() -See this article-将流程模型从idproc转换为idss,然后使用compare()而不是findstate()来获取初始条件并将初始条件提供给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


https://stackoverflow.com/questions/62964445
复制相似问题