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

1 view (last 30 days)
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
John D'Errico
John D'Errico on 14 Feb 2017
Trivial.
eye(m,n)
That fits your requirements.
Do you have some more information on what you really need?
sn at
sn at on 14 Feb 2017
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

John D'Errico
John D'Errico on 14 Feb 2017
Edited: John D'Errico on 14 Feb 2017
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

More Answers (1)

the cyclist
the cyclist on 14 Feb 2017
One way to do this
eye(m,n)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!