How to create a m*n matrix with 0,1 entries?

In this matrix All entries are zeros except for a single 1 in each row and at most a single 1 in each column?

2 Comments

Trivial.
eye(m,n)
That fits your requirements.
Do you have some more information on what you really need?
nonzero elements are not necessarily on the main diagonal, in fact they must be randomly distributed: for example like this.
[1 0 0 0
0 0 1 0]

Sign in to comment.

 Accepted Answer

Did you say random until we had to prod you? :)
The requirements imply that m<=n.
A = eye(m,n);
A(randperm(m),randperm(n))
That yields a fixed number of ones. If you want the result to sometimes have less than m ones, then just start with a diagonal matrix with some of the diagonal elements as zero. Then you can define the number of non-zeros in advance. You can even choose the number of them randomly.
help diag

Asked:

on 14 Feb 2017

Edited:

on 14 Feb 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!