创建具有不同边缘概率的邻接矩阵

时间:2016-06-23 10:16:37

标签: matlab matrix network-programming

我正在创建一个表示以下交互的邻接矩阵。每个社区都有 m 社区和 n 代理商。每个代理都有一个概率 p 链接到他自己社区的成员,并且概率 q 被链接到另一个社区的成员。每个代理在网络上的位置由点x,y给出,它们存储在两个矩阵X,Y上,大小 m n 。这是我的第一次尝试,但你可以看到它有几个错误。

ADJ=zeros(m*n); %Generates intraracial adjencecy matrix
losunos=randsample((n*m)^2,floor((n*m)^2*p)); %Generates edges according to p
ADJ(losunos)=1; %, ADJ(2,n+1)=1 if guy 2 from race 1 is connected to guy 1 from race 2
for k=1:m %Generates the edges
 for i=1:n
    for j=1:n
        if ADJ(i,j)==1
            plot([X(k,i) X(k,j)],[Y(k,i) Y(k,j)],'Color', colorstring(k))
        end
    end
 end
end

欢迎任何建议。

1 个答案:

答案 0 :(得分:1)

我认为它已经很好用了,你只是忘了在画一个新线时保留旧线

%random values
m=5;
n=20;
p=0.7;
q=0.3;
X=randi(100,m,n);
Y=randi(100,m,n);
colorstring=['b';'r';'g';'c';'k'];

ADJ=zeros(m*n); %Generates intraracial adjencecy matrix
losunos=randsample((n*m)^2,floor((n*m)^2*p)); %Generates edges according to p
ADJ(losunos)=1; %, ADJ(2,n+1)=1 if guy 2 from race 1 is connected to guy 1 from race 2
figure; %create figure
hold on %keep old plots while making new ones
for k=1:m %Generates the edges
 for i=1:n
    for j=1:n
        if ADJ(i,j)==1
            plot([X(k,i) X(k,j)],[Y(k,i) Y(k,j)],'Color', colorstring(k))
        end
    end
 end
end
hold off %back to standard