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

无线通信网络拓扑推理采样率实验(数据生成)

一、内容描述

测试信号采样率对无线通信网络拓扑推理的效果

二、MATLAB数据生成程序

%创建时间:2025年6月10日
%zhouzhichao
%遍历生成100Hz到1MHz的无线通信网络拓扑推理数据用于测试close all
clear
snr = 40;
n = 30;
dataset_n = 3;% for fs = 1e3:1e3:1e6
for fs = 100e3:-1e3:1e3Sampling_M = round(1e6/fs);nodes_P = ones(n,1);count_3 = 0;count_2 = 0;count_1 = 0;%获取一帧信号及对应功率[ack,~] = 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);ave_edge = round(1.5*n);L = ave_edge*3*a_slot_N;Signals = 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(["fs: ",fs/1e3," kHz  k: ",k])pause(0.01)[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: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,:) + alpha*randn(1, L);endSignals(k,:,:) = signals;Tp(k,:,:) = tp;Tp_list = cell(dataset_n,1);endsave("D:\无线通信网络认知\论文1\大修意见\Reviewer2-2 采样率实验\1e3-1e6Hz date\fs_"+num2str(fs/1e3)+"kHz_data.mat","Tp","Tp_list","Signals")end

 生成数据:

三、PyG转换数据

#作者:zhouzhichao
#创建时间:2025/5/30
#内容:生成残缺数据集用于实验import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)
import os
import h5py
import matplotlib.pyplot as plt
import numpy as np
import torch
from torch_geometric.data import InMemoryDataset, Data
from torch_geometric.utils import negative_samplingbase_dir = "D:\无线通信网络认知\论文1\大修意见\Reviewer2-2 采样率实验\\1k-100kHz data (mat)\\"N = 30
grapg_size = N
train_n = 20class graph_data(InMemoryDataset):def __init__(self, root, signals=None, tp_list = None, transform=None, pre_transform=None):self.signals = signalsself.tp_list = tp_listsuper().__init__(root, transform, pre_transform)self.data = torch.load(self.processed_paths[0])# 返回process方法所需的保存文件名。你之后保存的数据集名字和列表里的一致@propertydef processed_file_names(self):return ['gcn_data.pt']# 生成数据集所用的方法def process(self):signals = self.signalstp_list =self.tp_list#matlab的index是从1开始的,pytorch的index应当从0开始tp_list = tp_list - 1X = torch.tensor(signals, dtype=torch.float)# 所有的边Edge_index = torch.tensor(tp_list, dtype=torch.long)# 所有的边1标签edge_label = np.ones((tp_list.shape[1]))Edge_label = torch.tensor(edge_label, dtype=torch.float)neg_edge_index = negative_sampling(edge_index=Edge_index, num_nodes=grapg_size,num_neg_samples=Edge_index.shape[1], method='sparse')# 拼接正负样本索引Edge_label_index = Edge_indexperm = torch.randperm(Edge_index.size(1))Edge_index = Edge_index[:, perm]Edge_index = Edge_index[:, :train_n]# neg_edge_index = neg_edge_index[:, :train_n]Edge_label_index = torch.cat([Edge_label_index, neg_edge_index],dim=-1,)# 拼接正负样本Edge_label = torch.cat([Edge_label,Edge_label.new_zeros(neg_edge_index.size(1))], dim=0)data = Data(x=X, edge_index=Edge_index, edge_label_index=Edge_label_index, edge_label=Edge_label)torch.save(data, self.processed_paths[0])# data_list.append(data)# data_, slices = self.collate(data_list)  # 将不同大小的图数据对齐,填充# torch.save((data_, slices), self.processed_paths[0])if __name__ =="__main__":snr = 40for fs_i in range(100):fs = fs_i+1mat_file = h5py.File(base_dir + 'fs_'+str(fs)+'kHz_data.mat', 'r')# 获取数据集Signals = mat_file["Signals"][()]Tp = mat_file["Tp"][()]Tp_list = mat_file["Tp_list"][()]n = 3for i in range(n):signals = Signals[:, :, i]tp_list = np.array(mat_file[Tp_list[0, i]])root = "1k-100kHz data (pyg)/graph " + "fs-" + str(fs) + "kHz i-" + str(i)graph_data(root, signals = signals, tp_list = tp_list)print("")print("...图数据生成完成...")

 生成数据:

相关文章:

  • 数组——数组的遍历
  • Hive的索引使用如何优化?
  • MATLAB实现数字下变频低通滤波法
  • OpenCV CUDA模块图像变形------ 构建仿射变换的映射表函数buildWarpAffineMaps()
  • UE5 学习系类(七)导入bridge资产包
  • Stream流常用方法大全
  • UE5 蓝图按键控制物体旋转、暂停
  • 计算机网络 : 应用层协议HTTP
  • 数据治理域——离线数据开发
  • 迁移科技3D视觉系统:开启袋子拆垛场景的智能革命新纪元
  • CMake指令:aux_source_directory
  • MCP(Model Context Protocol)与 LangChain的区别与联系
  • tryhackme 之反弹 shell 理解
  • 量子加速器切入 AI 底层架构!能源焦虑时代,ORCA 正在改写数据中心的计算逻辑
  • Debian/Ubuntu systemd coredump调试程序Crash
  • 基于ElasticSearch的法律法规检索系统架构实践
  • 基于鸿蒙 HarmonyOS 5 打车小程序案例
  • jupyter中的checkpoints为空/打不开解决办法
  • Vue 事件绑定机制详解
  • 代理模式:AOP 切面编程的底层实现基础
  • 长春建站网站模板/数字化营销怎么做
  • 搭建微信网站怎么做/上海网络营销公司
  • 个人网站备注/中国新闻社
  • wordpress 隐藏相关文章/seo推广收费标准
  • 怎样提高网站首页权重/手机百度安装下载
  • 作文网推荐/站长工具seo综合