我想运行我的功能并创建3种不同的输出变量。
for i=1:3
for j=1:3
Rent_nb = landrent(i,j,Dist);
end
end
我希望“_nb”为1,2,3 ...所以我得到3个输出数组。
所以我在互联网上看到了,我看到我必须使用它:
http://www.mathworks.com/matlabcentral/answers/29712-creating-a-new-variable-in-each-iteration
所以这会给我:
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).. 但我真的不明白这是如何工作的或它的作用。 有人可以解释/帮助吗?
由于
答案 0 :(得分:1)
单独写出命令(对字符串)然后对其进行评估可能会有所帮助,因此您将能够准确地看到正在评估的语句:
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
都会替换之前的结果
如果您决定继续使用上述内容并创建新变量而不是使用矩阵,则可以执行以下操作 - 在renti
的每次迭代中创建i
向量,然后使用当你迭代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