主要内容

基于深度学习的雷达和通信波形分类

此示例显示如何使用Wigner-Ville分布(WVD)和深卷积神经网络(CNN)对雷达和通信波形进行分类。

调制分类是智能接收机的一项重要功能。调制分类有许多应用,如认知雷达和软件无线电。通常,要识别这些波形并按调制类型对其进行分类,必须定义有意义的特征并将其输入分类器。虽然有效,但这一过程可能需要大量的工作和领域知识才能产生准确的分类。本例探索了一个框架,用于自动从信号中提取时频特征,并使用深度学习网络执行信号分类。

本示例的第一部分模拟了一个雷达分类系统,该系统综合了三种脉冲雷达波形并对其进行分类。雷达波形为:

  • 矩形

  • 线性调频(LFM)

  • 巴克码

雷达分类系统不是孤立存在的。相反,它存在于一个日益被占用的频谱中,与其他发射源(如通信系统、无线电和导航系统)竞争。该示例的第二部分扩展网络以包括附加的通信调制类型。除了第一组雷达波形外,扩展网络还合成并识别这些通信波形:

  • 高斯频移键控(GFSK)

  • 连续相移频键控(CPFSK)

  • 广播调频(B-FM)

  • 双边带调幅(DSB-AM)

  • 单边带调幅(SSB-AM)

本示例主要关注雷达波形,并将分类扩展为包括一小部分振幅和频率调制通信信号。请参阅基于深度学习的调制分类(通讯工具箱)对于一个完整的工作流调制分类与广泛的通信信号阵列。

生成雷达波形

生成3000个信号,采样率为100.每个调制类型的MHz。用相控矩形波对于矩形脉冲,相位阶段.Linearfmwaveform.对于LFM,以及相位编码波形对于带有巴克码的相位编码脉冲。

每个信号都有独特的参数,并增加了各种损伤,使其更真实。对于每个波形,脉冲宽度和重复频率将随机产生。对于线性调频波形,扫描带宽和方向是随机产生的。对于巴克波形,芯片的宽度和数量是随机产生的。所有信号都受到高斯白噪声的干扰awgn随机信噪比在[-6,30]dB范围内的函数。随机载波频率在以下范围内的频率偏移:[Fs/6,财政司司长/五]应用于每个信号使用通信相位频率偏移量对象最后,每个信号通过多径Rician衰落信道,comm.ricianchannel.

提供的助手函数helpergenerateradar波形创建和增强每种调制类型。

RNG.默认[wav,modType]=helperGenerateRadarWaveforms();

绘制一些LFM波形的傅里叶变换,以显示生成的集合中的方差。

idlfm = find(modtype ==“lfm”,3);nfft=2^nextpow2(长度(wav{1}));f=(0:(nfft/2-1))/nfft*100e6;图形子图(1,3,1)Z=fft(wav{idLFM(1)},nfft);绘图(f/1e6,abs(Z(1:nfft/2)))xlabel(“频率(MHz)”); ylabel(“振幅”);轴线广场subplot(1,3,2) Z = fft(wav{idLFM(2)},nfft);情节(f / 1 e6、abs (Z (1: nfft / 2)))包含(“频率(MHz)”); ylabel(“振幅”);轴线广场子图(1,3,3)Z=fft(wav{idLFM(3)},nfft);图(f/1e6,abs(Z(1:nfft/2)))xlabel(“频率(MHz)”); ylabel(“振幅”);轴线广场

基于Wigner-Ville分布的特征提取

为了提高机器学习算法的分类性能,一种常用的方法是输入提取的特征来代替原始信号数据。这些特征提供了输入数据的表示形式,使得分类算法更容易区分不同类别。Wigner-Ville分布表示ime对时变信号有用的原始数据的频率视图。时间和频率的高分辨率和局部性为识别类似调制类型提供了良好的功能。使用WVD.函数来计算每种调制类型的平滑伪WVD。

