How to create a symmetric random matrix with zero diagonal and with entries just 0 and 1

15 vues (au cours des 30 derniers jours)
There is the follwoing code
d = 1000000*rand(N,1); % The diagonal values
t = triu(bsxfun(@min,d,d.').*rand(N),1); % The upper trianglar random values
M = diag(d)+t+t.'; % Put them together in a symmetric matrix
responding to the question "How to create a symmetric random matrix?" at MathWorks. But my question is a bit different. I was wondering if someone could help about creating a random symmetric random matrix with zero diagonal and with entries just 0 and 1.
Thanks in advance.

Réponse acceptée

Walter Roberson
Walter Roberson le 5 Juin 2021
Modifié(e) : Walter Roberson le 5 Juin 2021
N = 10;
temp = randi([0 1], N, N);
d = tril(temp,-1);
M1 = d + d.'
M1 = 10×10
0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 0 0 1 1 0
M2 = xor(temp, temp.')
M2 = 10×10 logical array
0 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 1 0 0
  5 commentaires
Mojtaba Mohareri
Mojtaba Mohareri le 5 Juin 2021
Understood completely. Thank you very much for your help and consideration.
Mojtaba Mohareri
Mojtaba Mohareri le 5 Juin 2021
I have a related question. When I generate a random matrix (with for example the following code)
bounds = [-15,10];
A = rand(m,m) * range(bounds) + bounds(1)
there is no zero entry in matrix. Could please tell me how can I create a random matrix which has zero entries as well?

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Operating on Diagonal 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