从 Simulink 中的 Matlab 功能块调用的 sim 命令的 Simout 输出
Posted
技术标签:
【中文标题】从 Simulink 中的 Matlab 功能块调用的 sim 命令的 Simout 输出【英文标题】:Simout output from sim command called from Matlab Function Block in Simulink 【发布时间】:2014-05-20 20:54:27 【问题描述】:我正在尝试在根模型“outer.mdl”的一个时间步中模拟模型“inner.mdl”(几个时间步)。我想从 Matlab 功能块调用 simout = sim("inner.mdl") 。问题是:由于我使用的是外部 sim(绕过代码生成),simout 作为 MxArray 返回,我无法从中检索记录的信号。任何想法都将不胜感激,无论是在模拟中进行模拟还是使用我正在尝试的方法获取记录的信号。
我这样做的主要原因是,作为控制器的一部分,我试图在未来提前几步模拟系统,以便以某种方式使用该信息。我不想将我的控制器变成代码,即使我摆脱了与仿真时间相关的块,我也不知道如何在整个模型不及时向前移动的情况下运行一个块。
【问题讨论】:
很难从对您尝试做什么的一般描述中回答这样的问题。准确地展示你是如何做某事的,以及你是如何失败的或更具体的。 Jusr 写一个 m-code S-function。这样您就不会遇到任何数据类型问题。 【参考方案1】:通常,如果在调用返回此变量的外部函数之前将变量初始化为 0
或等效项,则该变量将是 double 类型,而不是 MxArray。不确定这是否适用于simout
,因为我似乎记得simout
是一个结构。还是值得一试的。
有关详细信息,请参阅文档中的Working with mxArrays。
【讨论】:
以上是关于从 Simulink 中的 Matlab 功能块调用的 sim 命令的 Simout 输出的主要内容,如果未能解决你的问题,请参考以下文章
如何从 MATLAB 函数中的工作区获取 Simulink 结构的值?