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

1 visualización (últimos 30 días)
sn at
sn at el 14 de Feb. de 2017
Editada: sn at el 14 de Feb. de 2017
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 comentarios
John D'Errico
John D'Errico el 14 de Feb. de 2017
Trivial.
eye(m,n)
That fits your requirements.
Do you have some more information on what you really need?
sn at
sn at el 14 de Feb. de 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]

Iniciar sesión para comentar.

Respuesta aceptada

John D'Errico
John D'Errico el 14 de Feb. de 2017
Editada: John D'Errico el 14 de Feb. de 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

Más respuestas (1)

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

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by