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

4 visualizzazioni (ultimi 30 giorni)
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 Commenti
John D'Errico
John D'Errico il 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 il 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]

Accedi per commentare.

Risposta accettata

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

Più risposte (1)

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

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by