how to create adjacency matrix

조회 수: 1 (최근 30일)
chan
chan 2015년 10월 3일
댓글: Walter Roberson 2015년 10월 4일
How to create adjacency matrix 10 by 10 based on this developed commands
X=randi([1,1000],10,1); M=[X,X(randperm(length(X)))];
Whenever there is a common value in the matrix developed assign 1 in the matrix 10 by 10 else 0. (using for loop)
  댓글 수: 5
chan
chan 2015년 10월 4일
NO sir your code din't work.i have attached a file.the output will be like that based on that M matrix.In first row there are two 1's because node 1 is sharing key with 7 and 8.similarly i have to find for other nodes with whom they are sharing key.Sir could you please help in implementing this using for loop.thank you.
Walter Roberson
Walter Roberson 2015년 10월 4일
You did not attach a file.
When you used randperm() like that, each element will appear exactly once, and so node 1 should share "keys" with only one other node.
Read the adjacency matrix I created down the rows. Or reverse the order of the indices. Makes no difference to me.

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2015년 10월 3일
My guess as to what you want is:
X = randi([1,1000],10,1);
idx = [(1:length(X)).', randperm(length(X)).'];
M = X(idx);
Adj = zeros(length(X),length(X));
Adj(sub2ind(size(Adj), idx(:,1), idx(:,2))) = 1;
That last line can be more efficiently written as
Adj(length(X)*(idx(:,2)-1)+idx(:,1)) = 1;

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by