运行 来自 Matlab 函数的 Simulink
Run Simulink from Matlab function
我正在使用 FastRestart 运行ning Simulink,因为我需要多次更改参数来启动和停止仿真。当我从主脚本 运行 Simulink 时,没有问题。但是,一旦我将脚本设为函数以便我可以 运行 它用于不同的输入数据,我就会收到一个错误,该错误显然与 Simulink 在函数中看不到 Matlab 工作区有关。
更准确地说,说 sfile
是我的 Simulink 文件,然后我 运行 在初始化了 Matlab 结构中我需要的所有变量之后,我写了以下几行:
load_system(sfile);
set_param(sfile,'FastRestart','on');
set_param(sfile,'SaveFinalState','on');
set_param(sfile,'SaveCompleteFinalSimState','on');
set_param(sfile,'SimulationCommand','update');
在最后一行,我得到了 Simulink 无法识别 mdl.tStep
(这是时间步长)的错误,因为 mdl
不是可识别的结构。事实上,如果我从主脚本 运行 Simulink 一切都很好。
现在,在过去,我会使用
options = simset('SrcWorkspace','current');
但是,我认识的一位专家建议我不要使用 simset
(因为它将来可能会被弃用),并鼓励我改用 set_param
。我有
在线查找 set_param 的选项,但我找不到 Matlab 工作区的设置。
如有任何帮助,我们将不胜感激。提前致谢!
您的问题的一个解决方案可能是对您要将其值传递给 matlab 基础工作区中的 simulink 的所有变量使用 assignin
函数。为此,只需使用
assignin('base','mdl',mdl)
在基础工作区中包含变量应该允许 simulink 看到它。
在许多情况下,最好使用 Model Workspace
而不是 Base Workspace
:
hws = get_param(model, 'modelworkspace');
hws.assignin('mdl',mdl);
至少要知道这个选项存在。
我正在使用 FastRestart 运行ning Simulink,因为我需要多次更改参数来启动和停止仿真。当我从主脚本 运行 Simulink 时,没有问题。但是,一旦我将脚本设为函数以便我可以 运行 它用于不同的输入数据,我就会收到一个错误,该错误显然与 Simulink 在函数中看不到 Matlab 工作区有关。
更准确地说,说 sfile
是我的 Simulink 文件,然后我 运行 在初始化了 Matlab 结构中我需要的所有变量之后,我写了以下几行:
load_system(sfile);
set_param(sfile,'FastRestart','on');
set_param(sfile,'SaveFinalState','on');
set_param(sfile,'SaveCompleteFinalSimState','on');
set_param(sfile,'SimulationCommand','update');
在最后一行,我得到了 Simulink 无法识别 mdl.tStep
(这是时间步长)的错误,因为 mdl
不是可识别的结构。事实上,如果我从主脚本 运行 Simulink 一切都很好。
现在,在过去,我会使用
options = simset('SrcWorkspace','current');
但是,我认识的一位专家建议我不要使用 simset
(因为它将来可能会被弃用),并鼓励我改用 set_param
。我有
在线查找 set_param 的选项,但我找不到 Matlab 工作区的设置。
如有任何帮助,我们将不胜感激。提前致谢!
您的问题的一个解决方案可能是对您要将其值传递给 matlab 基础工作区中的 simulink 的所有变量使用 assignin
函数。为此,只需使用
assignin('base','mdl',mdl)
在基础工作区中包含变量应该允许 simulink 看到它。
在许多情况下,最好使用 Model Workspace
而不是 Base Workspace
:
hws = get_param(model, 'modelworkspace');
hws.assignin('mdl',mdl);
至少要知道这个选项存在。