如何在MATLAB中动态创建变量

mat*_*mat 1 matlab

我想操纵变量名称.(就像在PHP中${}用来创建动态变量一样).举个例子:

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

for i = 1:N
  A_i = 'new variable!';
end
Run Code Online (Sandbox Code Playgroud)

结果将是:

A_1
A_2
...
A_N
Run Code Online (Sandbox Code Playgroud)

Ton*_*ony 10

如果你想以编程方式创建变量(不是推荐的做法,但如果你坚持),请参阅上一个问题: 在Matlab中动态创建变量的方法?.

正如我所说,这样做很麻烦,至少你可能希望将一些东西存储在一个结构中,这允许使用字符串变量以及使用paren语法的动态引用来编程创建元素.例如,在您的示例中,您可以使用:

N = 5;
for i = 1:N
    fieldname = sprintf('A_%i', i);
    s.(fieldname) = 'new variable!';
end
Run Code Online (Sandbox Code Playgroud)

如果您随后显示结构s,您将看到:

>> s
s = 
A_1: 'new variable!'
A_2: 'new variable!'
A_3: 'new variable!'
A_4: 'new variable!'
A_5: 'new variable!'
Run Code Online (Sandbox Code Playgroud)


kri*_*ion 6

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

A = cell(i,1);
for i = 1:N
    A{i} = 'new variable!';
end
Run Code Online (Sandbox Code Playgroud)

然后您可以使用以下方法访问"动态变量":

A{1}
Run Code Online (Sandbox Code Playgroud)

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