【复杂网络】双层相互依赖(BA-BA)网络模型matlab代码

该代码段生成了两个具有特定连接特性的网络A和B的邻接矩阵,以及它们之间的依赖矩阵C和D。网络A和B通过随机过程构建,每个网络的节点数分别为230和210,连接强度为0.1。同时,代码计算了网络的连接边数和理论平均度数。
摘要由CSDN通过智能技术生成
clc, clear
%本代码将生成4个邻接矩阵
%A1矩阵:A网络
%B1矩阵:B网络
%C矩阵:子网络A依赖于子网络B的矩阵
%D矩阵:子网络B依赖于子网络A的矩阵
N1 = 230;  %A网络节点数目
N2 = 210;  %B网络节点数目
m0=10;
m1=3;%m不能大于m0,单次增加节点数
xeff = zeros(2,4);%存放xeff1,xeff2
C = zeros(N1,N2);%A依赖于B
D = zeros(N2,N1);%B依赖于A

lr = zeros(4,1);%子网络网络A,B,依赖网络C,D连接边数
q = [0.1];%依赖强度

%生成网络A的邻接矩阵
%A
A1=ones(m0); A1(1:m0+1:m0^2)=0; %初始对角线元素置0
for k=m0+1:N1
    p=(sum(A1)+1)/sum(sum(A1)+1); %计算所有节点的连接概率
    pp=cumsum(p); %求累积分布
    A1(k,k)=0;   %加入新的连边之前,邻接矩阵扩充维数
    ind=[]; %新节点所连节点的初始集合
    while length(ind)<m1
        jj=find(pp>rand); jj=jj(1); %用赌轮法选择连边节点的编号
        ind=union(ind,jj); %使用union保证选择的节点不重复
    end
    A1(k,ind)=1; A1(ind,k)=1; %构造加边以后新的邻接矩阵
end
lr(1,1)=length(find(A1==1))/2;%子网络A的连接边数
KR(1,1)=(2*lr(1,1))/N1;%生成的网络度数
%生成网络B的邻接矩阵
B1=ones(m0); B1(1:m0+1:m0^2)=0;
for k=m0+1:N2
    p=(sum(B1)+1)/sum(sum(B1)+1);
    pp=cumsum(p);
    B1(k,k)=0;
    ind=[];
    while length(ind)<m1
        jj=find(pp>rand); jj=jj(1);
        ind=union(ind,jj);
    end
    B1(k,ind)=1; B1(ind,k)=1;
end
lr(2,1)=length(find(B1==1))/2;%子网络A的连接边数
KR(2,1)=(2*lr(2,1))/N2;
%C:A-B耦合,依赖强度为0.1
for i=1:N1
    for j=1:N2
        p1=rand(1,1);
        if q(1)>p1
            C(i,j)=1;  
        end
    end
end
lr(3,1)=length(find(C==1))/2;
%D:B-A耦合,依赖强度为0.1
for i=1:N2
    for j=1:N1
        p1=rand(1,1);
        if q(1)>p1
            D(i,j)=1; 
        end
    end
end
lr(4,1)=length(find(D==1))/2;

K(1,1)=m1*2;%网络A的理论平均度数
K(1,2)=m2*2;%网络A的理论平均度数
save BA_BA.mat A1 B1 C D K KR

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值