当前位置: 首页 > web >正文

MATLAB生成大规模无线通信网络拓扑(任意节点数量)

功能:

 生成任意节点数量的网络拓扑,符合现实世界节点空间分布和连接规律

效果:

30节点:

100节点:

500节点:

程序:

%创建时间:2025年6月8日
%zhouzhichao
%自然生长出n节点的网络% function [tp,tp_list] = large_nodes_tp(P_list,N)
close all
clear
N = 500;
P_list = ones(N,1);tp = zeros(N);
tp(1,2)=1;tp(1,3)=1;tp(1,4)=1;%原点附近的拓扑关系直接写好
x = zeros(N,1);%存储每个节点的位置,以连接各个节点
y = zeros(N,1);
a_list = zeros(N,1);%存储每个节点角度%%
%初级节点
%节点数量:1
%节点总数:1
%半径:0x(1) = 0;
y(1) = 0;c_R = 1;%当前圆环半径
c_M = 3;%当前圆环节点数量
c_index = 1;%当前节点index
last_r_list = [];while c_index<=Nr_list = [];%存储当前圆环上的节点alpha = 2*pi/c_M;initial_phase = rand(1)*2*pi;for i =1:c_Mdisp(["c_index: ",c_index])pause(0.01)r_list = [r_list,c_index];%存储当前节点%下面处理好当前节点的各种信息a = initial_phase+i*alpha;x(c_index)=c_R*cos(a);y(c_index)=c_R*sin(a);if ~isempty(last_r_list)p = min_d_node(c_index,last_r_list,x,y);tp(c_index,p) = 1;endc_index = c_index + 1;end%下一个圆环的半径增大last_r_list = r_list;%存储圆环上节点信息,方便下一个圆环生成节点时连接拓扑c_R = c_R + 1;a = round(1.8*c_M);if c_index + a<=Nc_M = a;elsec_M = N - c_index + 1;endend%%
%补环
x = x + (rand(size(x)) - 0.5) * 0.6;%位置x,y加一些随机性
y = y + (rand(size(y)) - 0.5) * 0.6;tp = tp + tp';
tp = add_circle(tp,x,y);
tp = add_circle(tp,x,y);
% tp = add_circle(tp,x,y);%%
%绘图% tp = tp + tp';grid on;
hold on;for i = 1:Nfor j = i+1:Nif tp(i, j) == 1plot([x(i) x(j)], [y(i) y(j)], 'b', 'Color', [125/255, 178/255, 251/255]);endend
endfor i =1:length(x)%     scatter(x(i), y(i), 100*P_list(i), [47/255, 132/255, 248/255], 'filled', 'MarkerFaceAlpha', P_list(i));scatter(x(i), y(i), 100, [47/255, 132/255, 248/255], 'filled', 'MarkerFaceAlpha', P_list(i));text(x(i)-0.1, y(i)+0.4, num2str(i), 'FontSize', 8, 'Color', [0/255, 0/255, 248/255]);
end
% scatter(x, y, [], [47/255, 132/255, 248/255], 'filled');
xlabel('X');
ylabel('Y');
x_min = round(min(x)-1);
x_max = round(max(x)+1);
y_min = round(min(y)-1);
y_max = round(max(y)+1);
xlim([x_min x_max]);
ylim([y_min y_max]);
set(gca, 'FontName', 'Times New Roman');axis off;tp_list = [];% 遍历拓扑矩阵,找到所有有连接的节点对
for i = 1:Nfor j = i+1:Nif tp(i, j) == 1% 添加节点对 [i, j] 到 nodePairs 矩阵tp_list = [tp_list; i, j];endend
end

http://www.xdnf.cn/news/12862.html

相关文章:

  • 微服务体系下将环境流量路由到开发本机
  • spring中的@KafkaListener 注解详解
  • NLP学习路线图(三十四): 命名实体识别(NER)
  • unity实现自定义粒子系统
  • java 时区时间转为UTC
  • 云原生架构赋能企业数字化转型:从理念到落地的系统性探索
  • springboot启动mapper找不到方法对应的xml
  • 【Redis/2】核心特性、应用场景与安装配置
  • 用于小目标检测的归一化高斯Wasserstein距离(NWD)之论文阅读
  • 国家奖学金答辩PPT+文稿
  • Halo站点全站定时备份并通过邮箱存储备份
  • 【C++】25. 哈希表封装unordered_map和unordered_set
  • Ubuntu系统多网卡多相机IP设置方法
  • 【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
  • MCP笔记:介绍和原理
  • Web3 借贷与清算机制全解析:链上金融的运行逻辑
  • 基于安卓的线上考试APP源码数据库文档
  • MAC-安装Homebrew、安装Git
  • c++ decltype关键字
  • 二叉数-100.相同的树-力扣(LeetCode)
  • LLMs 系列科普文(3)
  • 用于机器学习的 Podman 简介:简化 MLOps 工作流程
  • 从零开始的云计算生活——番外,实战脚本。
  • 【基于阿里云搭建数据仓库(离线)】使用UDTF时出现报错“FlatEventUDTF cannot be resolved”
  • Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
  • 04.管理表
  • Linux系统的CentOS7发行版安装MySQL80
  • Spring Boot 整合 Apache Flink 的详细过程
  • 二、即时通讯系统设计经验
  • Flink CDC —部署模式