是否可以从 S-Function 代码中访问工作区变量?
以下是无法正常工作的测试变体。中有一个MyVar
变量Model Workspace
,可以从 中看到Model Explorer
。行从DoPostPropSetup
自定义块代码的函数内运行。
适当的错误消息在帖子评论中
% a=evalin('Model Workspace', 'MyVar'); % Unknown command option.
% a=evalin('caller', 'MyVar'); % (incorrect workspace)
% a=Simulink.MyVar % Undefined variable "Simulink" or class "Simulink.MyVar".
% a=simulink.MyVar; % Undefined variable "simulink" or class "simulink.MyVar".
% a=Simulink.ModelWorkspace.evalin('MyVar'); % has no property or method named 'evalin'.
后者是直接违反记录在案的事实: http: //www.mathworks.com/help/simulink/slref/simulink.modelworkspace.html
更新
发现了一些新东西
% a=evalin('modelworkspace', 'MyVar'); % Unknown command option.
hws = get_param(bdroot, 'modelworkspace');
% a = hws.evalin('MyVar'); % Attempt to evaluate an expression in a read-only model workspace
a = hws.getVariable('MyVar'); % works
后一个命令有效,但(1)前一个命令说工作区是“只读的”,而我也需要写入变量。
并且 (2)bdroot
函数被记录为返回“顶级 Simulink 系统的名称”,这完全不清楚。我需要访问模型的工作区(不是它的名称),当前代码块所在的位置。