MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   如何将输入提供给Simulink模型而不将其放置在工作区中 (https://www.labfans.com/bbs/showthread.php?t=26578)

poster 2019-12-14 20:13

如何将输入提供给Simulink模型而不将其放置在工作区中
 
我有一个Simulink模型,该模型当前正在通过脚本(即不是函数)运行。该脚本将变量值写入MATLAB工作空间,运行模型仿真(使用这些值),然后模型将其他值写入工作空间。如果我尝试将脚本转换为函数(即通过将function [output] = runSim()放在文件顶部),则Simulink会抱怨它不了解变量,大概是因为它们不在MATLAB中工作区,但它们在功能范围内。

除了将Simulink模型粘贴到工作区中之外,是否有一种优雅的方法为Simulink模型提供输入并从Simulink模型获取输出?



[B]回答:[/B]

这不是很明显,但是您可以从sim()命令和调用函数的工作区输入/输出数据。我之前已经做过,并且有一个工作示例,但要等到星期一才能进行验证。但是,请尝试[URL="http://www.mathworks.com/support/solutions/en/data/1-1BWDA/?solution=1-1BWDA"]在Mathworks网站上[/URL]列出的解决方案:
[INDENT]解:

在Simulink中使用可变掩码参数时,基本工作空间是Simulink的默认源工作空间。但是,通过使用SIMSET命令,可以更改此工作空间。然后,将SIM与SIMSET创建的此选项结构一起使用。以下是有关如何执行此操作的示例。

options = simset('SrcWorkspace','current'); sim('modelname',[],options) [/INDENT]...虽然显然由于与Parallel Computing Toolbox不兼容而在R2009b中已弃用> :(似乎正确的解决方案是使用[URL="http://www.mathworks.com/help/techdoc/ref/assignin.html"]assignin()[/URL]将变量显式推入仿真的模型工作空间(不同于基本工作空间[URL="http://www.mathworks.com/help/techdoc/ref/assignin.html"]assignin()[/URL] 。

[URL]http://www.mathworks.com/matlabcentral/newsreader/view_thread/292544[/URL]
[INDENT]您有2个选择:
[LIST=1][*]对于R2009b之前的版本,请查看SIMSET文档。它允许您将“ SrcWorkspace”属性设置为“ current”以使用函数中的数据。[/LIST][URL="http://www.mathworks.com/support/solutions/en/data/1-1BWDA/?solution=1-1BWDA"]http://www.mathworks.com/support/solutions/zh-CN/data/1-1BWDA/?solution=1-1BWDA[/URL]
[LIST=1][*]在较新的版本中,不赞成使用此选项,因为它与Parallel Computing Toolbox和PARFOR不兼容。我推荐的是:[/LIST][URL="http://www.mathworks.com/support/solutions/en/data/1-ASPEIV/?solution=1-ASPEIV"]http://www.mathworks.com/support/solutions/zh-CN/data/1-ASPEIV/?solution=1-ASPEIV[/URL]

[/INDENT]
[url=https://stackoverflow.com/questions/5279199]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 09:26

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.