在MATLAB中创建1&0和0的矩阵,其中1的数量有一个限制

时间:2014-09-15 13:33:26

标签: matlab random matrix

例如我有:

A = 5
B = randi([0 1], 5, 5)

我会制作一个随机的5x5矩阵和0'

我怎样才能限制矩阵,因此它只有A的值为1,所以在这种情况下为5 1?

2 个答案:

答案 0 :(得分:7)

这里创建了一个零的矩阵B,它具有所需的大小,然后B的随机位置变为1

A = 5;
B = zeros(5,5);
B(randperm(numel(B),A)) = 1

输出

B =

     0     1     0     0     0
     0     0     0     0     0
     0     0     0     0     1
     1     0     1     0     1
     0     0     0     0     0

答案 1 :(得分:1)

以下是使用datasample的替代解决方案,其中,与@ RTL的解决方案类似,您首先创建一个零矩阵,然后添加给定数量的矩阵:

clc;
clear all;

A = 5;
B = zeros(5,5);

y = datasample(1:size(B,1)*size(B,2),A) % Randomly select 5 (i.e. A) linear indices which will be replaced by 1.

B(y) = 1

y =

12    17     1    22    14

B =

 1     0     0     0     0
 0     0     1     1     1
 0     0     0     0     0
 0     0     1     0     0
 0     0     0     0     0