我想实现这样的目标:
for(i=1:n)
x[i]=value %create a new variable for each x: x1,x2,x3
end
任何建议?
谢谢
答案 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 ...
。