所以我要做的就是从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”个元素的数量
答案 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