功能:
遍历生成20到1000个节点的无线通信网络拓扑推理数据,包括网络拓扑和每个节点发射的电磁信号,采样率1MHz/3000,信号时长5.7s,单帧数据波形为实采
数据生成效果:
拓扑及空间位置:
节点电磁信号:
这个程序里的large_nodes_tp函数在我的另一篇博客中有介绍:MATLAB生成大规模无线通信网络拓扑(任意节点数量)
基础功能在我的小规模无线通信网络拓扑推理数据生成的博客中有介绍:
MATLAB仿真生成无线通信网络拓扑推理数据集
%创建时间:2025年6月8日
%zhouzhichao
%遍历生成20到1000个节点数量的无线通信网络拓扑推理数据用于测试
close all
clear
snr=40;
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); % 计算当前噪声的能量
a_slot_N = round(7*ack_L);
for n =20:1000
disp(["n: ",n])
nodes_P = ones(n, 1);
[tp,tp_list] = large_nodes_tp(nodes_P,n);
n_edge = length(tp_list);
L = n_edge*3*a_slot_N;
signals = zeros(n,L);
c = 0;
A = 10^(snr/10);
P_noise = P_signal/A;
alpha = sqrt(P_noise / P_noise_1); % 计算缩放因子
for epoch=1:3
index_list = randperm(n_edge);
for i =index_list
this_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:3
r_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;
end
c = c + 1;
end
end
for i=1:n
signals(i,:) = signals(i,:) + alpha*randn(1, L);
end
S = signals';
aa = tp*tp;
D_list = zeros(n,1);
for i=1:n
D_list(i) = aa(i,i);
end
save("D:\无线通信网络认知\论文1\大修意见\Reviewer1-4 大规模图实验\20-1000节点网络(mat)\"+num2str(n)+"_nodes_data.mat","tp","tp_list","signals")
end