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

作者: mann0614 (逼哩叭啦)   2014-07-16 01:34:52
目前在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的方法,還有其他方法能解決嗎?
先在這邊謝謝各位
作者: jatj   2014-07-16 09:05:00
http://goo.gl/QHWeyh exactly what you need
作者: kurt28   2014-07-18 22:13:00
推樓上 原PO至少也回應一下吧
作者: profyang (prof)   2014-07-19 15:16:00
是只能正整數嗎? 我覺得這不容易 就算有方法可以直接找出你要的解,他的個數大約也是你全部可能點數的一半吧也就是你現在全部可能列出來會爆 就算有方法找出你要的解也有可能會爆
作者: kurt28   2014-07-19 21:27:00
有回應有推!
作者: mann0614 (逼哩叭啦)   2014-07-20 10:31:00
是正整數沒錯!那p大可以講一下您的寫法嗎?說不定能夠對我有幫助,目前我的寫法只能用於固定的n,若n改變就必須手動改變code,希望目前至少能夠進展到輸入任意數n時也能夠跑的程度,謝謝
作者: profyang (prof)   2014-07-20 13:30:00
不好意思 昨天晚上頭腦不太清楚 請忽略我上面的推文XD你這基本上就是個重複組合的問題H(n,k)=C(n+k-1,k)重複組合簡單介紹: http://0rz.tw/HRcK7所以你要做的只是用nchoosek這個function把所有組合列出來就對了 當然你n和k太大而切n很接近k的話還是很可能爆掉就是了且
作者: mann0614 (逼哩叭啦)   2014-07-22 00:02:00
非常謝謝p大您的回覆,提供的資料也對我非常有幫助

Links booklink

Contact Us: admin [ a t ] ucptt.com