Как определить n символьных переменных в Matlab?

Я хочу определить n символических переменных в Matlab. Например, если пользователь вводит n=3, то компилятор определяет x1, x2, x3 как символьные переменные (диапазон n не ограничен). Как я могу сделать это с помощью цикла for?


person user2987710    schedule 13.11.2013    source источник


Ответы (3)


Я полагаю, что для символических переменных применим тот же совет, что и для обычных переменных:

Если вы можете предотвратить это, не создавайте числовые переменные. Вместо этого используйте вектор.

Я не могу попробовать это сам, но я думаю, что doc syms приведет вас к этому:

A = sym('A',dim) %creates a vector or a matrix of symbolic variables.
person Dennis Jaheruddin    schedule 13.11.2013

Нет необходимости использовать цикл.

N = input('How many variables? ');
strArray = [ repmat('x',N,1) dec2base(1:N,10) repmat(' ',N,1)]; % create strings
strArray = strvcat(regexprep(mat2cell(strArray, ...
  ones(1,size(strArray,1)), size(strArray,2)),'x0+','x')).'; % remove heading 0's
str = ['syms ' strArray(:).']; % string to be avaluated
eval(str)

Например, при вводе «11» строка

syms x1  x2  x3  x4  x5  x6  x7  x8  x9  x10 x11 

строится и оценивается, что создает 11 символических переменных,

person Luis Mendo    schedule 13.11.2013

Создание вектора, как показывает @DennisJaheruddin, действительно является стандартным способом, но если вам действительно нужны отдельные переменные:

for i = 1:10
    x = sprintf('x%d',i);
    assignin('caller',x,sym(x));
end

Или это будет сделано в одной строке:

arrayfun(@(n)assignin('caller',sprintf('x%d',n),sym(sprintf('x%d',n))),1:10)
person horchler    schedule 13.11.2013