作者Feltonee (ee)
看板MATLAB
標題[請益] 關於排列組合不重覆
時間Tue Apr 28 14:47:16 2015
我想要寫一個1x16的矩陣
全由正1負1組成
ex:[1,-1,1,........];
目前我用隨機方法產生
但是現在想要指定正1的數目
ex:我先要7個1,9個-1
之後會套用到1x32,1x64
並且不希望重覆
當然如果有重覆的方法也可以
想請問各位前輩高手是否有解
謝謝
--
Sent from my Android
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.124.42.233
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1430203638.A.B71.html
1F:→ celestialgod: de2bi(1:(2^k-1))*2-1 其中k是+1跟-1的個數總和 04/28 14:55
2F:→ celestialgod: 我錯了,不要理我QQ... 04/28 14:56
3F:→ celestialgod: nchoosek(1:16, 7)把全1的矩陣換掉對應位置變成-1 04/28 15:02
4F:推 celestialgod: m = nchoosek(1:16, 7);res = ones(size(m, 1), 16) 04/28 15:07
5F:→ celestialgod: for i = 1:size(m, 1), res(i, m(i,:)) = -1; end 04/28 15:07
6F:→ celestialgod: 應該有更好的方法QQ 04/28 15:07
7F:→ celestialgod: perms([ones(1,7), -ones(1, 9)])不過他不給我跑XD 04/28 15:12
8F:→ Feltonee: 謝謝C大 那請問如果我想要隨機取 畢竟這樣會一次RUN 04/28 15:13
9F:→ Feltonee: 全部,資料量過大 04/28 15:13
10F:→ celestialgod: 對不起,我沒看到隨機取... 04/28 15:15
11F:→ celestialgod: 那就直接 randsample(1:16, 7) 04/28 15:16
12F:→ Feltonee: 還是很感謝你^_^,你已經幫我很大的忙了XDD 04/28 15:17
13F:→ celestialgod: randsample 可以用randperm(1:16)取前7個 04/28 15:17
14F:→ celestialgod: randsample比較舊的版本沒有 04/28 15:18
15F:→ celestialgod: 隨機取沒有重複,感覺不太可能= = 04/28 15:19
16F:→ celestialgod: 除非記錄你已經取出來的,再做比對 04/28 15:19
17F:→ celestialgod: 但是到最後記憶體還是會爆掉 04/28 15:19
18F:→ celestialgod: 可以考慮用MEX...取道一定數目停止再從斷點取 04/28 15:22
19F:→ celestialgod: 利用c++的next_combination 04/28 15:22
20F:→ celestialgod: 我之前就這樣分開去算...我要的GLOBAL MAX... 04/28 15:23
21F:→ Feltonee: OK 謝謝你 這兩個方法我都會試一試 ^__^ 04/28 15:32