资源简介
用matlab实现无线传感网的仿真过程,包括能量消耗模型,节点分布方式等。结合注释,很容易看懂。适合初学者,有助于论文写作的需要。
代码片段和文件信息
% my leach code based on fuzzy logical method
clear;
%% 参数的初始化
xm=100;
ym=100; % 传感区域范围
n=100; %节点总数
p=0.1; %簇头概率
% 能量模型初始化数据
E0=1;%初始能量
Elec=50e-9;%发送、接收能量,每bit
Efs=10e-12;%耗散能量,每bit
Emp=0.0013e-13;%融合能耗,每bit
do = sqrt( Efs/Emp );
cc=0.8;%融合率
rmax=1000;%轮数设置
MaxDis_CH_Node = sqrt( (xm-0)^2 + (ym-0)^2 ); %簇头广播范围
CM=25;%控制信息大小
DM=4000;%数据信息大小
figure(1);% 显示图片
for i=1:1:n
S(i).xd=rand(11)*xm;
S(i).yd=rand(11)*ym;
S(i).G=0;%每一个周期结束后,重新设置为0
S(i).E=E0;%节点的初始能量
S(i).type=‘N‘;%节点的类型为普通
plot(S(i).xdS(i).yd‘o‘);
hold on;%保持所畫的圖像
end
%% 计算网关节点与其他节点的距离, 找出节点与网关的最小距离
MinDist_Node_Sink = zeros(1n);
Sink(1).xd = 0; Sink(1).yd = 0;
Sink(2).xd = 0; Sink(2).yd = ym;
Sink(3).xd = xm; Sink(3).yd = ym;
Sink(4).xd = xm; Sink(4).yd = 0;
for i = 1: n
TempDist_Node_Sink = zeros(14);
for j = 1 : 4
TempDist_Node_Sink(j) = sqrt( (Sink(j).xd - S(i).xd)^2 + ( Sink(j).yd - S(i).yd )^2 );
end
MinDist_Node_Sink(i) = min(TempDist_Node_Sink);
end
%%
first_dead_Round = 0; %第一个死亡节点出现的轮数
flag_first_dead=0; % 记录第一个死亡节点
half_dead_Round = 0;
flag_half_dead = 0;
Round_Alive_Num = zeros( 1rmax+1 ); %每轮存活节点数目记录
RoundCluster = zeros( 1rmax ); %记录每轮簇头节点数目
Remaining_En = zeros(1rmax);
%% 开始
for r = 1:1:rmax
% 如果轮数为一个周期的整数倍, 则将S(i).G 设置为0 ,即所有节点都没有成为簇头节点
if( r>=2 )
if ( Remaining_En(r-1) == 0 )
continue;
end
end
r+1;
if( mod(rround(1/p))==0 )
for i = 1:n
S(i).G = 0;
end
end
hold off; % 每一轮重新绘制图片
figure(1);
%% 死亡节点标记为红色
dead = 0;
for i = 1:n
if( S(i).E <= 0 )
plot( S(i).xd S(i).yd ‘red.‘ );
S(i).E = 0; % 死亡节点剩余能量为0
dead = dead +1;
if( dead == 1 && flag_first_dead == 0 ) % 标记第一个死亡节点
first_dead_Round = r;
flag_first_dead = 1;
end
if( dead == (n/2) && flag_half_dead == 0 )
half_dead_Round = r;
flag_half_dead = 1;
end
hold on;
else
S(i).type = ‘N‘;
plot( S(i).xd S(i).yd ‘o‘ );
hold on;
end
Remaining_En(r) = Remaining_En(r) + S(i).E; % 第r 轮总剩余能量
end
Round_Alive_Num(r+1) = n - dead; %记录第 r 轮 存活节点个数
%% 成簇阶段,寻找簇头节点,并计算簇头与基站的距离
cluster = 0;% 每一轮开始前 将簇头数目重置为 0;
for i = 1:n
if( S(i).E > 0 )
if( S(i).G <= 0 )
temp
相关资源
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 阵列天线的matlab仿真
- 天线阵的波束形成在MATLAB仿真程序及
- OFDM系统MATLAB仿真代码
- 用matlab实现的多站定位系统性能仿真
- 用MATLAB(BPSK仿真 直接扩频)
- GPS卫星轨道动态仿真MATLAB
- CRC循环冗余校验的matlab仿真程序
- MATLAB实现混沌图像加密仿真程序
- (7,4)循环码-信道编码的matlab仿真
- Alamouti编码2X2仿真(MATLAB)
- 小波神经网络Matlab交通仿真程序
- qam 用matlab实现qam仿真的程序
- MATLAB六自由度弹道仿真程序
- MATLAB实现弹道仿真
- MIMO雷达DOA估计中的克拉美罗界计算
- Boost电路的MATLAB仿真
- 基于气动力的导弹姿态控制(附MATL
- 有源电力滤波器的Matlab仿真_高勇
- 3点GPS定位MATLAB仿真
- 全面详解LTE MATLAB建模、仿真与实现
- MATLAB车流仿真 包括跟驰、延误
- 一维光子晶体MATLAB仿真代码吸收率折
- Matlab锁相环仿真-Phase Locked Loop.rar
-
基于Simuli
nk的电动助力转向控制策略 - 基于MATLAB的OFDM系统仿真及分析
- MATLAB电机仿真精华50例源代码.zip
- 自适应均衡器的研究与仿真设计毕业
- 清洁机器人路径规划matlab仿真程序
- MATLAB电机仿真精华50例源代码269078
评论
共有 条评论