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

3
在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

Matlab文档中提到: “全局命令没有函数形式(即,不能使用括号并引用变量名称)。” 有什么建议的解决方法吗?谢谢!

5
不要这样做!全局变量和使用eval最好避免。 - nibot
nibot 有一定道理。我想你可能有更好的方法来实现你想做的事情。 - gnovice
1个回答

6
您可以使用EVAL函数来实现此操作:
for var = 1:numel(cellvar)
  eval(['global ' cellvar{var}]);
end

此外,由于GLOBAL接受变量名称的命令行列表,您可以使用SPRINTF将变量名称连接成一个字符串以进行评估,从而避免使用for循环。
 eval(['global' sprintf(' %s',cellvar{:})]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接