图子地块(1,3,1)wvd(wav{find(modType==“矩形”,1)},100e6,“平滑假想”)轴心广场;色条离开;标题('rect')子图(1,3,2)wvd(wav{find(modType==“lfm”,1)},100e6,“平滑假想”)轴心广场;色条离开;标题(“LFM”) subplot(1,3,3) wvd(wav{find(modType ==“巴克”,1)},100e6,“平滑假想”)轴心广场;色条离开;标题(“巴克”

要存储信号的平滑伪Wigner-Ville分布,首先创建目录TFDDatabase在临时目录中坦普迪尔.然后创建子目录TFDDatabase对于每一种调制类型。对于每个信号,计算平滑伪Wigner-Ville分布,并将结果向下采样到一个227 × 227矩阵。将矩阵保存为a.png对应于信号调制类型的子目录中的图像文件。helper函数HelperGenerateTFD文件执行所有这些步骤。由于数据库尺寸的大量和复杂性,此过程需要几分钟WVD.算法。你可以换坦普迪尔使用具有写权限的另一个目录。

parentdir = tempdir;datadir =.“TFDDatabase”;Helpergeneratetfdfiles(parentdir,datadir,wav,modtype,100e6)

为创建的文件夹创建图像数据存储对象,以管理用于培训深度学习网络的图像文件。此步骤避免将所有图像加载到内存中。将标签源指定为文件夹名称。这将根据文件夹名称分配每个信号的调制类型。

folders=fullfile(parentDir、dataDir、{'rect',“LFM”,“巴克”});imds = imageageataStore(文件夹,...“文件扩展名”,'.png','labelsource','foldernames',“ReadFcn”, @readTFDForSqueezeNet);

网络培训,80%的数据培训并以10%进行测试。剩下的10%用于验证。使用splitEachLabel函数来划分图像数据存储进入培训,验证和测试集。

[IMDStrain,IMDST,IMDSValidation] = SpliteachLabel(IMDS,0.8,0.1);

建立深度学习网络

在深度学习网络可以被训练之前,定义网络结构。这个例子使用迁移学习SqueezeNet,这是一个为图像分类创建的深度CNN。迁移学习是对现有神经网络进行再训练以分类新目标的过程。这个网络接受尺寸为227 × 227 × 3的图像输入。之前输入到网络,自定义读取功能readtfdforsqueezenet.将二维时频分布转换为正确大小的RGB图像。SqueezeNet在其默认配置中执行1000个类别的分类。

负载挤压罩。

net =挤压;

从网络中提取图层图。确认为大小为227-x-227-x-3的图像配置了挤压网。

lgraphSqz=layerGraph(净);lgraphSqz.Layers(1)
ans = ImageInputLayer with properties: Name: 'data' InputSize: [227 227 3] Hyperparameters DataAugmentation: 'none' NormalizationDimension: 'auto' Mean: [1×1×3 single]

为了根据我们的需要调整SqueezeNet,最后六层中的三层需要修改,以便对感兴趣的三种雷达调制类型进行分类。检查最后六层网络。

lgraphSqz.层(结束-5:结束)
ANS = 6×1层阵列,图层:1'DAPL9'丢失50%丢失2'CONV10'卷积1000 1×1×512卷绕卷发[11]和填充[0 0 0 0] 3'Relu_Conv10'Relu Relu4'POOL10'2-D全球平均池2-D全球平均池5'Prob'SoftMax Softmax 6'ClassificationLayer_PreDictions'分类输出CrossentRopyex与“Tench”和999其他类

将“drop9”层(网络中的最后一个辍学层)替换为概率为0.6的辍学层。

tmplayer = lgraphsqz.layers(端5);newdropoutlayer = dropoutlayer(0.6,“名字”,“新辍学者”);lgraphSqz=replaceLayer(lgraphSqz,tmpLayer.Name,newDropoutLayer);

挤压网中最后一个可学习的层是1乘1卷积层“conv10”。用一个新的卷积层替换该层,滤波器的数量等于调制类型的数量。同时增加新层的学习率系数。

numclasses = 3;tmplayer = lgraphsqz.layers(结束-4);newlearnablelayer =卷积2dlayer(1,numcrasses,...“名字”,“new_conv”,...“权重学习速率因子”20,...'biaslearnratefactor', 20);lgraphSqz = replaceLayer (lgraphSqz tmpLayer.Name newLearnableLayer);

用没有类标签的新一个替换分类层。

tmpLayer=lgraphSqz.Layers(结束);newClassLayer=classificationLayer(“名字”,“新类输出”);lgraphsqz = replaceElayer(lgraphsqz,tmplayer.name,newclasslayer);

检查网络的最后六层。确认已更改丢帧,卷积和输出层。

lgraphSqz.层(结束-5:结束)
ans = 6×1层阵列层:1“new_dropout”辍学60%辍学2 new_conv的卷积3 1×1步[1]和填充的卷积[0 0 0 0]3‘relu_conv10 ReLU ReLU 4“pool10”二维全球平均池二维全球平均池5“概率”Softmax Softmax 6 new_classoutput crossentropyex分类输出

选择培训过程的选项,以确保良好的网络性能。参考培训选项每个选项的说明文档。

选项=培训选项(“sgdm”,...“MiniBatchSize”,128,...'maxepochs'5....“InitialLearnRate”,1e-3,...“洗牌”,'每个时代',...“冗长”,错误的,...“阴谋”,'培训 - 进步',...'vightationdata',IMDSValidation);

培训网络

使用trainNetwork命令来训练创建的CNN。由于数据集的大尺寸,过程可能需要几分钟。如果您的机器具有GPU和并行计算工具箱™,则Matlab®会自动使用GPU进行培训。否则,它使用CPU。图中的训练精度图显示了网络跨所有迭代的学习的进展。在三种雷达调制类型上,网络正确分类近100%的训练信号。

trousainnet = trainnetwork(Imdstrain,lgraphsqz,选项);

评估雷达波形的性能

使用培训的网络使用训练网络对测试数据进行分类分类命令。混淆矩阵是一种可视化分类性能的方法。使用困惑的园林命令计算和可视化分类准确性。对于输入到网络的三种调制类型,通过网络正确地识别了几乎所有相位编码,LFM和矩形波形。

预测=分类(trainedNet imdsTest);图confusionchart (imdsTest。标签,预测,“正常化”,“column-normalized”

生成通信波形并提取特征

雷达分类系统的频谱必须与其他发射源竞争。让我们看看创建的网络是如何扩展到包含其他模拟调制类型的。另一个MathWorks®示例,基于深度学习的调制分类(通讯工具箱),使用“通信工具箱”对几种不同的调制类型执行调制分类™. 辅助函数helpergeneratecomms波形生成并增加该示例中使用的调制类型的子集。由于WVD失去相位信息,只使用幅度和频率调制类型的子集。

有关数字和模拟调制分类所需的工作流程的深入描述,以及用于创建这些波形的技术,请参阅示例链接。对于每种调制类型,使用WVD.提取时频特征并可视化。

[wav,modtype] = helpergeneratecommswaveforms();图形子图(2,3,1)WVD(WAV {find(modtype ==“GFSK”,1)},200e3,“平滑假想”)轴心广场;色条离开;标题('gfsk')子图(2,3,2)wvd(wav{find(modType==“cpfsk”,1)},200e3,“平滑假想”)轴心广场;色条离开;标题(“CPFSK”)子图(2,3,3)wvd(wav{find(modType==“B-FM”,1)},200e3,“平滑假想”)轴心广场;色条离开;标题('B-FM'wvd(wav{find(modType ==“SSB-AM”,1)},200e3,“平滑假想”)轴心广场;色条离开;标题('ssb-am')子图(2,3,5)wvd(wav{find(modType==“dsb-am”,1)},200e3,“平滑假想”)轴心广场;色条离开;标题('dsb-am'

使用辅助功能HelperGenerateTFD文件再次计算每个输入信号的平滑伪WVD。创建一个图像数据存储对象来管理所有调制类型的图像文件。

helpergeneratefdffiles(parentDir,dataDir,wav,modType,200e3)folders=fullfile(parentDir,dataDir{'rect',“LFM”,“巴克”,'gfsk',“CPFSK”,'B-FM','ssb-am','dsb-am'});imds = imageageataStore(文件夹,...“文件扩展名”,'.png','labelsource','foldernames',“ReadFcn”, @readTFDForSqueezeNet);

同样,使用splitEachLabel函数。

RNG.默认[IMDStrain,IMDST,IMDSValidation] = SpliteachLabel(IMDS,0.8,0.1);

调整深度学习网络架构

在此之前,网络体系结构被划分为三种调制类型。必须对其进行更新,以便对雷达和通信信号的所有八种调制类型进行分类。这是一个类似于以前的过程,除了fullyConnectedLayer现在需要输出大小的八个。

numclasses = 8;net =挤压;lgraphsqz = layergraph(网);tmplayer = lgraphsqz.layers(端5);newdropoutlayer = dropoutlayer(0.6,“名字”,“新辍学者”);lgraphSqz=replaceLayer(lgraphSqz,tmpLayer.Name,newDropoutLayer);tmpLayer=lgraphSqz.Layers(end-4);newLearnableLayer=coulsion2dlayer(1,numclass,...“名字”,“new_conv”,...“权重学习速率因子”20,...'biaslearnratefactor', 20);lgraphSqz = replaceLayer (lgraphSqz tmpLayer.Name newLearnableLayer);tmpLayer=lgraphSqz.Layers(结束);newClassLayer=classificationLayer(“名字”,“新类输出”);lgraphsqz = replaceElayer(lgraphsqz,tmplayer.name,newclasslayer);

创建一组新的培训选项。

选项=培训选项(“sgdm”,...“MiniBatchSize”,150,...'maxepochs',10,...“InitialLearnRate”,1e-4,...“洗牌”,'每个时代',...“冗长”,错误的,...“阴谋”,'培训 - 进步',...'vightationdata',IMDSValidation);

使用trainNetwork命令来训练创建的CNN。对于所有调制类型,训练收敛的准确率约为95%的正确分类。

trousainnet = trainnetwork(Imdstrain,lgraphsqz,选项);

评估所有信号的性能

使用分类命令对保留用于测试的信号进行分类。同样,使用困惑的园林

预测=分类(trainedNet imdsTest);数字;ConfusionChart(IMDStest.Labels,预测,“正常化”,“column-normalized”

对于输入网络的八种调制类型,大约98%的B-FM、CPFSK、GFSK、巴克和LFM调制类型被正确分类。平均而言,大约85%的AM信号被正确识别。从混淆矩阵中,高比例的SSB-AM信号被错误分类为DSB-AM,而DSB-AM信号被错误分类为SSB-AM。

让我们研究其中的一些错误分类,以深入了解网络的学习过程。使用readimage函数从测试数据集中提取每个类别的单个图像。显示的WVD在视觉上看起来非常相似。由于DSB-AM和SSB-AM信号具有非常相似的特征,这在一定程度上解释了网络难以正确分类这两种类型。进一步的信号处理可能会造成差异在这两种调制类型之间,网络更清晰,分类效果更好。

DSB_DSB=readimage(imdsTest,find)((imdsTest.Labels=='dsb-am')&(预测)=='dsb-am'), 1));DSB_SSB = readimage (imdsTest找到(imdsTest。标签= ='dsb-am')&(预测)=='ssb-am'), 1));SSB_DSB = readimage (imdsTest找到(imdsTest。标签= ='ssb-am')&(预测)=='dsb-am'),1));SSB_SSB=readimage(imdsTest,find((imdsTest.Labels=='ssb-am')&(预测)=='ssb-am'),1)); 图子地块(2,2,1)图像SC(DSBU DSB(:,:,1))轴广场;标题({'实际等级:DSB-AM','预测等级:DSB-AM'})子地块(2,2,2)图像SC(DSB_SSB(:,:,1))轴广场;标题({'实际等级:DSB-AM','预测的课程:SSB-AM'})子地块(2,2,3)图像SC(SSB_DSB(:,:,1))轴广场;标题({'实际课程:SSB-AM','预测等级:DSB-AM'})子地块(2,2,4)图像SC(SSB_SSB(:,:,1))轴广场;标题({'实际课程:SSB-AM','预测的课程:SSB-AM'})

总结

该示例说明了如何使用时频技术和深度学习网络对雷达和通信调制类型进行分类。可以通过利用小波工具箱中的时频分析来研究进一步改进的工作™ 以及信号处理工具箱中提供的附加傅里叶分析™.

工具书类

[1] 使用卷积神经网络中的Wigner-Ville分布对一维非平稳信号进行分类第25欧洲信号处理会议(EUSIPCO).IEEE,2017年。

[2]刘,小玉,迪宇杨和艾丽的Gamal。“用于调制分类的深度神经网络架构。”第51届亚洲信号、系统和计算机会议. 2017.

[3] “王、赵、王健、张旭东。“基于时频分析和卷积神经网络的雷达波形自动识别。”IEEE国际会议声学、语音和信号处理(ICASSP). 2017.