资源简介
用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
相关资源
- 登月挺软着陆MATLAB仿真
- GPS/INS组合导航Matlab仿真源码包含实验
- isight联合matlab仿真
- 异步电动机的SVPWM的变压变频调速的
- LS信道估计算法仿真代码
- 基于HMM的语音识别系统的matlab仿真
- OFDM系统信道估计仿真程序
- Matlab与蒙特卡洛仿真
- SAR点目标仿真
- 基于matlab的电力系统仿真
- 自适应最陡下降法Matlab仿真
-
sumili
nk直接序列扩频通信仿真 - Buck-Boost充电Matlab仿真模型
- 清扫机器人路径规划算法仿真
-
直序列扩频通信系统Simuli
nk仿真 - qpsk调制stbc仿真
- QPSKMATLAB仿真程序
- 回馈整流MATLAB仿真
-
simuli
nk的MPSK系统仿真 - leach分簇算法仿真基于matlab
- matlab仿真自抗扰控制器
- 锁相环仿真194868
- 机器人避障仿真matlab程序
- OFDM MATLAB 通信系统仿真程序
- 通信系统的matlab仿真
- MATLAB仿真mac协议
-
神经网络pid仿真simuli
nk - 关于BF硬判决的编码以及仿真
- 三相光伏逆变并网 仿真
- 基于Matlab语言的蒙特卡洛仿真入门教
评论
共有 条评论