2015-07-11 192 views
1

我想生成参数为(n,m)的随机二进制多项式。使用MATLAB生成随机多项式

n是要生成的多项式的数量 并且m是每个多项式的元素的数量。

在同一时间,我需要它的多项式是唯一的。 而且我还需要排除所有元素等于零的结果。

例如对于n=3m=3我在寻找类似于 [1 0 1] [1 0 0] [1 1 1]的东西。

是否有任何命令在mat实验室,我可以用来获得上述结果?如果可能的话,我也想避免for循环!

编辑:我发现命令unique(rand(n,m)>=0.5,'rows')将完成这项工作。但这并不能保证结果[0 0 0]将被排除

有什么想法吗?

回答

2

你的每一个多项式可以被解释为1和2^m-1之间的二进制数。

%get a random subset of size n 
X=randperm(2^m-1,n); 
%convert it to a matrix 
X=dec2bin(X)-'0'; 
+0

非常感谢大家! –

+0

@霍竺:我看到了你的建议编辑,这绝对是对代码的改进。对于这种改进,请写评论或写你自己的答案,编辑旨在格式错误,错别字,断开的链接等... – Daniel

+0

@DimitriC:我已经更新了代码 – Daniel