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

时间:2011-07-26 17:53:22

标签: matlab variables 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

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

1 个答案:

答案 0 :(得分:6)

您可以使用EVAL功能执行此操作:

for var = 1:numel(cellvar)
  eval(['global ' cellvar{var}]);
end

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

 eval(['global' sprintf(' %s',cellvar{:})]);