如何在嵌套的matlab for循环中的每次迭代中创建新变量名?
我想运行我的函数并创建3个不同的输出变量如何在嵌套的matlab for循环中的每次迭代中创建新变量名?,matlab,variables,for-loop,variable-names,Matlab,Variables,For Loop,Variable Names,我想运行我的函数并创建3个不同的输出变量 for i=1:3 for j=1:3 Rent_nb = landrent(i,j,Dist); end end 我希望“_nb”是1,2,3。。。所以我得到了3个输出数组。 所以我在互联网上看到我不得不使用这个: 因此,这将给我: for i=1:3 for j=1:3 eval(['rent' num2str(i) '= landrent(i,j,Dist_lowcost)']); end end 这似乎管
for i=1:3
for j=1:3
Rent_nb = landrent(i,j,Dist);
end
end
我希望“_nb”是1,2,3。。。所以我得到了3个输出数组。
所以我在互联网上看到我不得不使用这个:因此,这将给我:
for i=1:3
for j=1:3
eval(['rent' num2str(i) '= landrent(i,j,Dist_lowcost)']);
end
end
这似乎管用,但我真的不明白。。。
我希望得到9个输出(I和j的每个组合一个),而不是3个。
我猜这和这个部分有关:num2str(I)。。
但我真的不明白它是如何工作的,或者它是做什么的。
有人能解释/帮助吗
感谢单独写出命令(到字符串中)并对其求值可能会有所帮助,因此您将能够准确地看到正在求值的语句:
for i=1:3
for j=1:3
cmd = ['rent' num2str(i) '= landrent(i,j,Dist_lowcost);'];
fprintf('command to evaluate is: %s\n',cmd); % or just step through the code
eval(cmd);
end
end
上述i==1
的输出为
command to evaluate is: rent1= landrent(i,j,Dist_lowcost)
command to evaluate is: rent1= landrent(i,j,Dist_lowcost)
command to evaluate is: rent1= landrent(i,j,Dist_lowcost)
请注意,对于每个j
,我们将rent1
重置为landrent(i,j,Dist_lowcost)
,这就是为什么您只得到三个输出-在j
上的每个后续迭代将替换先前的结果
如果您决定继续执行上述操作并创建新变量而不是使用矩阵,您可以执行以下操作-在每次迭代i
时创建renti
向量,然后在迭代j
时使用该向量:
for i=1:3
cmd = ['rent' num2str(i) '=zeros(1,3);'];
eval(cmd);
for j=1:3
cmd = ['rent' num2str(i) '(j)= landrent(i,j,Dist_lowcost);'];
fprintf('cmd=%s\n',cmd);
eval(cmd);
end
end
你真的不需要三个独立的变量。改为使用数组/矩阵。下面是如何创建矩阵:
对于i=1:3,对于j=1:3,Rent(i,j)=landrent(i,j,Dist);结束;结束代码>。更好,不是吗?