如何利用matlab把多组向量排列组合。

例如把A=[1 2 3];B=[4 5 6];C=[7 8 9]
排列组合成ABC,ACB,CBA,CAB,BAC,BCA;里面的元素不需要排列;只需要排列多个向量的顺序即可

生成全排列可以用perms函数,把各向量放在元胞数组中,然后按照全排列来组合即可:
M = {[1 2 3]; [4 5 6]; [7 8 9]};
I=perms(1:3);
C=mat2cell(I,ones(6,1),3);
R=cellfun(@(ii)[M{ii}],C,'UniformOutput',false)

这样得到的结果R是一个元胞数组,其每个元素分别是一个组合出来的向量。
>> cellfun(@(c)fprintf('%s\n',mat2str(c)),R)
[7 8 9 4 5 6 1 2 3]
[7 8 9 1 2 3 4 5 6]
[4 5 6 7 8 9 1 2 3]
[4 5 6 1 2 3 7 8 9]
[1 2 3 4 5 6 7 8 9]
[1 2 3 7 8 9 4 5 6]
温馨提示:答案为网友推荐,仅供参考
相似回答