MATLAB系统辨识工具箱所得到模型的初始状态问题

用identGUI辨识出传递函数动态模型,用compare(input,model,'InitialState','e')得到的结果比较好,但compare(input,... 用ident GUI辨识出传递函数动态模型,用compare(input,model,'InitialState','e')得到的结果比较好,但compare(input,model,'InitialState','m')的结果就相差很多了
但因为工程要求,编写仿真平台使用的不是MATLAB而是其他语言,不能直接使用工具箱里的函数(但是可以调用MATLAB的基本语句)。在仿真中使用该模型的时候,初始状态应该怎样设置?在网上看到“'InitialState','e'”是“estimates the initial conditions for best fit”,究竟是怎样estimate出来的?
展开
 我来答
tianxiawulang
2014-01-12 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2634万
展开全部

分析了一下代码,应该是调用predict函数(toolbox\ident\ident\@idmodel\predict.m),初值估计的代码应该在子函数x0iniest中,你可以自己跟踪运行看看相应的算法,或者,举一个具体的实例,我可以结合具体实例帮助你做分析。

追问
目前手边没有MATLAB所以只能明天去实验室再看……话说如果要模拟实际工况的话,这种估计出来的初始值有其使用价值么?总觉得这么做有点自欺欺人
追答

没进行深入研究,理解未必正确,说点个人看法供参考。

1、老外做科学研究还是比较靠谱的,既然把e作为一种方法供选择(而且是默认的),应该不会是自欺欺人;

2、根据文档,e和m的差别好像是,e把初始条件也作为未知的,这样相当于模型有了更多的自由度,所以会有更好的拟合效果;而m是使用模型中内部存储的初始状态(internally stored initial state of the model),这就有个问题:这个状态你知道是什么吗?符合实际吗?

3、除了e和m,其实还有另外两个选择:

  • 'z':使用零初始条件(uses zero initial conditions);

  • x0,直接用一个列向量来指定初值。

请考虑一下,会不会这两种的某一个更合乎你的需要?

 

特别提醒:以上属于个人的粗浅理解,未必正确,仅供参考。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式