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

3 vues (au cours des 30 derniers jours)
sn at
sn at le 14 Fév 2017
Modifié(e) : sn at le 14 Fév 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 commentaires
John D'Errico
John D'Errico le 14 Fév 2017
Trivial.
eye(m,n)
That fits your requirements.
Do you have some more information on what you really need?
sn at
sn at le 14 Fév 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]

Connectez-vous pour commenter.

Réponse acceptée

John D'Errico
John D'Errico le 14 Fév 2017
Modifié(e) : John D'Errico le 14 Fév 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
  1 commentaire
sn at
sn at le 14 Fév 2017
Modifié(e) : sn at le 14 Fév 2017
Thanks.

Connectez-vous pour commenter.

Plus de réponses (1)

the cyclist
the cyclist le 14 Fév 2017
One way to do this
eye(m,n)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by