目录

一、什么是KNN

二、为什么要在OSI的物理层中引入KNN

 2.1、背景

2.2、KNN的引入

三、基于KNN算法的调制识别技术建模

3.1、调制信号的高阶累积量

3.3.1、KNN分类调制信号的依据

3.1.2、广义高阶累积量的定义

3.1.3、常用高阶累积量计算公式

3.1.4、常用高阶累积量

3.2、基于高阶累积量的调制信号样本集构造

3.2.1、特征向量建模

3.2.2、训练样本集建模

3.2.3、训练样本的特征向量集建模

3.2.4、待测数据集建模

3.2.5、待测向量集KNN流程建模

3.2.6、项目整体仿真系统建模

四、数据生成部分仿真设计

五、调制识别部分仿真设计

六、变参对比

七、高阶累积量下的训练


一、什么是KNN

        KNN(K-Nearest Neighbor)K邻近算法,是机器学习中常用的分类算法,思想基础是“物以类聚,人以群分”,即要判断一个新数据的类别,就看它的邻居。

        K值就是用离新数据样本p最近的K个样本来判断p的类别,这里的距离可以是欧氏距离、曼哈顿距离等。

KNN算法的核心流程:

在已知类别中,计算样本集中的样本与当前测试数据(待分类数据)的距离;

按照距离递增次序排序;

选取与当前测试数据距离最小的k个样本;

统计前k个样本属于各个类别的出现频率;

将前k个样本中出现频率最高的类别作为当前点测试数据的分类结果。

        所以,KNN的缺点是,数据越多计算量越大,效率就越低,故而很难运用到较大数据的训练中。

        感兴趣的同学可以详细了解:KNN算法(k近邻算法)原理及总结

二、为什么要在OSI的物理层中引入KNN

 2.1、背景

        我们知道,下小雨时打伞就够用,下大雨时穿雨衣雨鞋是更妥善的方法;如果不知道今天外面下多大的雨,那只好考虑最坏的情况穿雨衣雨鞋;但是如果只是一直下小雨,穿雨衣雨鞋就会没有打伞轻便。随着技术的发展,我们有了天气预报,可以告诉人们外面是将要下大雨还是下小雨,让人们可以自行调整雨具的选择。

        在无线通信的的传输过程中,传统的调制方式包括AM、FM、PM、ASK、FSK、PSK、PAM、QAM等。若采用固定的调制方式,调制阶数越低抗干扰和噪声的能力越强(归一化星座图上相邻星座点间的欧氏距离越大),但是实际信道中往往需要考虑最恶劣的情况(信道噪声波动大),因此通常选择地接调制;但若信道质量很好,则频谱利用率就会很低。

        因此Cavrs在1972年提出根据接收信号电平自适应调整符号传输速率的方法来对抗信道衰落,这种方法自适应地选择不同的调制方式:当信道质量差时选择地接调制,保证可靠性,当信道质量好是选择高阶调制,在保证可靠性的前提下提高了有效性。

2.2、KNN的引入

        传统的AMC技术基于信令来传输调制方式的信息,即接收机自适应地选择频谱调制方式并通过信令反馈给发射机,发射机确定调制方式并通过信令通知接收机,但是信令传输需要占用频谱/时隙/功率资源

        为了克服该缺点,我们引入了自动调制识别技术(例如KNN),即接收机根据接收数据的特征分析及算法判别其调制方式(第一章:KNN的作用为将样本数据分类)。通过这样的方式,我们就无需收发机之间传输调制方式相关的信令,节省了频谱资源。

        KNN主要应用于支持AMC调制方式,以及不同调制信号的探测识别。

三、基于KNN算法的调制识别技术建模

3.1、调制信号的高阶累积量

3.3.1、KNN分类调制信号的依据

        调制信号的特征有很多,包络基于频谱特性的特征、基于小波变换的特征、基于高阶统计特性的特征、基于时域特性的特征等等。机器学习中我们常用高阶统计量的特征来区分调制信号的调制类型。

