如何在循环中将字符串转换为变量名?

时间:2016-06-02 11:57:15

标签: matlab

我开发了一个matlab代码,我现在必须修改它才能变成循环。我希望在每次迭代时使用不同的变量名保存我的数据(不会在每次迭代开始时更改变量名)。在这里,我提供一个示例来解释我想要做的事情:

Matrix = rand(1000,3);
Dominated = 0;
Flag = 0;
k=0;
for k=1:10
   for i = 1:size(Matrix,1)
      Dominated = i
   end
    genvarname(sprintf('Dominated_%d',k)) = Dominated(:,:);
 end

但是,如果我执行此代码,它不会为我提供一个名为“Domianted_1”,“Domanted_2”等的变量,但是有一个名为“genvarname”的变量(在每次迭代时替换)包含已完成的内容我的代码。如何修改代码以在每次迭代时获得不同的变量名称?

1 个答案:

答案 0 :(得分:2)

您正在寻找assignin,替换:

genvarname(sprintf('Dominated_%d',k)) = Dominated(:,:);

assignin('base',sprintf('Dominated_%d',k),Dominated(:,:));

但我建议使用结构:

allDominated.(sprintf('Dominated_%d',k)) = Dominated(:,:)