请先看一下图片。我们在网络中分发一些节点。该网络还分为9个相同的小区。
图片(简化示例):http://i.imgur.com/QbnQ4Kl.jpg
首先,我随机地在字段中分配我的节点。现在我想从chlist中为每个节点(a,b,c ...)分配10个随机值。但问题是节点“a”,节点“b”必须采用70%相同的值。换句话说,如果两个节点在同一个单元格中,例如在[0,10; 0,10]或[10,20; 20,30]的情况下,它们必须具有70%相同的值。
除非手动为每个细胞分配值而不是随机分配,否则我无法想到任何事情。像下面的代码,虽然它不精确,我只是想看看我是如何解决问题的。
xm=30;
ym=30;
n=15;
for i=1:1:n
S(i).xd=rand(1,1)*xm;
XR(i)=S(i).xd;
S(i).yd=rand(1,1)*ym;
YR(i)=S(i).yd;
end
for i=1:1:n
if ( 0 <= XR(i) && XR(i)<=10 && 0 <= YR(i) && YR(i)<=10)
chlist(i, :)=[1 2 3 4 5 6 7 8 9 10];
elseif ( 0 <= XR(i) && XR(i)<=10 && 10 <= YR(i) && YR(i)<=20)
chlist(i, :)=[1 2 3 4 5 6 7 10 11 13];
elseif ( 0 <= XR(i) && XR(i)<=10 && 20 <= YR(i) && YR(i)<=30)
chlist(i, :)=[1 3 5 7 8 9 10 11 12 13];
elseif ( 10 <= XR(i) && XR(i)<=20 && 10 <= YR(i) && YR(i)<=10)
chlist(i, :)=[1 3 5 7 8 9 10 11 13 15];
elseif ( 10 <= XR(i) && XR(i)<=20 && 20 <= YR(i) && YR(i)<=20)
chlist(i, :)=[1 2 3 4 5 6 7 10 11 13];
elseif ( 10 <= XR(i) && XR(i)<=20 && 30 <= YR(i) && YR(i)<=30)
chlist(i, :)=[1 3 5 7 8 9 10 11 12 13];
elseif ( 20 <= XR(i) && XR(i)<=30 && 10 <= YR(i) && YR(i)<=10)
chlist(i, :)=[1 3 5 7 8 9 10 11 13 15];
elseif ( 20 <= XR(i) && XR(i)<=30 && 20 <= YR(i) && YR(i)<=20)
chlist(i, :)=[3 4 5 6 7 10 11 13 15 16];
elseif ( 20 <= XR(i) && XR(i)<=30 && 30 <= YR(i) && YR(i)<=30)
chlist(i, :)=[1 2 4 7 8 9 10 11 12 15];
end
end
或者我能做到的另一种方法是使用以下代码:
for i=1:n
chlist(i,:)= randperm(13,10);
end
由于节点从13个中挑选10个值,因此它们肯定有7个相似的值,这可以类似于70%的相似性。但是仍然在每个单元格中,我们有超过2个值,它可能不起作用。
任何帮助都非常感谢。