Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-14, 20:13   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何将输入提供给Simulink模型而不将其放置在工作区中

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

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



回答:

这不是很明显,但是您可以从sim()命令和调用函数的工作区输入/输出数据。我之前已经做过,并且有一个工作示例,但要等到星期一才能进行验证。但是,请尝试在Mathworks网站上列出的解决方案:
解:

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

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

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

更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 20:46


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