我已经生成了具有200个节点的网络的拓扑结构。我希望在选择的节点周围绘制一个黑色的圆圈(满足某个条件IF(条件))。 为了简化,让用户将节点的索引引入黑色圆圈。 这是我生成的拓扑的代码。需要添加哪些指令来围绕选择的节点绘制圆圈?
X=100;
Y=100;
N=200; %number of nodes
nodesX(1)=rand*X;
nodesY(1)=rand*Y;
for i=2:N
nodesX(i)=rand*X;
nodesY(i)=rand*Y;
d(i-1) =((nodesX(i)-nodesX(i-1)).^2+(nodesY(i)-nodesY(i-1)).^2).^0.5;
while (d(i-1)>200)
nodesX(i)=rand*X;
nodesY(i)=rand*Y;
d(i-1) =((nodesX(i)-nodesX(i-1)).^2+(nodesY(i)-nodesY(i-1)).^2).^0.5;
end
end
h_old=plot(nodesX,nodesY,'m*');
labels=[1:N]';
labels=num2str(labels);
text(nodesX,nodesY,labels);
xlabel('X (Meters)');
ylabel('Y (Meters)');
title(['Network Topology with',num2str(N),'nodes']);
hold on
for k=1:N;
for j=1:N;
if (k~=j)
d=((nodesX(k)-nodesX(j))^2+(nodesY(k)-nodesY(j))^2)^0.5;
end
if (k~=j);
if(d < 50);
line([nodesX(k),nodesX(j)],[nodesY(k),nodesY(j)]);
end
end
end;
end;
答案 0 :(得分:0)
将其分为两个任务:
任务1:
定义一个绘制圆的简单函数。一种廉价而肮脏的方式是使用极地表达式。
function [] = circle(center_x,center_y,r)
theta = 0:0.01:2*pi;
x = center_x + r*cos(theta);
y = center_y + r*sin(theta);
plot(x,y,'k','LineWidth',2)
任务2:
将索引节点的NodeX
和NodeY
值作为圆圈居中的点传递给此函数。您可以根据自己的选择设置圆的半径。使用r=1
并选择任意索引,我得到了:
只需注意一点:确保您的轴是方形的。否则,圆圈可能看起来像椭圆形。如果要围绕非方形轴绘制圆,则可以修改代码以生成椭圆。