作者klain (klain)
看板MATLAB
标题[问题[ 生出各种数字的排列组合
时间Sun Nov 20 15:06:52 2011
我想要生出一个矩阵, 列举所有给定集合内数字的各种排列组合
譬如给定集合{1,3,5}
我想生出一个27*3的矩阵,
包含[1 1 1]到[5 5 5]的27种排列组合.
我想到的是用
p=perms([1 1 1 3 3 3 5 5 5])
p(:,4:9)=[];
p=unique(p,'rows');
这样的确可以做到,
但是不知道有没有更好的方法呢?
因为这样写的话, 在perms那边会先生出一个很大矩阵, 然後再删除掉,
好像有点不必要的感觉.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.25.106
1F:→ klain:我注意到可以用meshgrid来解, 但是仅止於[1 1 1]~[5 5 5]这 11/20 15:38
2F:→ klain:种3维的case, 那如果是[1 1 1 1]~[5 5 5 5]呢? 11/20 15:38
3F:推 Raymond0710:A =[1 3 5]; ans = [A(i) A(j) A(k)] i,j,k =1~3 11/20 16:10
4F:→ Raymond0710:三个巢状回圈如何? 11/20 16:11
5F:推 Raymond0710:很笨的方法 更多维就更多回圈 11/20 16:15
6F:→ becherovka:全因子设计.p=[1 3 5];p=p(fullfact([3 3 3]));搞定... 11/20 16:50
7F:→ becherovka:这样应该最简单,也方便在高维度使用. 11/20 16:52
8F:→ DKer:wow! 学到新招了 ψ._. 11/20 16:53
9F:推 tyu:awesome!! 11/20 17:04
10F:→ klain:超级厉害! 11/20 19:36