如何在Matlab中定义n个符号变量?

时间:2013-11-13 12:42:03

标签: matlab symbolic-math

我想在Matlab中定义n个符号变量。例如,如果用户输入n=3,则编译器将x1x2x3定义为符号变量(n的范围不受限制)。我怎么能通过for循环来做到这一点?

3 个答案:

答案 0 :(得分:1)

我认为符号变量和常规变量的建议相同:

如果可以阻止它,请不要创建编号变量。改为使用矢量。

我自己无法尝试,但我相信doc syms会引导您:

A = sym('A',dim) %creates a vector or a matrix of symbolic variables.

答案 1 :(得分:0)

无需使用循环。

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个符号变量

答案 2 :(得分:0)

创建一个矢量为@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)