• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Matlab
  • 标签: LEACH  MATLAB  

资源简介

最经典的leach算法,可以在MATLAB上进行仿真测试。希望对你们有帮助。

资源截图

代码片段和文件信息

function[]=leach()   
%x,y轴长度
    xm=100;
    ym=100;
    %基站坐标
    sink.x=0.5*xm;
    sink.y=0.5*ym;
    %number of sensors
    n=100;
    %簇头所占比例
    p=0.1;
    %初始能量
    E0=0.02;
    ETX=50*0.000000000001;%传输能量,每bit
    ERX=50*0.000000000001;%接收能量,每bit
    Efs=10*0.000000000001;%耗散能量,每bit
    EDA=5*0.000000000001;%融合能耗,每bit
    %融合率
    cc=0.6;
    %最大轮数
    rmax=1000;
    CM=32;%控制信息大小
    DM=4000;%数据信息大小
    figure(1);%显示圖片
    for i=1:1:n
        S(i).xd=rand(11)*xm;
        S(i).yd=rand(11)*ym;
        S(i).E=E0;
        S(i).G=0;%每一轮周期結束此变量為0
        S(i).type=‘N‘;%节点类型为普通节点    
        plot(S(i).xdS(i).yd‘o‘);
        hold on;
    end
    S(i+1).xd=sink.x;
    S(i+1).yd=sink.y;
    plot(S(i+1).xdS(i+1).yd‘x‘);
    hold on;
    flag_first_dead=0;%第一個死亡节点的标志变量
    for r=0:1:rmax
        r+1
        if(mod(rround(1/p)))
            for i=1:1:n
                S(i).G=0;%轮数正好是一个周期的倍数设置S(i).G=0
            end
        end
        hold off;
        cluster=0;%初始簇头数为0
        dead=0;%初始死亡节点数为0
        figure(1);
        for i=1:1:n
            if(S(i).E<=0)%画出能量小于0的节点
                plot(S(i).xdS(i).yd‘red.‘);
                hold on;
                dead=dead+1;   
                %将死亡节点标记为红色并且死亡数加一
            if(dead==1)
                if(flag_first_dead==0)
                    first_dead=r;
                    save Itest first_dead;
                    flag_first_dead=1;
                end
            end
            else
                S(i).type=‘N‘;%画出能量不小于0的节点
                plot(S(i).xdS(i).yd‘o‘);
                hold on;
            end
        end
        plot(S(n+1).xdS(n+1).yd‘x‘);
        Dead(r+1)=dead;
        save ItestDead(r+1);
        for i=1:1:n
            if(S(i).E>0)
                if(S(i).G<=0)
                    temp_rand=rand;
                    if(temp_rand<=p/(1-p*mod(rround(1/p))))% temp_rand<=T(n)选举成为簇头节点
                        S(i).type=‘C‘;
     

评论

共有 条评论