[讨论]如何产生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