选择随机' 1'来自逻辑矩阵的元素

时间:2014-10-19 02:49:34

标签: matlab matrix

所以我要做的就是从matlab中的逻辑矩阵中选择随机的'1'元素。 假设我有一个这样的矩阵:

 A= 0 1 1 1 0
    0 1 0 1 1
    1 0 0 0 0
    0 0 1 0 0
    0 0 0 0 0

我有一个数字 n ,这是一个数字,代表在程序中选择多少'1'个元素

例如,如果n=3,那么输出可能如下所示:

 A'= 0 1 0 0 0
     0 0 0 0 1
     0 0 0 0 0
     0 0 1 0 0
     0 0 0 0 0

*请注意,n可能的最大值是正在处理的矩阵中“1”个元素的数量

1 个答案:

答案 0 :(得分:5)

你应该找到1的索引,选择n个唯一的随机整数,并处理这些索引:

n = 3;
A= [0 1 1 1 0;
    0 1 0 1 1;
    1 0 0 0 0;
    0 0 1 0 0;
    0 0 0 0 0];

% // idx of the ones in the matrix, also has information on size
idx = find(A == 1);

% // n unique rand numbers from 1 till nr_of_ones
randidx = randperm(numel(idx), n);

% // new matrix 
B = zeros(size(A));

% // select the random indexes
B(idx(randidx)) = 1