在每次迭代MATLAB中创建变量

时间:2014-02-02 21:22:02

标签: matlab

我想实现这样的目标:

for(i=1:n)
x[i]=value    %create a new variable for each x: x1,x2,x3
end

任何建议?

谢谢

3 个答案:

答案 0 :(得分:8)

您不需要不同的变量。您可以使用eval执行此操作,但我不会进入并推荐它。

我的回答取决于value变量的尺寸。我想说如果它是一个数字,那么使用以下内容:

for i=1:n
   x(i)=value;    
end

如果value是字符串或矩阵或不同大小的矢量等,则使用单元格数组。

for i=1:n
   x{i}=value; %notice curly braces.    
end

答案 1 :(得分:3)

你永远不应该这样做。为了清楚起见,不要使用eval这样做:

eval(['x' num2str(count) ' = i^2']);

答案 2 :(得分:0)

另一种方法是使每个x[i]成为结构S中的一个字段。然后你可以做这样的事情

S = struct;
i = 1:n;
tmp = strsplit(num2str(i));

for i = i
    S.(['x',tmp{i}]) = value(i);
end

然后调用S会产生

S = 

 x1: 0.6557
 x2: 0.0357
 x3: 0.8491
 x4: 0.9340
 ... 

(在这种情况下,我只使用了value的随机数。)您无法生成x.1, x.2等等,因为不允许使用以'1'等数字字符开头的字段。如果您对a, b, c ...等字段感到满意,那么您可以通过与上述类似的方式生成x.a, x.b, x.c ...