我怎么能存储矩阵的列的所有可能的组合吗?

9的观点(30天)
例如我:[1 2 3;4 5 6;7 8 9]3 x3的矩阵。现在我想:[2 1 3;5 4 6;7 8 9]和其他组合。换句话说我希望所有 nchoosek (n, 2) nxn列的矩阵。

接受的答案

何塞•路易斯•
何塞•路易斯• 2014年7月25日
我建议你只保存指标,如果你真的需要。当然,你只有一个小矩阵,但所需的内存数量可以在组合问题成为一个问题非常快。
一个= [1 2 3;4 5 6;7 8 9];
idx =烫发(1:尺寸(a, 2));
2 = idx '
your_mat =(:,(二)
结束
3评论
Chenyang张
Chenyang张 2020年5月12日
在这种情况下如何让一个18 x3矩阵结果?谢谢你!

登录置评。

答案(1)

Ben11
Ben11 2014年7月25日
作为起点,你可以存储的输出函数的烫发是一个单元阵列,k细胞的细胞包含所有可能的排列的k列。例如:
清晰的所有
clc
= (1 2 3 4 5 6;7 8 9);
细胞(P = 1,大小(A, 1));
k = 1:尺寸(1)
P {k} =烫发((:,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
6 3 9 3 6 9
3 6 3 9 9 6
然后你可以实现一个循环取每一列的说P{1},得到的可能的组合列P {2}, P{3}等等。这可能是一个内置的函数,但是我不知道,抱歉。我希望会有帮助!

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!