Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在嵌套的matlab for循环中的每次迭代中创建新变量名?_Matlab_Variables_For Loop_Variable Names - Fatal编程技术网

如何在嵌套的matlab for循环中的每次迭代中创建新变量名?

如何在嵌套的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 这似乎管

我想运行我的函数并创建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
这似乎管用,但我真的不明白。。。 我希望得到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);结束;结束。更好,不是吗?