在MATLAB中的循环中声明全局变量

Mad*_*ddy 3 variables matlab global

是否可以在循环内的MATLAB中声明全局变量:

cellvar = { 'ni' ; 'equity' ; 'assets' } ;
for i = 1:size(cellvar,1)
    global cellvar{1}  % --> THIS GIVES AN ERROR
end

% Desired result:
global ni
global equity
global assets
Run Code Online (Sandbox Code Playgroud)

Matlab文档说:"没有全局命令的函数形式(即,你不能使用括号并引用变量名称)." 任何建议的解决方案?谢谢!

gno*_*ice 6

您可以使用EVAL函数执行此操作:

for var = 1:numel(cellvar)
  eval(['global ' cellvar{var}]);
end
Run Code Online (Sandbox Code Playgroud)

此外,由于GLOBAL接受变量名称的命令行列表,因此可以通过使用SPRINTF将变量名称连接成一个要评估的字符串来避免for循环:

 eval(['global' sprintf(' %s',cellvar{:})]);
Run Code Online (Sandbox Code Playgroud)