我有这个矩阵,并且希望使用这个数据组成的列组成方阵(8x8)的所有组合。
4 2 4 3 2 3 3 2 8 4 9 7 6 6 6
2 0 4 1 0 3 0 8 5 0 9 3 7 7 1
2 1 2 1 1 3 1 4 5 2 4 2 6 6 3
0 0 2 2 1 2 3 9 1 1 4 4 4 4 6
4 0 1 0 4 2 3 1 8 1 3 0 5 5 7
3 1 4 0 0 1 0 2 6 2 9 1 2 2 0
1 2 1 4 0 3 4 1 3 4 3 9 7 7 9
2 0 0 4 0 0 3 1 5 0 1 9 1 1 7
即使在重播Matlab Loop of all combinations之后 我不确定如何进行所有矩阵组合,并在itteration中获得的组合名称中包含for循环中的计数器。
答案 0 :(得分:1)
我调用了你的矩阵A
。
p=nchoosek(1:15,8);
给出了从1到15的8个数字的所有组合。这些代表了你想要的矩阵A
的列。
现在有3种方法可以继续。首先,使用for
循环:
M=zeros(8,8,size(p,1));
for i=1:size(p,1)
M(:,:,i)=A(:,p(i,:));
end
将每个8x8矩阵放入一个更大的3D数组中。例如,您可以通过M(:,:,54)
获取单个矩阵。
您还可以创建一个单元格数组:
N=arrayfun(@(k) A(:,p(k,:)),1:size(p,1),'UniformOutput',false);
并通过N{54}
获取单个矩阵。
最后,您无法预先计算每个矩阵,只需在需要时拉出相应的列。如果不重用矩阵,这可能是最有效的方法:
O=A(:,p(54,:));