[討論]如何產生0與1組成的矩陣的排列組合

看板MATLAB作者 (逼哩叭啦)時間11年前 (2014/07/16 01:34), 11年前編輯推噓4(5114)
留言20則, 4人參與, 最新討論串1/2 (看更多)
目前在matlab上遇到了些問題,所以到這個版上來請教各位, 請問若我有n個0,m個1,n與m有可能都很大,組成一個1X(n+m)的矩陣, 若我想得到所有組合,請問該怎麼做? 一開始我的想法是: n %1的數目 m %0的數目 A=[zeros(1,n) ones(1,m)] B=perms(A) C=unique(B,'rows') 但是perms裡面的值不能大於10個, 由於我的n+m一定大於10, 所以這方法就不適用了, 請問除了使用perms的方法,還有其他方法能解決嗎? 先在這邊謝謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.213.228.38 ※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1405445694.A.A4C.html

07/16 09:05, , 1F
http://goo.gl/QHWeyh exactly what you need
07/16 09:05, 1F

07/18 12:48, , 2F
為何不稍微回一下有沒有用呢?
07/18 12:48, 2F

07/18 22:13, , 3F
推樓上 原PO至少也回應一下吧
07/18 22:13, 3F
j大您好,您提供的資料非常有用,非常抱歉這麼晚才回覆您, 因為當時還有另一個問題想說能不能用您提供的資料來解決, 這樣就不用上來再問一遍了, 沒有及時回覆您在這裡跟您說聲抱歉, 這邊還有另一個問題想再請教版上的各位, 假設有一個1Xn的矩陣, 矩陣內的元素可重複且相加要等於K, 並得出所有的組合 例如: n=5 K=10 A=[a1 a2 a3 a4 a5] a1+a2+a3+a4+a5=10 一開始我的想法是先跑出所有可能的組合數, 再利用if判斷來挑出符合的矩陣, 因為我的寫法會把 [1 1 1 1 1 ] [2 2 2 2 2 ] ... [10 10 10 10 10 ] 這幾種可能都跑過, 所以當n與K很大時, 處理時間便會非常久, 且有可能會out memory, 所以想請問版上的各位是否有其他的方法能解決, 謝謝 ※ 編輯: mann0614 (49.213.228.38), 07/19/2014 00:56:44

07/19 15:16, , 4F
是只能正整數嗎? 我覺得這不容易 就算有方法可以直接找出
07/19 15:16, 4F

07/19 15:17, , 5F
你要的解,他的個數大約也是你全部可能點數的一半吧
07/19 15:17, 5F

07/19 15:17, , 6F
也就是你現在全部可能列出來會爆 就算有方法找出你要的解
07/19 15:17, 6F

07/19 15:18, , 7F
也有可能會爆
07/19 15:18, 7F

07/19 21:27, , 8F
有回應有推!
07/19 21:27, 8F

07/20 10:31, , 9F
是正整數沒錯!那p大可以講一下您的寫法嗎?說不定能夠對
07/20 10:31, 9F

07/20 10:31, , 10F
我有幫助,目前我的寫法只能用於固定的n,若n改變就必須
07/20 10:31, 10F

07/20 10:31, , 11F
手動改變code,希望目前至少能夠進展到輸入任意數n時也
07/20 10:31, 11F

07/20 10:31, , 12F
能夠跑的程度,謝謝
07/20 10:31, 12F

07/20 13:30, , 13F
不好意思 昨天晚上頭腦不太清楚 請忽略我上面的推文XD
07/20 13:30, 13F

07/20 13:33, , 14F
你這基本上就是個重複組合的問題H(n,k)=C(n+k-1,k)
07/20 13:33, 14F

07/20 13:34, , 15F
重複組合簡單介紹: http://0rz.tw/HRcK7
07/20 13:34, 15F

07/20 13:36, , 16F
所以你要做的只是用nchoosek這個function把所有組合列出
07/20 13:36, 16F

07/20 13:37, , 17F
來就對了 當然你n和k太大而切n很接近k的話還是很可能爆掉
07/20 13:37, 17F

07/20 13:37, , 18F
就是了
07/20 13:37, 18F

07/20 13:37, , 19F
07/20 13:37, 19F

07/22 00:02, , 20F
非常謝謝p大您的回覆,提供的資料也對我非常有幫助
07/22 00:02, 20F
文章代碼(AID): #1JnMO-fC (MATLAB)
文章代碼(AID): #1JnMO-fC (MATLAB)