【频谱感知】数据集分析,纯噪声IQ数据生成

文章探讨了使用IQ信号进行频谱感知的任务,特别是针对RML2016/2018数据集。作者提到在生成纯噪声方面的挑战,通过观察星座图来确定不同信噪比下的噪声范围。通过实验,调整噪声功率并生成相应的数据,以模拟不同信噪比场景。代码示例展示了如何生成噪声信号,并保存为与deepsig2018a数据集兼容的格式,为后续的深度学习模型训练提供数据支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先介绍下频谱感知任务:感知某一频段是否存在用户在这里插入图片描述
看了很多使用IQ信号(RML2016/2018数据集)进行频谱感知的工作,却一直没找到具体生成纯噪声方法,只好自己粗略实现了一下,难点在于判断所需的纯噪声功率/方差 的范围是多少!
先列出类似使用IQ信号频谱感知的论文:
Spectrum sensing in cognitive radio: A deep learning based model
Deep Learning for Spectrum Sensing in Cognitive Radio
Deep Learning for Spectrum Sensing
基于LSTM和CNN的频谱感知方法研究
Novel deep learning framework for wideband spectrum characterization at sub-Nyquist rate
个人仅检索到这些,肯定不止于此,重点推荐一下最后一个,和压缩感知有些关系,最近也在看压缩感知
开始数据集分析,本次借助deepsig2018a数据集(RML2018a)0-30 db信噪比范围(全部数据集是-20-30db,个人仅使用了部分),过程代码已去
通过对星座图的观察,FM调制方式更容易判断出噪声的范围30db几乎没噪声,0-0.05(猜测0.05...)

30db几乎没噪声,0-0.05(猜测0.05…)

在这里插入图片描述

20db几乎没噪声,0-0.1

在这里插入图片描述

10db,可以看到噪声,0-0.2

在这里插入图片描述

2db,噪声十分明显,0-0.6

在这里插入图片描述

0db,噪声十分明显,0-1

开始纯噪声分析:noise = (np.random.randn(N) + 1j*np.random.randn(N))/mul
调节mul数值,改变噪声功率在这里插入图片描述

mul=3,基本在0-1(符合0db情况,后面不在赘述)

在这里插入图片描述

mul=8,基本在0-0.3

在这里插入图片描述

mul=20,基本在0-0.1

在这里插入图片描述

mul=20,基本在0-0.05

个人没具体对应分析,也没有统计分析,只是给出粗略实现方式,生成噪声代码如下,最后的数据和deepsig2018数据格式类似,X=[4096,1024,2] Y[4096,1] (和deepsig2018不一样【4096,24】,理论应该整合起来,全部修改为【4096,2】,当然我认为可以同时实现调制识别和频谱感知,那么应该修改为【4096,25】),Z【4096,1】,重说一遍,各噪声功率的比值没进行统计分析,仅主观设置,本文仅提供思路,

import numpy as np
import matplotlib.pyplot as plt
import h5py
out = h5py.File('temp.hdf5', 'w')
out_X = []
out_Y = []
out_Z = []

N=1024
muls=[50,40,30,20,10,8,3]
counts=[200,300,500,1000,1500,500,96]
for i in range(len(muls)):
# for i in range(2):
    index=0
    while(index<counts[i]):
        noise = (np.random.randn(N) + 1j*np.random.randn(N))/muls[i]# AWGN with unity power
        I,Q=np.real(noise).astype('float32'),np.imag(noise).astype('float32')
        temp = np.array([I, Q]).T
        out_X.append(temp)
        out_Y.append(muls[i])
        out_Z.append([-1])
        index+=1
        # plt.scatter(np.real(noise),np.imag(noise))
        # plt.title('星座图', fontdict={'weight': 'normal', 'size': 10, 'color': 'blue'})
        # plt.show()
out['X'] = out_X
out['Y'] = out_Y
out['Z'] = out_Z

print(out['X'].shape,out['Y'].shape,out['Z'].shape)

在这里插入图片描述
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值