2015-03-18 4 views
-1

У меня проблема с некоторыми валентностями. Я динамически создаю переменные в цикле.MATLAB: динамические переменные, не обновляемые непосредственно в рабочей области

for i=1:nbr 
    assignin('base', ['x_',num2str(i)],0) 
    end 

И после этого, я хотел бы поместить результат моей функции в эти переменные. Но переменные в базе рабочего пространства не обновляются напрямую, поэтому у меня есть ошибка «Неопределенная функция или переменная». Как я могу исправить свою проблему?

for i=1:nbr 
     ['x_',num2str(i)]= fonction(input); 
    end 

Спасибо заранее

Best Regard

+3

Это плохая практика. Лучше использовать клеточные массивы –

+0

Действительно, вам нужны массивы ячеек. Каждый элемент массива ячеек сам является матрицей или любой другой переменной MATLAB. Точно так же, как и имена динамических переменных, кроме чтения и более высокой производительности. – Peter

ответ

1

Вместо этого используйте массив ячеек:

x{i} = function(input); 

Тогда не возвращает массив всей ячейки обратно вызывающий, так что вы никогда необходимо использовать assignin. Тело всей функции будет выглядеть так:

function x = myfunction(someinput) 

for i=1:nbr 
    x{i} = someotherfunction(input); 
end 
% Cell array x is returned from the function 
Смежные вопросы