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

MATLAB仿真生成无线通信网络拓扑推理数据集

一、数据集生成程序

%创建时间:2025年6月3日
%用途:生成不同节点样本,统计稀疏性约束情况
%zhouzhichaoclose all
clearfor n = [20,30,40,50]dataset_n = 100;nodes_P = ones(n,1);for Sampling_M = [3000]%获取一帧信号及对应功率[ack,fs] = ack_generate(Sampling_M);ack_L = length(ack);signal = ack;P_signal = sum(abs(signal).^2);ack_noise = randn(ack_L, 1);P_noise_1 = sum(ack_noise.^2);  % 计算当前噪声的能量as_slot_N = round(7*ack_L);ave_edge = round(1.5*n);L = ave_edge*3*a_slot_N;signals = zeros(n,L);%         for snr=14:-2:0for snr=14:14Signals = zeros(dataset_n,n,L);Tp = zeros(dataset_n,n,n);Tp_list = cell(dataset_n,1);A = 10^(snr/10);P_noise = P_signal/A;alpha = sqrt(P_noise / P_noise_1);  % 计算缩放因子noise = alpha*randn(1, L);for k=1:dataset_ndisp(["k: ",k])pause(0.01)switch ncase 20[tp,tp_list] = a20nodes_tp(nodes_P);case 30[tp,tp_list] = a30nodes_tp(nodes_P);case 40[tp,tp_list] = a40nodes_tp(nodes_P);case 50[tp,tp_list] = a50nodes_tp(nodes_P);endc = 0;% alpha = 0.01;n_edge = length(tp_list);for epoch=1:3index_list = randperm(n_edge);for i =index_listthis_slot_start_point = c*a_slot_N+1;p = tp_list(i,1);q = tp_list(i,2);P1 = nodes_P(p);P2 = nodes_P(q);%三次响应for m=1:3r_P = 0.9 + (1.1 - 0.9) * rand;signal = r_P*P1*ack;signals(p,this_slot_start_point+(2*m-2)*ack_L:this_slot_start_point+(2*m-1)*ack_L-1) = signal;r_P = 0.9 + (1.1 - 0.9) * rand;signal = r_P*P2*ack;signals(q,this_slot_start_point+(2*m-1)*ack_L:this_slot_start_point+(2*m)*ack_L-1) = signal;endc = c + 1;endendfor i=1:nsignals(i,:) = signals(i,:) + noise;endaa = tp*tp;D_list = zeros(n,1);for i=1:nD_list(i) = aa(i,i);endSignals(k,:,:) = signals;Tp(k,:,:) = tp;Tp_list{k} = tp_list;%             set(gca, 'FontName', 'Times New Roman');save("D:\无线通信网络认知\论文1\大修意见\Reviewer1-3 稀疏性约束统计\graph of differ nodes\"+num2str(n)+"_nodes_dataset_snr-"+num2str(snr)+"_M_"+num2str(Sampling_M)+".mat","Tp","Tp_list","Signals")endendend
end
disp("数据集生成完成")

二、核心函数

1.生成20个节点的拓扑

%创建时间:2024年9月2日
%最后修改:2024年9月2日
%zhouzhichao
%自然生长出20节点网络function [tp,tp_list] = a20nodes_tp(P_list)% close all
% clear
N = 20;
% P_list = ones(N,1);tp = zeros(N);
count = 0;x = zeros(N,1);
y = zeros(N,1);%%
%中心节点附近的节点,2级别
x(1) = 0;
y(1) = 0;r2_list = [2,3,4];
a_list = zeros(N,1);a_list(2) = 0;
a_list(3) = 120/360*2*pi;
a_list(4) = 240/360*2*pi;x(2) = 1*cos(a_list(2));
y(2) = 1*sin(a_list(2));
x(3) = 1*cos(a_list(3));
y(3) = 1*sin(a_list(3));
x(4) = 1*cos(a_list(4));
y(4) = 1*sin(a_list(4));tp(1,2)=1;
tp(1,3)=1;
tp(1,4)=1;%%
%3级节点
m = 5;
r3_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+4;r3_list = [r3_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=2*cos(a);y(index)=2*sin(a);p = min_d_node(index,r2_list,x,y);tp(index,p) = 1;
end%%
%4级节点
m = 8;
r4_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+9;r4_list = [r4_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=3*cos(a);y(index)=3*sin(a);p = min_d_node(index,r3_list,x,y);tp(index,p) = 1;
end%%
m = 3;
% r4_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+17;
%     r4_list = [r4_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=4*cos(a);y(index)=4*sin(a);p = min_d_node(index,r4_list,x,y);tp(index,p) = 1;
end%%
%补环
x = x + (rand(size(x)) - 0.5) * 0.6;
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';% hold on;
% 
% for i = 1:N
%     for j = i+1:N
%         if tp(i, j) == 1
%             plot([x(i) x(j)], [y(i) y(j)], 'b', 'Color', [125/255, 178/255, 251/255]);
%         end
%     end
% end
% 
% for 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];endendend

2.生成30个节点的拓扑

%创建时间:2024年8月28日
%最后修改:2024年9月2日
%zhouzhichao
%自然生长出N节点网络function [tp,tp_list] = a30nodes_tp(P_list)% close all
% clearN = 30;
tp = zeros(N);
count = 0;x = zeros(N,1);
y = zeros(N,1);%%
%中心节点附近的节点,2级别
x(1) = 0;
y(1) = 0;r2_list = [2,3,4];
a_list = zeros(N,1);a_list(2) = 0;
a_list(3) = 120/360*2*pi;
a_list(4) = 240/360*2*pi;x(2) = 1*cos(a_list(2));
y(2) = 1*sin(a_list(2));
x(3) = 1*cos(a_list(3));
y(3) = 1*sin(a_list(3));
x(4) = 1*cos(a_list(4));
y(4) = 1*sin(a_list(4));tp(1,2)=1;
tp(1,3)=1;
tp(1,4)=1;%%
%3级节点
m = 5;
r3_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+4;r3_list = [r3_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=2*cos(a);y(index)=2*sin(a);p = min_d_node(index,r2_list,x,y);tp(index,p) = 1;
end%%
%4级节点
m = 8;
r4_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+9;r4_list = [r4_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=3*cos(a);y(index)=3*sin(a);p = min_d_node(index,r3_list,x,y);tp(index,p) = 1;
end%%
m = 13;
% r4_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+17;
%     r4_list = [r4_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=4*cos(a);y(index)=4*sin(a);p = min_d_node(index,r4_list,x,y);tp(index,p) = 1;
end%%
%补环
x = x + (rand(size(x)) - 0.5) * 0.6;
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_list = [];% 遍历拓扑矩阵,找到所有有连接的节点对for i = 1:Nfor j = i+1:Nif tp(i, j) == 1% 添加节点对 [i, j] 到 nodePairs 矩阵tp_list = [tp_list; i, j];endendend

3.生成40个节点的拓扑

%创建时间:2024年9月2日
%最后修改:2024年9月2日
%zhouzhichao
%自然生长出N节点网络function [tp,tp_list] = a40nodes_tp(P_list)% close all
% clearN = 40;
% P_list = ones(N,1);tp = zeros(N);count = 0;x = zeros(N,1);
y = zeros(N,1);%%
%中心节点附近的节点,2级别
x(1) = 0;
y(1) = 0;r2_list = [2,3,4];
a_list = zeros(N,1);a_list(2) = 0;
a_list(3) = 120/360*2*pi;
a_list(4) = 240/360*2*pi;x(2) = 1*cos(a_list(2));
y(2) = 1*sin(a_list(2));
x(3) = 1*cos(a_list(3));
y(3) = 1*sin(a_list(3));
x(4) = 1*cos(a_list(4));
y(4) = 1*sin(a_list(4));tp(1,2)=1;
tp(1,3)=1;
tp(1,4)=1;%%
%3级节点
m = 5;
r3_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+4;r3_list = [r3_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=2*cos(a);y(index)=2*sin(a);p = min_d_node(index,r2_list,x,y);tp(index,p) = 1;
end%%
%4级节点
m = 8;
r4_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+9;r4_list = [r4_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=3*cos(a);y(index)=3*sin(a);p = min_d_node(index,r3_list,x,y);tp(index,p) = 1;
end%%
m = 13;
r5_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+17;r5_list = [r5_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=4*cos(a);y(index)=4*sin(a);p = min_d_node(index,r4_list,x,y);tp(index,p) = 1;
end%%
m = 10;
% r4_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+30;
%     r4_list = [r4_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=5*cos(a);y(index)=5*sin(a);p = min_d_node(index,r5_list,x,y);tp(index,p) = 1;
end%%
%补环
x = x + (rand(size(x)) - 0.5) * 0.6;
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_list = [];% 遍历拓扑矩阵,找到所有有连接的节点对for i = 1:Nfor j = i+1:Nif tp(i, j) == 1% 添加节点对 [i, j] 到 nodePairs 矩阵tp_list = [tp_list; i, j];endendend

4.生成50个节点的拓扑 

%创建时间:2024年9月2日
%最后修改:2024年9月2日
%zhouzhichao
%自然生长出N节点网络function [tp,tp_list] = a50nodes_tp(P_list)% close all
% clearN = 50;
% P_list = ones(N,1);tp = zeros(N);count = 0;x = zeros(N,1);
y = zeros(N,1);%%
%中心节点附近的节点,2级别
x(1) = 0;
y(1) = 0;r2_list = [2,3,4];
a_list = zeros(N,1);a_list(2) = 0;
a_list(3) = 120/360*2*pi;
a_list(4) = 240/360*2*pi;x(2) = 1*cos(a_list(2));
y(2) = 1*sin(a_list(2));
x(3) = 1*cos(a_list(3));
y(3) = 1*sin(a_list(3));
x(4) = 1*cos(a_list(4));
y(4) = 1*sin(a_list(4));tp(1,2)=1;
tp(1,3)=1;
tp(1,4)=1;%%
%3级节点
m = 5;
r3_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+4;r3_list = [r3_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=2*cos(a);y(index)=2*sin(a);p = min_d_node(index,r2_list,x,y);tp(index,p) = 1;
end%%
%4级节点
m = 8;
r4_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+9;r4_list = [r4_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=3*cos(a);y(index)=3*sin(a);p = min_d_node(index,r3_list,x,y);tp(index,p) = 1;
end%%
m = 13;
r5_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+17;r5_list = [r5_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=4*cos(a);y(index)=4*sin(a);p = min_d_node(index,r4_list,x,y);tp(index,p) = 1;
end%%
m = 20;
% r4_list = [];
alpha = 2*pi/m;
for i=1:mindex = i+30;
%     r4_list = [r4_list,index];a = 60/360*2*pi+i*alpha;a_list(index) = a;x(index)=5*cos(a);y(index)=5*sin(a);p = min_d_node(index,r5_list,x,y);tp(index,p) = 1;
end%%
%补环
x = x + (rand(size(x)) - 0.5) * 0.6;
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_list = [];% 遍历拓扑矩阵,找到所有有连接的节点对for i = 1:Nfor j = i+1:Nif tp(i, j) == 1% 添加节点对 [i, j] 到 nodePairs 矩阵tp_list = [tp_list; i, j];endendend

5.加载实采波形 

% close all
% clear
%zhouzhichao
%创建时间:2024年8月25日
%最后修改时间:2024年9月3日function [Ack,fs] = ack_generate(M)load("D:\无线通信网络认知\论文1\experiment\直推式拓扑推理实验\拓扑生成\Ack.mat");% M = 2000;
Ack = downsample(Ack, M);
fs = 1e6/M;

相关文章:

  • [25-cv-05986]Keith律所代理Paisley Yazel版权画
  • 【连接器专题】案例:产品测试顺序表解读与应用
  • SAP学习笔记 - 开发20 - 前端Fiori开发 Nest View(嵌套视图) ,Fragment(片段)
  • 全球高尔夫球场运营服务市场:现状、挑战与未来发展
  • python学习(一)
  • 【java】springboot注解关键字
  • 【MATLAB去噪算法】基于CEEMD联合小波阈值去噪算法(第三期)
  • leetcode hot100 链表(二)
  • Spring Boot + MyBatis-Plus 读写分离与多 Slave 负载均衡示例
  • 适老化场景重构:现代家政老年照护虚拟仿真实训室建设方案​
  • 如何在 vue 中实现一个自定义拖拽的指令或插件
  • qt 事件顺序
  • Laravel模型状态:深入理解Eloquent的隐秘力量
  • QT常用控件(1)
  • metersphere不同域名的参数在链路测试中如何传递?
  • 项目任务,修改svip用户的存储空间。
  • 微博app 最新版本15.5.2 mfp 分析
  • RagFlow优化代码解析(一)
  • 操作系统:生态思政
  • 现代密码学 | 椭圆曲线密码学—附py代码
  • 免费注册网站/优化方案电子版
  • 嘉兴外贸网站制作/郑州网络营销公司哪家好
  • 羽毛球赛事级别分类/百度seo公司哪家好一点
  • 网站建设优化怎么做/口碑营销有哪些
  • wordpress 媒体选项/长春网站优化流程
  • 莆田网站建设/深圳网站建设维护