如何存储矩阵列的所有可能组合?

6次观看(过去30天)
Samad Khansari.
Samad Khansari. 2014年7月25日
评论: 陈阳张20月12日
例如,我有:[1 2 3;4 5 6;7 8 9]作为3x3矩阵。现在我想要:[2 1 3;5 4 6;8 7 9]和它的其他所有组合。在其他单词中,我想要所有 nchoosek(n,2) NXN矩阵的列。

接受答案

josé-luis.
josé-luis. 2014年7月25日
如果您真的需要,我建议您只保存指数。当然,你只有一个小矩阵,但所需内存的数量可以在组合问题中变得非常快。
a = [1 2 3;4 5 6;7 8 9];
idx = perms(1:size(a,2));
为了II = IDX'
your_mat = a(:,ii)
结尾
3评论

登录评论。

更多答案(1)

本11.
本11. 2014年7月25日
作为起点,您可以存储函数'perms'的输出是一个小区阵列,其中kth小区单元包含kth列的所有可能的排列。例如:
清除全部
CLC.
a = [1 2 3; 4 5 6; 7 8 9];
p =单元格(1,尺寸(a,1));
为了k = 1:尺寸(a,1)
p {k} = perms(a(:,k))';%通知输出转换。
结尾
DISP('p {1}'
disp(p {1})
DISP('p {2}'
disp(p {2})
DISP('p {3}'
disp(p {3})
这给了这个:
p {1}
7 7 4 4 1 1
4 1 7 1 4 7
1 4 1 7 7 4
p {2}
8 8 5 5 2 2
5 2 8 2 5 8
2 5 2 8 8 5
p {3}
9 9 6 6 3 3 3
6 3 9 3 6 9
3 6 3 9 9 6
然后,您可以实现一个循环,您可以在其中拍摄每个列P {1},并获取与P {2},P {3}的列的可能组合。这可能是一个内置的功能,但我不知道抱歉。我希望能帮助!

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!