使用Strcat创建动态变量名

Jam*_*one 2 matlab eval

我有一个过程,重复存储在单独的文件夹中的一组数据.每次处理某个文件夹数据时,我需要新的变量名称,因为我需要在初始处理完成后将结果分开以进行更多处理.例如,在重复函数的每个新块的开头,我声明了数组

Set_1 = zeros(dim, number);

vectors_1 = zeros(dim, number);
Run Code Online (Sandbox Code Playgroud)

对于我需要的下一组数据:

`Set_2 = .........`
Run Code Online (Sandbox Code Playgroud)

等等.将会有很多这些集合,所以我需要一种方法来自动创建这些变量,并在函数中使用新的变量名称,同时在完成所有函数后保持它们是分开的.

我第一次尝试使用,strcat('Set_1',int2str(number)) = zeros(dim, number)但这不起作用,我相信因为这意味着我会尝试将数组设置为字符串.我敢肯定必须有一种方法来创建一个函数并动态创建变量,但它似乎超出了我,所以它可能非常明显,所以如果有人能告诉我一个很好的方法.

jpj*_*obs 10

我不是这样做的.这是一个坏习惯,最好使用单元格数组或结构来保存多个集合.每个字段有一个小的开销(大小),但稍后维护起来会容易得多.

如果你真的,真的想eval在你编写的字符串上使用它.

  • 对动态字段名称使用带有"dot-paren"表示法的结构.`s = struct; n = 12; var2v ='123.456'; var2n = sprintf('foo_%d',n); s.(var2n)= num2str(var2v);` (3认同)
  • 或使用单元格数组:`Sets = cell(nSets,1); vectors = cell(nSets,1); 对于k = 1:nSets,设置{k} =零(dim,number); 向量{K} =零(暗淡,数); end` (2认同)