【问题标题】:Select random '1' element from a logical matrix从逻辑矩阵中选择随机“1”元素
【发布时间】:2014-10-19 02:49:33
【问题描述】:

所以我想做的只是从 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”元素的数量

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    你应该找到 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-09
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多