【问题标题】:Keep random values from matrix保留矩阵中的随机值
【发布时间】:2014-10-10 10:35:47
【问题描述】:

我有一个矩阵,其中包含 N 个条目,每个条目有 M 行。每行包含 0 和 1。我想创建第二个具有相同大小的矩阵,但在每一行中只应该留下一个 1,每隔一个值应该是 0。应该随机选择哪个值应该是 1。

例如:

0 1 1 0 1
1 1 0 0 1
0 0 1 1 0
->
0 1 0 0 0
1 0 0 0 0
0 0 0 1 0

【问题讨论】:

    标签: matrix octave


    【解决方案1】:

    阅读findrandperm的文档

    %//preallocate the output matrix
    out = zeros(size(a));
    
    %for each row, take a random sample from the indices holding value 1     
    for i = 1:size(a,1)
         temp2 = find(a(i,:));
         out(i,temp2(randperm(numel(temp2))(1))) = 1;
    end
    

    观看运行中的代码here

    【讨论】:

      猜你喜欢
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 2016-06-30
      相关资源
      最近更新 更多