保持矩阵的随机值

时间:2014-10-09 22:04:40

标签: matrix octave

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

E.g:

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

1 个答案:

答案 0 :(得分:0)

阅读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