gpt4 book ai didi

matlab - 如何在不将输入放入工作区的情况下向 Simulink 模型提供输入

转载 作者:太空宇宙 更新时间:2023-11-03 19:19:47 24 4
gpt4 key购买 nike

我有一个 Simulink 模型,目前正在从脚本(即不是函数)运行。该脚本将变量值写入 MATLAB 工作区,运行模型仿真(使用这些值),然后模型将其他值写入工作区。如果我尝试将脚本转换为一个函数(即通过将 function [output] = runSim() 放在文件的顶部)然后 Simulink 提示它不知道变量,大概因为它们不在 MATLAB 工作区中,而是在函数范围内。

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

最佳答案

这并不明显,但您可以从 sim() 命令和调用函数的工作区输入/输出数据。我以前做过,并且在工作中有一个例子,但要到星期一才能到那里进行验证。但是,请尝试列出的解决方案 on Mathworks's site :

Solution:

When using variable mask parameters in Simulink, the base workspace is the default source workspace of Simulink. However, by using the SIMSET command, this workspace can be changed. SIM is then used with this options structure created by SIMSET. The following is an example on how to do this.

  options = simset('SrcWorkspace','current');
sim('modelname',[],options)

...虽然显然由于与并行计算工具箱不兼容,这在 R2009b 中被弃用了 >:( 看起来正确的解决方案是使用 assignin() 将变量显式推送到模拟的模型工作区(不同于基础工作区)。

http://www.mathworks.com/matlabcentral/newsreader/view_thread/292544

You have 2 options:

  1. For releases before R2009b, look at the SIMSET documentation. It allows you to set the "SrcWorkspace" property to "current" to use the data from your function.

http://www.mathworks.com/support/solutions/en/data/1-1BWDA/?solution=1-1BWDA

  1. In newer releases, this option is deprecated because it is not compliant with the Parallel Computing Toolbox and PARFOR. What I recommend is:

http://www.mathworks.com/support/solutions/en/data/1-ASPEIV/?solution=1-ASPEIV

关于matlab - 如何在不将输入放入工作区的情况下向 Simulink 模型提供输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5279199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com