如何将随机变量分配给用户指定大小的数组中的元素?

时间:2017-03-05 02:31:43

标签: arrays matlab loops variables

enter image description here如果我有一个向量(n,1),其中'n'是用户指定的数字。

如何使用 MATLAB 随机地或至少在“for”或“while”循环中唯一地为变量的每个元素分配变量。

我的目标是给出线性方程组中每个变量的符号答案,我使用'MATLAB rref()'函数将方程式转换为可解的形式。

我知道我必须以符号形式这样做。

例如10变量向量(10,1),需要10个由计算机选择的唯一变量。

这个问题也是最好的选择!

谢谢

1 个答案:

答案 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次。然后使用makeValidNamemakeUniqueStrings

U =

  1×5 cell array

    'B'    'B_1'    'B_2'    'B_3'    'B_4'