【问题标题】:Declare global variables in a loop in MATLAB在MATLAB的循环中声明全局变量
【发布时间】:2011-07-26 17:53:22
【问题描述】:

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 文档说:“全局命令没有函数形式(即,您不能使用括号并引用变量名)。”任何建议的解决方法?谢谢!

【问题讨论】:

  • 不要这样做! 最好避免使用全局变量和eval
  • nibot 有道理。我想可能有更好的方法来做你想做的任何事情。

标签: matlab variables global


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多