使用string中的名称创buildvariables

假设我想创build10个variables,如下所示:

x1 = 1; x2 = 2; x3 = 3; x4 = 4; . . xi = i; 

这是我打算做的简化版本。 基本上我只想通过以自动方式创build这些variables来节省代码行。 有没有可能在Matlab中构造一个variables名? 我的例子中的模式是["x", num2str(i)] 。 但我不能find一种方法来创build一个名称的variables。

你可以用eval来做,但你真的不应该这样做

 eval(['x', num2str(i), ' = ', num2str(i)]); %//Not recommended 

而是使用单元格数组:

 x{i} = i 

我也强烈build议使用单元格数组或结构来处理这种情况。 我想这甚至会给你一些提升。

如果你真的需要这样做丹告诉过如何。 但是我也想指向genvarname函数。 这将确保您的string是一个有效的variables名称。

编辑:genvarname是核心matlab的一部分,而不是统计工具箱的一部分

 for k=1:10 assignin('base', ['x' num2str(k)], k) end 

如果其他人有兴趣,丹的答案正确的语法是:

 eval(['x', num2str(i), ' = ', num2str(i)]); 

我的问题已经包含了错误的语法,所以这是我的错。

虽然早该迟了,但我还是想补充一点。

函数genvarname正是这些情况

如果你使用tmp结构数组,你不需要eval cmd

从这个链接的例子4是如何做到这一点http://www.mathworks.co.uk/help/matlab/ref/genvarname.html

  for k = 1:5 t = clock; pause(uint8(rand * 10)); v = genvarname('time_elapsed', who); eval([v ' = etime(clock,t)']) end 

祝一切顺利

的Eyal

我需要类似这样的东西,因为如果你想在模拟过程中改变它们的话,你不能在Simulink块的工作区中引用结构(或者我设想的单元arrays)。

无论如何,对我来说,这是最好的

 assignin('base',['string' 'parts'],values);