我想有2个变量的for循环,但理想情况下我希望如下:
如果我看起来正确,这应涵盖所有组合。如何通过一个或两个for循环实现此层次结构?每个“级别”的顺序无关紧要。
我的解决方案是:
for i=1:4
for j = 1:i
[i j]
[j i]
end
end.
这给出了期望值,但重复(i,i)值。这个问题是它只适用于方形矩阵,遗憾的是,对我来说情况并非如此。
答案 0 :(得分:2)
所以如果你想要一个for循环来产生这些值,那么这是一种方法:
b=[];
for n=1:3
for k=1:n
a(:,k)=[n k];
end
b{n}= [a flipud(a(:,1:size(a,2)-1))]';
end
celldisp(b)
b{1} =
1 1
b{2} =
2 1
2 2
1 2
b{3} =
3 1
3 2
3 3
1 3
2 3
您可以在b中选择所需的单元格以获取所需的值对。
答案 1 :(得分:1)
[x, y] = meshgrid([1:1:5],6:1:10);
foo = @(x_, y_) sprintf("C(%d, %d)\n", x_, y_);
foo(x, y)
这是次优的,因为它计算两次(n,n)。
答案 2 :(得分:0)
感谢您的所有输入。对我来说,最好的实现如下,其中n和m是i和j的范围:
for k = 2:n+m
[X,Y] = find((([1:n]' + [1:m])==k));
for I= [X Y]'
i = I(1)
j = I(2)
end
end