• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: Matlab
  • 标签: matlab  

资源简介

这是我们课设做的一个gossiping仿真代码。可执行,很不错的源码注释详细

资源截图

代码片段和文件信息

clc
clear all
close all
%global distMatrix;
% 通讯半径设定
txRange = 0.3;
% 定义节点的数量
no_of_nodes=100; 
% 给最后的节点定义个值
final_clock_val=ceil((no_of_nodes)^1.5);
% 给每个节点做标记
node_val=1:100%[5 4.6 6  5.5 6.2 3.8 7.1 3.4 6.3 7.2];

% actual average
actual_avr=mean(node_val); 

% 定义随机节点x坐标位置
node_x=rand(1no_of_nodes);

% 定义随机节点y坐标位置
node_y=rand(1no_of_nodes); 

% 数据可到达赋1
packet_acceptance=1;
% 从第一个节点到最后一个节点判断可达性
for j=1:final_clock_val
if  packet_acceptance==1
% 随机给目的节点坐标赋值
xd=rand; yd=rand; 

end
% 随机从节点中找一个源节点,源节点乘以0~1之间随机数
s=ceil(no_of_nodes*rand);

% 节点数据信息
ms=[node_val(s) node_x(s) node_y(s) xd yd];

% 节点到目的节点距离
distance=( (node_x-xd).^2 + (node_y-yd).^2 ).^(1/2);

% 并把最小值赋给二维数组
[vald]=min(distance);
%下面这段代码没用到
% 创建一个no_of_nodes*no_of_nodes的零矩阵
%distMatrix = zeros(no_of_nodesno_of_nodes);

%循环计算节点之间的距离
%for i=1:no_of_nodes
  % for j=1:no_of_nodes
  %    distMatrix(ij)=sqrt((node_x(i)-node_x(j))^2 + (node_y(i)-node_y(j))^2); 
      %distance between node pairs
 %  end
%end


% 如果小于通讯半径范围内,就表示可以将数据传给此节点,
%将可达节点表示出来
%global connMatrix;
%connMatrix = ( distMatrix < txRange); 

%上面代码没用带
%___________________________________________________________
% 下面是画节点函数
%
%draw_nodes(no_of_nodesnode_xnode_ynode_valsdxdyd);
%function draw_nodes(no_of_nodesnode_xnode_ynode_valsdxdyd)
clear message_chain
% 延迟0.5秒让人看得清楚循环的过程
delay=0.2;
%随机定义k在通讯半径内随机取点作为下一跳位置
    k=1;
    %将源节点赋值可到达节点
    message_chain(k)=s;
    
    
    %将停止链接赋值1
    stop_cond=1;
      %判断节点是否可到达,

评论

共有 条评论