如何在MATLAB中动态创建变量

时间:2015-04-23 02:48:27

标签: matlab

我想操纵变量名称。 (就像在PHP中一样,您使用${}来创建动态变量)。例如:

我想用A_N作为名称创建N个变量:

for i = 1:N
  A_i = 'new variable!';
end

结果将是:

A_1
A_2
...
A_N

2 个答案:

答案 0 :(得分:6)

我不知道动态变量,但普遍接受的方式来存储没有结构的动态内容是使用单元格而不是新的变量名称。您可以在单元格的每个元素中存储任何类型。你甚至可以在细胞内存储细胞!您可以使用以下代码。

A = cell(i,1);
for i = 1:N
    A{i} = 'new variable!';
end

然后您可以使用:

访问“动态变量”
A{1}

如果您正在寻找更复杂的结构,您也可以考虑结构。为了澄清,这不是@Tony描述的结构方法,而是内置structured array

答案 1 :(得分:3)

您可以使用函数 eval 动态创建变量,但这不是一个好习惯。我强烈建议像其他人指出的那样使用细胞或结构。但如果这是你想要的:

for i=1:N
    eval(sprintf('A_%d = %d',i,i));
end

这将创建A_1 = 1,A_2 = 2等等。