1.算法仿真效果
matlab2022a仿真结果如下:
2.算法涉及理论知识概要
无线自组网(Wireless Ad Hoc Network,简称WANET)是一种无需基础设施支持的网络,它由一组移动的无线节点组成,这些节点可以自组织形成一个网络,实现数据的传输和共享。由于WANET是一种去中心化的网络,因此其性能受到节点移动、信道状态、路由算法等多种因素的影响。为了评估WANET的性能,需要进行性能仿真来模拟实际网络环境下的数据传输和节点行为。
从端到端时延、吞吐量、初入网时间、迟入网时间和网络建立时间等方面详细介绍无线自组网性能仿真。
一、端到端时延
端到端时延是指从源节点发送数据到目的节点接收到数据所需的总时间,包括数据传输时间、排队时间、传输时延、处理时延等。在WANET中,端到端时延受到多种因素的影响,如节点的移动速度、信道状态、路由算法等。
二、吞吐量
吞吐量是指网络中单位时间内能够传输的数据量。在WANET中,节点的移动和信道状态的变化会影响网络的吞吐量。为了评估WANET的吞吐量性能,需要进行基于仿真的实验。常用的仿真工具包括NS-3、Omnet++等。在仿真中,需要设置合适的节点移动速度、信道参数、路由协议等参数,以模拟实际网络环境下节点的行为。通过收集仿真数据,可以计算出不同场景下的平均吞吐量、吞吐量分布等指标,评估WANET的性能。
对于无线自组网而言,有一种常见的情况是由于信道状态变化或节点移动导致网络分割,从而降低网络吞吐量。因此,在仿真中需要考虑这种网络分割情况,以更全面地评估WANET的吞吐量性能。
三、初入网时间
初入网时间是指一个节点加入WANET后,能够与其他节点正常通信的时间。在WANET中,节点加入网络需要进行网络发现、路由建立等多个步骤,这些步骤会影响节点初入网的时间。
四、迟入网时间
迟入网时间是指一个节点在WANET中重新加入网络后,能够与其他节点正常通信的时间。在WANET中,节点重新加入网络需要进行网络发现、路由建立等多个步骤,这些步骤会影响节点迟入网的时间。
五、网络建立时间
网络建立时间是指整个WANET从无到有建立起来所需的时间。在WANET中,网络建立需要进行节点发现、路由建立、网络拓扑构建等多个步骤,这些步骤会影响网络建立的时间。
总之,无线自组网性能仿真是评估WANET性能的重要手段,通过端到端时延、吞吐量、初入网时间、迟入网时间和网络建立时间等指标的评估,可以帮助研究人员优化WANET的设计和性能,提高其应用效果。同时,需要注意在仿真中设置合适的场景和参数,以更准确地评估WANET性能。
3.MATLAB核心程序
``` N = 15;
tdrift= tclkTslotN;
%融合组网
%接收节点信息进行帧检测
%检测是否同步
flag = 0;
Tss = [];
Tee = [];
Delays = [];
ixk = 0;
while ixk<=length(paths)
ixk = ixk+1;
frame1D2= frame1D + randn(size(frame1D));
yy = xcorr(frame1D2(1:end-10000),PN1);
yy2 = yy;
pnx = find(yy2>100);
if isempty(pnx) == 0;
%建立动态时延关系表
for ij = 1:length(ttra2)
Delays(ij) = ttra3+ttra2(ij) + Tslot + tdrift;
end
%确定参考节点
IDrefS = idx1;
IDrefD = idx2;
%广播参考节点
TimeS = (ixk+2+0.2*rand);%发送点的时间,设置随机发送时间
%更新节点时间%完成更新
TimeD = TimeS + [sum(Delays)];
flag = 1;
else
%没检测到,不做处理
TimeS = 0;
TimeD = 0;
Delays= 0;
flag = 0;
end
Tss = [Tss,TimeS];
Tee = [Tee,TimeD];
end
%端到端时延
TimeD2D(jj) = sum(Delays);
%网络吞吐量与带宽,跳数相关
th = BW/Nhops;
Throughput0(jj)= th/1e3;%转换为Kbits
%初始入网时间
Time1st(jj) = mean(Tss);
%迟入网时间
TimeFst(jj) = mean(Tee);
%网络建立时间
Timeset(jj) = mean(Tee)+mean(Tss);
end
TimeD2D_(ii) =mean(TimeD2D);
Throughput0_(ii)=mean(Throughput0);
Time1st_(ii)=mean(Time1st);
TimeFst_(ii)=mean(TimeFst);
Timeset_(ii)=mean(Timeset);
end
figure;
plot(Nnodes,TimeD2D_,'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
grid on
xlabel('节点数量');
ylabel('端到端时延(ms)');
figure;
plot(Nnodes,Throughput0_,'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
grid on
xlabel('节点数量');
ylabel('网络吞吐量(Kbps)');
figure;
plot(Nnodes,Time1st,'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
grid on
xlabel('节点数量');
ylabel('初始入网时间(s)');
ylim([0.8*min(Time1st),1.2*max(Time1st_)]);
figure;
plot(Nnodes,TimeFst_,'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
grid on
xlabel('节点数量');
ylabel('迟入网时间(s)');
figure;
plot(Nnodes,Timeset_,'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
grid on
xlabel('节点数量');
ylabel('网络建立时间(s)');
```