How do I generate multiple binary matrices containing a single one in each row?
이전 댓글 표시
I want to generate multiple m x n (size of known matrix A) binary matrices. The rule to respect is that every row has to contain a single 1.
Suppose I want to generate 10 matrices called randmat of size(A). This is the code I've written combining suggestions found on this forum. It should use a for cycle to generate random matrices of 0 and 1, then force each row to sum up to 1. The problem is that I'm using variables of different type, and the code doesn't work (MATLAB error: 'Unable to perform assignment because brace indexing is not supported for variables of this type').
for i = 0:9
[r,c] = size(A);
randmat{i+1} = randi([0 1],r,c);
rowsum = sum(randmat,2);
randmat{i+1} = bsxfun(@rdivide,randmat{i+1},rowsum);
end
How could It be solved?
Thanks in advance for your help.
댓글 수: 3
Walter Roberson
2019년 7월 31일
For any one matrix
sparse(1:r, randi(c, q, r))
Davide Biaggini
2019년 7월 31일
편집: Davide Biaggini
2019년 7월 31일
Walter Roberson
2019년 7월 31일
Sorry, typo, on my phone 1 is long-press q so should have been randi(c, 1, r)
채택된 답변
추가 답변 (1개)
Andrei Bobrov
2019년 7월 31일
편집: Andrei Bobrov
2019년 8월 1일
May be so?
m = 8;
n = 6; % [m,n] = size(A);
k = 10;
[~,Anew] = sort(rand(m,n,k),2);% here fixed
M = Anew == 1;
댓글 수: 3
Davide Biaggini
2019년 7월 31일
편집: Davide Biaggini
2019년 7월 31일
Andrei Bobrov
2019년 7월 31일
Sorry! My typo, fixed.
Davide Biaggini
2019년 8월 1일
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!