我想从1获得一个连续数字的数组到两个嵌套循环的限制的乘积。我希望下面的例子能够澄清这个问题。如果我有嵌套循环:
for i = 1:limit_loop_1
for j = 1:limit_loop_2
a = ???;
disp(a)
end
end
我想获得a = (1:(limit_loop_1*limit_loop_2))'
例如,拥有:
for i = 1:3
for j = 1:5
a = ????;
disp(a)
end
end
我想得到:
a=
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
我发现了类似的Java问题(如here),但对于Matlab却没有。提前谢谢。
编辑:我需要这个特殊的程序,因为我将使用索引来引用另一个数组。所以,如果我在嵌套循环中有一个大小为(100,1,15)的3D数组A,我想在每次迭代时考虑数组的15个元素中的每一个。在代码中,这将是:
for k = 1:100
for i = 1:3
for j = 1:5
something = A (k,1,????)
end
end
end
这就是为什么?????应该从1到15.希望这能澄清我的问题。
答案 0 :(得分:0)
显然,您已经提供的解决方案(a = (1:(limit_loop_1*limit_loop_2))'
)是正确且非常好的。但是,如果必须使用嵌套循环,只需将a
视为外部计数器
a=0;
for i = 1:3
for j = 1:5
a = a+1;
disp(a)
end
end
这基本上计算了使用嵌套循环进行的迭代次数(在这种情况下为3 * 5)。
或者如果你想利用索引i
和j
,你可以重新调整Matlab中的Java示例,考虑到在Matlab中索引从1开始,而在Java中它们从0:
for i = 1:3
for j = 1:5
c =1+(j-1)*1+(i-1)*(5);
disp(c)
end
end
答案 1 :(得分:-1)
我不知道你为什么要这样做,但我会接受你的话。这将为您提供所需的结果:
for ii = 1:3
for jj = 1:5
a = 5*(ii-1)+jj;
disp(a)
end
end
(我更改了i
和j
的循环变量,因为默认情况下它们是假想的单位变量,如果你覆盖它们,有些人会感到沮丧。)
结果:
>> loop15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15