首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在simulink idmodel块中为已识别的流程模型设置初始值

在simulink idmodel块中为已识别的流程模型设置初始值
EN

Stack Overflow用户
提问于 2020-07-18 11:53:28
回答 1查看 223关注 0票数 1

我使用系统识别工具获得了一些数据的状态空间(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输出

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-21 23:42:49

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

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

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62964445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档