3.1.2、广义高阶累积量的定义

        广义高阶矩:对于一个具有零均值的复随机过程 X( t) , 其广义高阶矩定义为:

M_{pq} = E[X(t)^{(p-q)}X^*(t)^q]

        其中,E 表示求期望运算* 表示函数的共轭。

        广义高阶累积量:定义式:

C_{pq} = cum\{X(t)^{(p-q)},X^*(t)^q)\}

        其中,联合累积量cum:

cum(x^{k_1}_1,x^{k_2}_2,...,x^{k_n}_n) = (-j)^r\frac{\partial[ln\phi(\omega_1,\omega_2,...,w_n)]}{\partial \omega^{k_1}_1\partial \omega^{k_2}_2,...,\partial \omega ^{k_n}_n}\mid {}_{\omega_1 = \omega_2 = ... = \omega_L = 0}

        L维随机矢量\vec{x} = [x_1,x_2,...,x_L]^T的特征函数为

\phi(\vec\omega) = E\{ e^{j\omega^T\vec{x}}\} = E(e^{j\displaystyle\sum_{i=1}^{n}w_ix_i})

3.1.3、常用高阶累积量计算公式

M_{pq} = \frac{1}{N}\sum_{n=1}^{N} x(n)^{p-q} \left[x^{*}(n)\right]^{q}

C_{20} = M_{20}

C_{21} = M_{21}

C_{40} = M_{40} - 3M_{20}^{2}

C_{41} = M_{41} - 3M_{20}M_{21}

C_{42} = M_{42} - |M_{20}|^{2} - 2M_{21}^{2}

C_{60} = M_{60} - 15M_{40}M_{20} + 30M_{20}^{3}

C_{61} = M_{61} - 5M_{41}M_{20} - 10M_{40}M_{21} + 30M_{20}^{2}M_{21}

C_{62} = M_{62} - 6M_{42}M_{20} - 8M_{41}M_{21} - M_{40}M_{22} + 6M_{20}^{2}M_{22} + 24M_{20}M_{21}^{2}

C_{63} = M_{63} - 9M_{42}M_{21} + 12M_{21}^{3} - 3M_{41}M_{22} - 3M_{40}M_{23} + \\ \\ 18M_{20}M_{21}M_{22} - M_{20}M_{23}

3.1.4、常用高阶累积量

BPSK

QPSK

16QAM

64QAM

256QAM

C20

1

0

0

0

0

C21

1

1

1

1

1

C40

2

1

0.68

0.62

0.6

C41

2

0

0

0

0

C42

2

1

0.68

0.62

0.6

C60

16

0.36

0.27

0.26

0.25

C61

16

4

2.08

1.8

1.7

C62

16

0.25

0.22

0.2

0.2

C63

16

4

2.08

1.8

1.8

3.2、基于高阶累积量的调制信号样本集构造

3.2.1、特征向量建模

        本案例算法以上述高阶累积量的部分之作为特征参量,设计特征向量,构造从原始信号空间向特征向量空间的映射。本案例中,选择二、三、四阶统计量构成特征向量,以BPSK信号为例,其特征向量表示为:

f_{BPSK}(i) = \{ C_{20},C_{21},C_{40},C_{41},C_{42}\}

        其余调制方式处理过程类似。还可以设计更为优秀的特征向量,例如引入更多的高阶累积量,或者各种累积量的计算组合,以增加不同调制方式特征向量的区分度。

3.2.2、训练样本集建模

        假设对于每一种调制方式,分别生成M=10组数据,每组包含N=500个调制符号,所以原始训练集:

BPSK 10组×500符号 每符号1bit 需生成 500 个随机 bit
QPSK 10组×500符号 每符号2bit 需生成 1000 个随机 bit
16QAM 10组×500符号 每符号4bit 需生成 2000 个随机 bit
64QAM 10组×500符号 每符号6bit 需生成 3000 个随机 bit

        训练样本集建模

