作者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