MATLAB: How to generate multiple binary matrices containing a single one in each row

binaryMATLABmatrix manipulationrandom

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.

Best Answer

For those interested, here is the working solution that I found. The code generates a sequence of values via rand and sets the maximum of each row to 1, while the other values are set to 0. Each random binary array is stored in the initial 3d matrix. As example, in order to generate 5 random 7x3 binary matrices, containing only a single 1 in each row:
k=5; % number of (mxn) matrices
m=7;
n=3;
M = rand(m,n,k);
for i=1:k
M(:,:,i) = double(bsxfun(@eq, M(:,:,i), max(M(:,:,i), [], 2)));
end