资源简介
ExOR算法 的 matlab 实现 自己写的 能运行 没问题
代码片段和文件信息
function ExOR(sourcetargetETXprrPacketreceive)
%%%本文设计的路由算法
%N=30;
N=length(prr);
%仿真网络
%% 载入 拓扑位置
% % % % % % % X =load(‘x001.txt‘);
% % % % % % %
% % % % % % % YY =load(‘y001.txt‘);
tic;
%% 计算所有节点到目的节点的ETX值,存入ETX_path(N)
for exor_i=1:N
[ ETX_path(exor_i) arry] = Eindex(exor_itargetETX);
end
[oopp]=sort( ETX_path(1:N) ); %%升序
qq=find(oo FF =pp(qq); %%候选节点集 下标越小 优先级越高
%% 初始化
num00=1;%第num00跳的候选转发节点列表集合为F(num00,:)总跳数一定不会超过N
% thresholdvalue=1/0.16;
%tic;
F(NN)=0;
F(::)=0;
F(num001)=source;%令source为第一跳(方便表示)
% F_appoint(1:)=0;%存放已经被安排的节点
% F_appoint(11)=source;
% appointnum=1;%已分配节点数
%%
% ttt=randperm(100);
%$% for exor_i=1:100 %仿真出100个包
%%
pdr=1; %包投递率初值
delay=0;%延迟初值
transmissioncount=0;%传输次数初值
hop=0;
x=F(num001);
CHONGCHUAN(N)=0;CHONGCHUAN(:)=0;
while x~=target
num00=num00+1;
exor_index=1;
f0=0;
while (length( find(F(num00:)~=0) )==0 ) &&(f0<=inf) %f0为允许的重传次数
exor_rand=0;
while exor_rand==0
exor_rand= round(rand(11)*100); %%包序号 [1100]整数
end
for exor_j=1:length(FF) %%接收到包的临近节点 存入F(num00:)很明显F(num00:)中节点ID按 ETX_path大小从小到大排列因而F(num001)即为转发节点
if ( Packetreceive(xFF(exor_j)exor_rand)==1 )&&( x~= FF(exor_j) ) %% &&exor_index==1
F(num00exor_index)=FF(exor_j); exor_index=exor_index+1 ;
% % % % % % % plot(X( FF(exor_j) )YY( FF(exor_j) )‘C:*‘)%%%
% % % % % % % plot([X( x );X( FF(exor_j) )][YY( x );YY( FF(exor_j) )]‘r‘)%%%
% % % % % % %
% % % % % % % %annotation(‘arrow‘[X( x ) X( FF(exor_j) )][YY( x) YY( FF(exor_j) )]) 画箭头
% % % % % % % hold on
end
end
CHONGCHUAN(num00-1)=CHONGCHUAN(num00-1)+1;
transmissioncount= transmissioncount+1;
delay=delay+1;
end
exor_target=fi
- 上一篇:SUSAN 角点检测 matlab代码
- 下一篇:Matlab信源编码huffman
评论
共有 条评论