在MATLAB中将变量插入变量名称

时间:2013-11-22 03:31:52

标签: matlab variables interpolation

我将循环遍历代码k次(其中k = 1,2,3,4,5)。在每个循环中,我创建一个名为“atomDistances”的变量。显然,我现在拥有它的方式,我只从最后一次k迭代(k = 5)得到“atomDistances”变量。

我是否可以通过将整数变量k(1,2,3,4,5)插入变量名atomDistances_k来在每次迭代中创建一个名为“atomDistances_1,atomDistances_2,...,atomDistances_5”的变量?

如果在MatLab中可以实现这一点有困难,因为它似乎没有其他几种语言版本。谢谢!!!

2 个答案:

答案 0 :(得分:4)

您建议可以使用eval,如下所示:

eval(sprintf('atomDistances_%d = atomDistances;',k));

我建议不要使用此方法,因为使用eval通常不是最佳做法。您是否尝试过使用单元阵列?例如:

atomDistances = cell(1,5);
for k=1:5
    atomDistances{k} = ...;
end

然后,您可以使用atomDistances{1}等访问每个循环结果

答案 1 :(得分:0)

当然,Matlab可以做到这一点。使用eval。下面的循环创建了您要求的五个变量。

for k=1:5
   eval(['atomDistances_' num2str(k) '=' num2str(k)]); 
end