读取rml2016.10a数据集

先介绍数据集

rml2016.10a
该数据集共有220000条样本,每条样本的size(2,128),即I/Q两路数据,每个样本的长度为128.
信噪比为-20dB ~ 18dB,间隔为2dB,即19种不同的信噪比环境,
共11种不同的调制方式,分别为8PSK, AM-DSB, AM-SSB,BPSK, CPFSK, GFSK, 4-PAM, 16-QAM, 64-QAM, QPSK, WBFM
大家都喜欢看图表,下面放图表

样本总量220000
信噪比范围-20dB ~ 18dB
单一样本形状shape(2,128)
调制类别11种8PSK, AM-DSB, AM-SSB,BPSK, CPFSK, GFSK, 4-PAM, 16-QAM, 64-QAM, QPSK, WBFM

工程文件结构如下

在这里插入图片描述
红框为当前程序执行所在文件

读取数据集并处理成tensor格式
本专栏是在pytorch框架下进行实现

import pickle
import numpy as np
import torch

def load_data():
    with open(r"../data/RML2016.10a_dict.pkl", 'rb') as f:
        data = pickle.load(f, encoding='latin1')
        # data.keys() = ['8psk', -10]
        snrs, mods = map(lambda j: sorted(list(set(map(lambda x: x[j], data.keys())))), [1, 0])
        X = []
        lbl = []
        for mod in mods:
            for snr in snrs:
                X.append(data[(mod, snr)])
                for i in range(data[(mod, snr)].shape[0]): lbl.append((mod, snr))
        X = np.vstack(X)

        np.random.seed(2022)
        n_examples = X.shape[0]
        n_train = n_examples * 0.8     # 划分数据集 n_train : n_test = 8:2
        train_idx = np.random.choice(range(0, int(n_examples)), size=int(n_train), replace=False)
        test_idx = list(set(range(0, n_examples)) - set(train_idx))
        X_train = X[train_idx]
        X_test = X[test_idx]
        def to_onehot(yy):
            yy1 = np.zeros([len(yy), max(yy)+1])
            yy1[np.arange(len(yy)), yy] = 1
            return yy1
        Y_train = to_onehot(list(map(lambda x: mods.index(lbl[x][0]), train_idx)))
        Y_test = to_onehot(list(map(lambda x: mods.index(lbl[x][0]), test_idx)))

        X_train = torch.from_numpy(X_train)
        X_train = X_train.unsqueeze(1)      # [176000,1,2,128]
        Y_train = torch.from_numpy(Y_train)
        X_test = torch.from_numpy(X_test)
        X_test = X_test.unsqueeze(1)        # [44000,1,2,128]
        Y_test = torch.from_numpy(Y_test)

        return X_train, Y_train, X_test, Y_test

if __name__ == '__main__':
    X_train, Y_train, X_test, Y_test = load_data()

参考文献:
https://arxiv.org/pdf/1602.04105.pdf
https://arxiv.org/pdf/1712.04578.pdf

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值