GPSR
所属分类:matlab编程
开发工具:matlab
文件大小:11KB
下载次数:261
上传日期:2015-11-18 11:47:21
上 传 者:
xiaomaomei
说明: GPSR路由matlab实现,模拟仿真了路由算法的各种性能指标,若有不足请批评指正。
(GPSR routing matlab )
文件列表:
GPSR节点移动\mobilitymodel.m (3347, 2015-05-28)
GPSR节点移动\GPSR.m (9481, 2015-06-09)
GPSR节点移动\main.m (8764, 2015-06-02)
GPSR节点移动\update_perlocation.m (3514, 2015-06-02)
GPSR节点移动\get_nowlocation.m (2366, 2015-06-02)
GPSR节点移动\mediumnode_run.m (930, 2015-05-29)
GPSR节点移动\update_nowlocation.m (96, 2015-05-29)
GPSR节点移动\parameter.m (3580, 2015-05-30)
GPSR节点移动\make_figure.m (1178, 2015-05-30)
GPSR节点移动\right_location.m (332, 2015-06-02)
GPSR节点移动 (0, 2015-05-27)
%节点运动模型:
%节点随机选择速度:0~40m/s,取:5、10、15、20、25、30、35、40m/s。
%随机选择运动方向0~2pi,取:pi/4,pi/2,3pi/4,pi,5pi/4,3pi/2,7pi/4,2pi。
%固定运动T=4s,或者随机取整数值。仿真时间为300s,T取(1,300)
%运动T时间后,不停留,重新开始此过程。
%-------------------------------------------------------------------------
%定义变量
%nowlocation_x,nowlocation_y:节点真实位置
%nowlocation_time:当前时间
%perlocation_x,perlocation_y:节点周期性位置
%perlocation_period:节点位置更新周期,GPSR中是固定周期,FLDB中每个节点周期是变化的。
%-------------初始化节点真实位置和周期位置------------------------------------
nowlocation_x = node_x;
nowlocation_y = node_y;
nowlocation_time = zeros(1,num_node);
perlocation_x = node_x;
perlocation_y = node_y;
perlocation_period = period;%GPSR取2、3、4s,FLDB中周期是自适应变化的。
%以下变量都是num_node维数组:
% mobi_model_x:起始位置x
% mobi_model_y: 起始位置y
% mobi_model_startime: 起始时间
% mobi_model_speed: 随机选择的移动速度
% mobi_model_direct:随机选择的运动方向
% mobi_model_movetime:运动时间T
%--------初始化节点初始运动模型-----------------------------------------------
mobi_model_x = node_x;
mobi_model_y = node_y;
mobi_model_startime = zeros(1,num_node);
mobi_model_speed = randint(1,num_node,[1 8])*5;
mobi_model_direct = randint(1,num_node,[1 8])*pi/4;
mobi_model_movetime = randint(1,num_node,[1 300]);
%-------------节点运动后的真实位置---------------------------------------------
function update_realocation(now_time, )
for i=1:num_node
if now_time > mobi_model_startime(i)
%该时刻节点i位置已经发生改变
if now_time <= mobi_model_startime(i)+mobi_model_movetime(i)
%该时刻节点仍按照当前方向运动
nowlocation_x(i) = mobi_model_x(i)+mobi_model_speed(i)*(now_time-mobi_model_startime(i))*cos(mobi_model_direct(i));
nowlocation_y(i) = mobi_model_y(i)+mobi_model_speed(i)*(now_time-mobi_model_startime(i))*sin(mobi_model_direct(i));
nowlocation_time(i) = now_time;
else
%该时刻节点已经重新选择了运动方向,则为该节点重新开始随机运动
while now_time > mobi_model_startime(i)+mobi_model_movetime(i)
temp_x = mobi_model_x(i)+mobi_model_speed(i)*mobi_model_movetime(i)*cos(mobi_model_direct(i));
temp_y = mobi_model_y(i)+mobi_model_speed(i)*mobi_model_movetime(i)*sin(mobi_model_direct(i));
mobi_model_x(i) = temp_x;
mobi_model_y(i) = temp_y;
temp_time = mobi_model_startime(i)+mobi_model_movetime(i);
mobi_model_startime(i) = temp_time;
mobi_model_speed(i) = unidrnd(8)*5;
mobi_model_direct(i) = unidrnd(8)*pi/4;
mobi_model_movetime(i) = unidrnd(300);
end
nowlocation_x(i) = mobi_model_x(i)+mobi_model_speed(i)*(now_time-mobi_model_startime(i))*cos(mobi_model_direct(i));
nowlocation_y(i) = mobi_model_y(i)+mobi_model_speed(i)*(now_time-mobi_model_startime(i))*sin(mobi_model_direct(i));
nowlocation_time(i) = now_time;
end
end
end
end
%--------------------节点移动后周期位置更新----------------------------------
function update_periodlocation()
for i=1:num_node
近期下载者:
相关文件:
收藏者: