基于CNN卷积神经网络的射频特征识别

一、仿真原理

      研究将CNN神经网络应用于射频信号的特征识别。基于lora信号,添加射频特征,比如频偏,相位噪声,IQ不平衡等,经过瑞利信道,在接收到采集射频数据,打上标签,作为训练数据合测试数据,加入CNN模型,进行训练和验证

二、参数设置

信号参数

% 设置设备数量和数据样本
numDevices = 10;
numSignals = 20;
numTxAntennas = 4;
numRxAntennas = 4;
SNR = 0;
LoRaBandwidth = 125e3;
LoRaSpreadingFactor = 7;
fs = 1/LoRaBandwidth*2^LoRaSpreadingFactor;
numSymbols = 20;
 
% 噪声和失真参数
% 扩大噪声和失真参数的范围
phaseNoise = [-60, -50, -40, -30, -20, -10, 0, 10, 20, 30];
frequencyOffset = [-20, -16, -12, -8, -4, 0, 4, 8, 12, 16,20];
iqGainImbalance = [0.05, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55];
iqPhaseImbalance = [0.05, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55];
realDCOffset = [0.05, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55];
imaginaryDCOffset = [0.05, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55];

设置10台被测设备,每台被测设备又自己不同的射频特征(频偏,相位噪声,IQ不平衡),平台设备发送20个信号,每个信号包含10个符号,每个符号128个码片。所以,CNN输入是一个10*20*20*128的复数集,其中10个符号*128个码片构成一个二维数据,输入给CNN。因为是复数,所以可以拆分成2*20*128的3维数据输入CNN

CNN参数

    numClasses = numDevices;  % 假设您有十个不同的设备类别
    layers = [
        imageInputLayer([size(trainData, 1), size(trainData, 2), size(trainData, 3)])
        convolution2dLayer(3, 100, 'Padding', 'same')
        batchNormalizationLayer
        reluLayer
        convolution2dLayer(5, 50, 'Padding', 'same')
        batchNormalizationLayer
        reluLayer
        maxPooling2dLayer(1, 'Stride', 1)
        convolution2dLayer(5, 50, 'Padding', 'same')
        batchNormalizationLayer
        reluLayer
        dropoutLayer(0.5)  % 添加 Dropout 层,0.5 是丢弃率,可调整
        fullyConnectedLayer(numClasses)  % 将 numClasses 设置为 10
        softmaxLayer
        classificationLayer];
 
    % 分析网络以获取各层的输出大小
    analyzeNetwork(layers);
 
    options = trainingOptions('sgdm',...  % 将 'adam' 修改为 'gd'
        'MaxEpochs', 30,...
        'MiniBatchSize', 16,...
        'Plots', 'training-progress',...
        'ValidationData', {valData, valLabels},...
        'ValidationFrequency', 40,...
        'OutputFcn', @(info)plotTrainingProgress(info),...
        'InitialLearnRate', 0.001,...
        'ExecutionEnvironment', 'cpu');

三、训练和测试结果

四、思考

    训练模型是收敛的,在0db下仍然又90%的预测准确率,同时分辨率也很高,20hz的频偏也能轻松分辨。可以达到实际系统中频偏估计的精度要求了。如果应用到实际通信系统中的频偏估计,面临的挑战是,实际系统中的信号更加复杂,SNR将是时变的,因此需要更丰富的训练数据。第二,CNN计算本身也是很复杂的。其他的应用考虑,比如可以做信号制式的识别,协议参数的识别

源码请通过文首链接下载!!!!!创作不易,请留下一个赞赞!!十分感谢!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值