Symmetric binary matrix with diagonal 0 values

1 vue (au cours des 30 derniers jours)
Dina Tarek
Dina Tarek le 21 Oct 2019
Commenté : Guillaume le 25 Nov 2019
I want to create a symmetric (10x10) binary matrix with n number of ones and the diagonal values ​​have to be 0s. Can anyone help me?
  1 commentaire
James Tursa
James Tursa le 21 Oct 2019
1's can be located anywhere, just not on the diagonal? Random locations? I am assuming n must be even?

Connectez-vous pour commenter.

Réponse acceptée

Guillaume
Guillaume le 21 Oct 2019
Guaranteed to work on the first try:
Msize = 10; %size of square matrix
N = 20; %number of ones on each side of the diagonale
M = zeros(Msize);
indices = nonzeros(tril(reshape(1:Msize^2, Msize, Msize), -1)); %get indices BELOW diagonale
M(indices(randperm(numel(indices), N))) = 1; %pick N indices and fill with 1
M = M | M.' %do the symmetry
  3 commentaires
Dina Tarek
Dina Tarek le 25 Nov 2019
Error using randperm
Inputs must be nonnegative scalar integers.
The above message appeared when I tried diffrent Msize
for example Msize = 12 or 13 or 9 ;
do you know how to solve this error
Guillaume
Guillaume le 25 Nov 2019
Your N is either non-integer, non-positive, or non-scalar.

Connectez-vous pour commenter.

Plus de réponses (1)

KALYAN ACHARJYA
KALYAN ACHARJYA le 21 Oct 2019
Modifié(e) : KALYAN ACHARJYA le 21 Oct 2019
Beware: Before Try (I posted it as answer, so that you may get some idea)
n=input('Eneter the value of n: ')
result=zeros(10,10);
while sum(result)~=n
result=ones(10,10)-diag(diag(ones(10,10))) & randi([0 1],[10 10]);
end
result
When it will works, depending on luck, as I have no idea how to control number on 1 generation in random matrics, but I have forced all diagonal elements to zeros.
During running the Matlab (Execution), you can stop it by pression Ctrl+S

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