How do I generate multiple binary matrices containing a single one in each row?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Davide Biaggini
am 31 Jul. 2019
Kommentiert: Davide Biaggini
am 1 Aug. 2019
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 Kommentare
Walter Roberson
am 31 Jul. 2019
Sorry, typo, on my phone 1 is long-press q so should have been randi(c, 1, r)
Akzeptierte Antwort
Weitere Antworten (1)
Andrei Bobrov
am 31 Jul. 2019
Bearbeitet: Andrei Bobrov
am 1 Aug. 2019
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 Kommentare
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!