2011-11-16 135 views
2

我正在处理较大的二进制矩阵,此刻达到100x100。随机选择一个二进制矩阵 - Matlab

可以说我正在使用30x30的二进制矩阵。那么总共有2 ^(30x30)个二进制矩阵。我想随机选择一个二进制矩阵,其中每个2 ^(30x30)矩阵具有相同的被选择概率。

我的解决办法的尝试是使用函数兰迪(N),其中n = 2 ^(30×30),然后将结果转换到适当的二进制矩阵挑1和2 ^(30×30)之间的一个数字。我遇到的问题是randi(n)不会取大于2^54的n值。一般来说,Matlab似乎不喜欢非常大的数字。

有什么建议吗?

回答

2

如果每个布尔矩阵具有相等的概率,那么矩阵的元素每个都具有0和1的相等概率。您可以用均匀的随机布尔值填充适当大小的矩阵。

我没有MATLAB的方便,但在八度你会做一些像unidrnd(2, n, n) - 1

+0

谢谢,现在看起来很明显。全新的视角通常有助于...... :) – Martijn

2

可以使用randint在范围[0 1]:

matrix=randint(30,30,[0 1]); 

也可以使用rand和阈值所得的矩阵:

matrix=rand(30,30); 
matrix=round(matrix); 

EDIT:刚刚意识到它也适用与randi使用以下语法:

matrix=randi([0 1],30,30); 
+0

谢谢。我错过了@larsmans指出的每个单独元素具有1或0的相等概率的联系。 – Martijn

+0

非常感谢 – zhilevan