if you run following code with nodes N=10, you will get randomly picked few nodes with probability say P= .25 and marked as red nodes, then in, for loop every red colored node checking distance with remaining blue colored nodes.if distance is less than or equal to R say R =.2, Then it will plot edge between that red colored node and blue colored node,
now question is how to find matrix of those remaining blue colored nodes which are not in range and do not making any edge with red colored nodes and plot those nodes green?
nodeN = [];
nodeM = [];
N=input('No. of Nodes:');
P=input('probability of cluster head : ');
R=input('range of cluster head: ')
data = rand(N,2) % Randomly generated n no. of nodes
x = data(:,1);
y = data(:,2);
plot(x,y,'b*')
hold on
index = (rand(N,1) <= P); %# to choose cluster head out of N nodes with probability P
selected = data(index,:) % nodes which are now cluster head
length(selected) % no. of nodes which are cluster head
not_selected = data(~index,:) % remaining nodes which would be cluster members(out of N nodes)
length(not_selected) % no. of remaining nodes
plot(x(index),y(index),'r*'); % cluster head will be colored red in figure
for i=1:length(selected);
for j=1:length(not_selected);
dist_ij = sqrt(sum((selected(i,:)- not_selected(j,:)).^2)) % distance between selected cluster heads and remaining nodes
if(dist_ij<=R)
nodeN = [nodeN; selected(i,:)]
nodeM = [nodeM; not_selected(j,:)]
end;
end;
end;
if size(nodeN,1)~=0 && size(nodeN,2)~=0 && size(nodeM,1)~=0 && size(nodeM,2)~=0
X1=[nodeN(:,1)' ; nodeM(:,1)']
Y1=[nodeN(:,2)' ; nodeM(:,2)']
plot(X1,Y1)
hold on
end;