欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 65、基于卷积神经网络的调制分类(matlab)

65、基于卷积神经网络的调制分类(matlab)

2024/10/25 8:17:38 来源:https://blog.csdn.net/XU157303764/article/details/140072975  浏览:    关键词:65、基于卷积神经网络的调制分类(matlab)

 1、基于卷积神经网络的调制分类的原理及流程

基于卷积神经网络(CNN)的调制分类是一种常见的信号处理任务,用于识别或分类不同调制方式的信号。下面是基于CNN的调制分类的原理和流程:

原理:

  • CNN是一种深度学习模型,通过卷积层、池化层和全连接层等结构来提取数据中的特征。在调制分类任务中,CNN可以学习到调制信号的特征以区分不同的调制方式。
  • 输入到CNN模型的数据是经过预处理和特征提取后的信号样本,通常是时域信号或频域信号。CNN将这些信号作为输入,并通过网络中的不同层来提取特征并完成调制分类任务。

流程:

  1. 数据准备:准备好用于训练和测试的信号样本数据集,每个样本包含一个已知调制方式的信号。

  2. 数据预处理:对信号数据进行预处理,可能包括归一化、降噪、平滑处理等,以确保数据质量。

  3. 数据特征提取:将信号数据转换为适合CNN输入的格式,例如在时域或频域下进行信号特征提取,将其转换为矩阵形式。

  4. 构建CNN模型:定义CNN模型的结构,包括卷积层、池化层、激活函数层和全连接层等。可以根据具体需求自定义网络结构。

  5. 模型训练:使用训练集数据对CNN模型进行训练,通过反向传播算法不断调整模型参数以使模型输出尽可能接近真实标签。

  6. 模型评估:使用测试集数据评估训练好的模型性能,包括准确率、召回率等指标,对模型进行优化和调整。

  7. 模型应用:将训练好的CNN模型用于未知信号的调制分类,通过模型预测得到信号的调制方式。

  8. 参数调优:根据模型评估结果,调整模型结构、超参数等进行优化,以提高调制分类的准确性和性能。

在Matlab中,可以使用深度学习工具箱等相关工具进行CNN模型的搭建和训练

2、基于卷积神经网络的调制分类的说明

使用卷积神经网络 (CNN) 进行调制分类

生成合成的、通道减损波形。使用生成的波形作为训练数据,训练 CNN 进行调制分类

 

3、使用 CNN 预测调制类型

1)调制数据类型

二相相移键控 (BPSK)

四相相移键控 (QPSK)

八相相移键控 (8-PSK)

十六相正交调幅 (16-QAM)

六十四相正交调幅 (64-QAM)

四相脉冲振幅调制 (PAM4)

高斯频移键控 (GFSK)

连续相位频移键控 (CPFSK)

广播 FM (B-FM)

双边带振幅调制 (DSB-AM)

单边带振幅调制 (SSB-AM)

2)实现代码

modulationTypes = categorical(sort(["BPSK", "QPSK", "8PSK", ..."16QAM", "64QAM", "PAM4", "GFSK", "CPFSK", ..."B-FM", "DSB-AM", "SSB-AM"]));

3)加载训练网络代码

 

load trainedModulationClassificationNetwork
trainedNet
trainedNet = dlnetwork with properties:Layers: [19×1 nnet.cnn.layer.Layer]Connections: [18×2 table]Learnables: [22×3 table]State: [10×3 table]InputNames: {'Input Layer'}OutputNames: {'SoftMax'}Initialized: 1View summary with summary.

4、加载训练的网络

1)说明

经过训练的 CNN 接受 1024 个通道减损采样,并预测每个帧的调制类型

生成几个因莱斯多径衰落、中心频率和采样时间漂移以及 AWGN 而有所减损的 PAM4 帧。

以下函数生成合成信号来测试 CNN。然后使用 CNN 预测帧的调制类型。

randi:生成随机位

pammod (Communications Toolbox):PAM4 调制位

rcosdesign (Signal Processing Toolbox):设计平方根升余弦脉冲整形滤波器

filter:脉冲确定符号的形状

comm.RicianChannel (Communications Toolbox):应用莱斯多径通道

comm.PhaseFrequencyOffset (Communications Toolbox):应用时钟偏移引起的相位和/或频率偏移

interp1:应用时钟偏移引起的计时漂移

awgn (Communications Toolbox):添加 AWGN

2)实现代码

rng(123456)
% Random bits
d = randi([0 3], 1024, 1);
% PAM4 modulation
syms = pammod(d,4);
% Square-root raised cosine filter
filterCoeffs = rcosdesign(0.35,4,8);
tx = filter(filterCoeffs,1,upsample(syms,8));% Channel
SNR = 30;
maxOffset = 5;
fc = 902e6;
fs = 200e3;
multipathChannel = comm.RicianChannel(...'SampleRate', fs, ...'PathDelays', [0 1.8 3.4] / 200e3, ...'AveragePathGains', [0 -2 -10], ...'KFactor', 4, ...'MaximumDopplerShift', 4);frequencyShifter = comm.PhaseFrequencyOffset(...'SampleRate', fs);% Apply an independent multipath channel
reset(multipathChannel)
outMultipathChan = multipathChannel(tx);% Determine clock offset factor
clockOffset = (rand() * 2*maxOffset) - maxOffset;
C = 1 + clockOffset / 1e6;% Add frequency offset
frequencyShifter.FrequencyOffset = -(C-1)*fc;
outFreqShifter = frequencyShifter(outMultipathChan);% Add sampling time drift
t = (0:length(tx)-1)' / fs;
newFs = fs * C;
tp = (0:length(tx)-1)' / newFs;
outTimeDrift = interp1(t, outFreqShifter, tp);% Add noise
rx = awgn(outTimeDrift,SNR,0);% Frame generation for classification
unknownFrames = helperModClassGetNNFrames(rx);% Classification
scores1 = predict(trainedNet,unknownFrames);
prediction1 = scores2label(scores1,modulationTypes);

3)返回分类器预测 

prediction1
prediction1 = 7×1 categoricalPAM4 PAM4 PAM4 PAM4 PAM4 PAM4 PAM4 

4) 分类器还返回一个包含每一帧分数的向量

代码

helperModClassPlotScores(scores1,modulationTypes)

视图效果

3aa5555d0b43495989ff2829144c3a1c.png

5、生成用于训练的波形

1)说明1

为每种调制类型生成 10000 个帧,其中 80% 用于训练,10% 用于验证,10% 用于测试。

网络训练阶段使用训练和验证帧

使用测试帧获得最终分类准确度。每帧的长度为 1024 个样本,采样率为 200 kHz。对于数字调制类型,八个采样表示一个符号。

2)代码实现


trainNow = false;
if trainNow == truenumFramesPerModType = 10000;
elsenumFramesPerModType = 200;
end
percentTrainingSamples = 80;
percentValidationSamples = 10;
percentTestSamples = 10;sps = 8;                % Samples per symbol
spf = 1024;             % Samples per frame
fs = 200e3;             % Sample rate
fc = [902e6 100e6];     % Center frequencies

 3)说明2

创建通道减损

让每帧通过通道并具有

  • AWGN

  • 莱斯多

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com