我想在 Matlab 中定义 n 个符号变量。例如,如果用户输入,n=3
则编译器将x1
、x2
、定义x3
为符号变量(的范围n
是无限的)。如何for
循环执行此操作?
问问题
2634 次
3 回答
1
我想符号变量的建议与常规变量的建议相同:
如果可以防止它,请不要创建编号变量。请改用向量。
我自己无法尝试,但我相信doc syms
会引导您这样做:
A = sym('A',dim) %creates a vector or a matrix of symbolic variables.
于 2013-11-13T14:36:33.057 回答
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 个符号变量,
于 2013-11-13T12:58:23.240 回答
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)
于 2013-11-13T15:32:38.360 回答