\{ data_{BPSK} (1) ... data_{BPSK}(MN) , BPSK\} \\ \\ \{ data_{QPSK} (1) ... data_{QPSK}(MN) , QPSK\} \\ \\ \{ data_{16QAM} (1) ... data_{16QAM}(MN) , 16QAM\}

        等价于:

\{ data_{BPSK} (1) , BPSK\} ...\{ data_{BPSK} (MN) , BPSK\} \\ \\ \{ data_{QPSK} (1) , QPSK\} ...\{ data_{QPSK} (MN) , QPSK\} \\ \\ \{ data_{16QAM} (1), 16QAM\}... \{ data_{16QAM} (MN), 16QAM\}

3.2.3、训练样本的特征向量集建模

        以BPSK信号为例,每组 N = 500 个符号经过调制后,计算出 L = 5 个归一化高阶累积量特征:

C_{20},C_{21},C_{40},C_{41},C_{42}

        最终形成一组BPSK500个符号训练后得到 1 条特征向量:

f_{BPSK}(i) = \{ C_{20},C_{21},C_{40},C_{41},C_{42}\}

        因此每种调制方式贡献N = 10 行特征数据,训练集总计 4×10 = 40 行。

        故高阶累积量训练集建模

\{ f_{BPSK} (1) ... f_{BPSK}(M) , BPSK\} \\ \\ \{ f_{QPSK} (1) ... f_{QPSK}(M) , QPSK\} \\ \\ \{ f_{16QAM} (1) ... f_{16QAM}(MN) , 16QAM\}

        等价于:

\{ f_{BPSK}(1)=\{ C_{20},C_{21},C_{40},C_{41},C_{42}\}, BPSK\}... \\ \{ f_{BPSK}(M)=\{ C_{20},C_{21},C_{40},C_{41},C_{42}\}, BPSK\} \\ \\ \{ f_{QPSK}(1)=\{ C_{20},C_{21},C_{40},C_{41},C_{42}\}, QPSK\}...\\ \{ f_{QPSK}(M)=\{ C_{20},C_{21},C_{40},C_{41},C_{42}\}, QPSK\} \\ \\ \{ f_{16QAM}(1)=\{ C_{20},C_{21},C_{40},C_{41},C_{42}\}, 16QAM\}...\\ \{ f_{16QAM} (M)=\{ C_{20},C_{21},C_{40},C_{41},C_{42}\}, 16QAM\}

3.2.4、待测数据集建模

        对于待测试数据,可以分为P=1000组,每组N=500个符号,处理待测数据集的特征向量为:

\{ \hat{f}_x(1),...,\hat{f}_x(P)\}

3.2.5、待测向量集KNN流程建模

        设定算法参数,可以通过多次测试确定,选择性能最好的参数,本案例选择n=10,计算距离变量,将每个待测数据特征向量与训练样本集特征向量空间中的每一个样本计算欧氏距离:

d(f_{test},f_{sample}) = \sqrt{\sum_{i=1}^{L}(f_{test-i} - f_{sample-i})^2}

        然后统计距离最小的k个样本,记录这k个样本的调制方式,统计各种调制方式的频次,将出现频次最高的调制方式作为最终的识别结果。将测试识别正确的次数与测试数据特征向量综述P的比值作为统计测试准确率。

3.2.6、项目整体仿真系统建模

四、数据生成部分仿真设计

北邮 AI无线通信 | 基于KNN的调制模式识别(2)依托于MatlabR2023b对调制信号训练数据生成部分的仿真设计(data_generation_module)

五、调制识别部分仿真设计

北邮 AI无线通信 | 基于KNN的调制模式识别(3)依托于Jupyter Notebook对样本信号调制模式识别的仿真设计(modulation_recognition_module)

六、变参对比

北邮 AI无线通信 | 基于KNN的调制模式识别(4)样本信号调制模式识别仿真设计的参数探究

七、高阶累积量下的训练

北邮 AI无线通信 | 基于KNN的调制模式识别(4)样本信号调制模式识别仿真设计的参数探究

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