enter image description here如果我有一个向量(n,1),其中'n'是用户指定的数字。
如何使用 MATLAB 随机地或至少在“for”或“while”循环中唯一地为变量的每个元素分配变量。
我的目标是给出线性方程组中每个变量的符号答案,我使用'MATLAB rref()'函数将方程式转换为可解的形式。
我知道我必须以符号形式这样做。
例如10变量向量(10,1),需要10个由计算机选择的唯一变量。
这个问题也是最好的选择!
谢谢
答案 0 :(得分:0)
最简单的方法是使用命令sym
本身。
n = 7;
A = sym('A',[1 n])
A =
[ A1, A2, A3, A4, A5, A6, A7]
这使您可以对符号执行符号操作:
>> A(1)+A(2)-A(5)
ans =
A1 + A2 - A5
但是还有其他方法可以生成唯一变量。
只需使用genvarname
功能即可。给定所需的n
个变量,首先将变量的固定部分定义为单元格。在这里,我选择了A
。然后使用repmat
制作一堆,然后使用genvarname
生成唯一的变量名称。
n = 10;
oneVar = {'A'};
Vars = repmat(oneVar,1,n);
uniqueVars = genvarname(Vars)
uniqueVars =
1×10 cell array
'A' 'A1' 'A2' 'A3' 'A4' 'A5' 'A6' 'A7' 'A8' 'A9'
由于genvarname
将从MATLAB的下一版本中删除,如建议的那样,您可以使用以下函数:
n = 5;
S = repmat({'B'},1,n);
N = matlab.lang.makeValidName(S);
U = matlab.lang.makeUniqueStrings(N,{},namelengthmax);
所以在这里,你有n
你想要的变量数量,然后在变量的主要部分(B
这里),并重复n
次。然后使用makeValidName
和makeUniqueStrings
。
U =
1×5 cell array
'B' 'B_1' 'B_2' 'B_3' 'B_4'