随机选择二进制矩阵 - Matlab

时间:2011-11-16 13:55:51

标签: matlab random matrix binary

我正在使用较大的二进制矩阵,目前高达100x100。

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

我的解决方案尝试使用函数randi(n)和n = 2 ^(30x30)选择1到2 ^(30x30)之间的数字,然后将结果转换为适当的二进制矩阵。我遇到的问题是randi(n)不会取n大于2 ^ 54的值。 Matlab一般似乎不喜欢非常大的数字。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

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

我没有MATLAB方便,但在Octave你会做unidrnd(2, n, n) - 1之类的事情。

答案 1 :(得分:2)

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

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

您还可以使用rand并对生成的矩阵进行阈值处理:

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

编辑:刚刚意识到它也适用于randi,语法如下:

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