1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y56ZlJ1w
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
由于,信息传输和计算会消耗大量的能量,无线传感器网络中的节点都是由电池供电,能源有限,让节点长时间持续时间同步过程以达到极高精确度的时钟同步将导致极大的损耗,节点持续进行时钟同步对能量有限的无线传感器网络来说是一种巨大的浪费。因此,在实际中,需要对节点的同步精度进行规划,此外,为了降低每个节点的反馈次数,可以考虑多节点协作的反馈方式。对于原算法,主机和目标节点的反馈是基于1对1的方式,即对于任何一个节点,需要进行同步。
4.部分源码
...........................................................
Ts = 100; % 搜索的最大相位差
Ts1 = 10; % 初步搜索步长
Ts2 = Ts/Ts1; % 初步搜索宽度,要求Ts是Ts1整数倍!
T = 1; % 捕获积分宽度,单位:信号周期数
N = 500; % 特定相位差条件下求均值的随机次数
pnacq = zeros(1,Ts);
nnacq = zeros(1,N);
Nacq = zeros(1,length(fPd)); % 仿真获得不同fPd时的平均反馈次数
for pdi=1:length(fPd)
for i=1:Ts % 不同初始相位求平均
rndphase = i-1; % 初始相位差, 设本振相位为0
rndp1 = floor(rndphase/Ts1); % 分为两步搜索
rndp2 = mod(rndphase,Ts1);
for j=1:N % 指定初始相位条件求平均
nacq = 0; % 捕获时长,单位:T
curphase = rndp1; % 主机当前调整的相位
while(1)
if(curphase==0) % 正好在同步相位位置
if(rand()>fPd(pdi) || rand()>rPack) % 同步漏检 或 同步确认丢失
curphase = Ts2-1;
else
nacq = nacq + 1; % 同步确认,设同步确认是理想的
break; % 同步捕获完成
end;
else
if(rand()<fPfa) % 出现虚警
curphase = curphase -1;
nacq = nacq + 1;
else
curphase = curphase -1;
end;
end;
end;
nacq = nacq+1;
% 第二步搜索
curphase = rndp2;
while(1)
.................................................
end;
nnacq(j)=nacq+1;
end; % end j cycle
pnacq(i)=mean(nnacq);
end; % end i cycle
Nacq(pdi) = mean(pnacq)
end;
plot(fPd,Nacq,'gx-'); hold on;
save sbfkcs.mat fPd Nacq
12_004_m