Объявите глобальные переменные в цикле в MATLAB - PullRequest
3 голосов
/ 26 июля 2011

Возможно ли объявить глобальные переменные в 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 Ответ

6 голосов
/ 26 июля 2011

Вы можете использовать функцию EVAL для этого:

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

Кроме того, поскольку GLOBAL принимает список имен переменных в командной строке, вы можетеизбегайте цикла for, используя SPRINTF для объединения имен переменных в одну строку для оценки:

 eval(['global' sprintf(' %s',cellvar{:})]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...