引言
本文介绍 2D-MUSIC 算法的原理与实现逻辑。
MUSIC 算法原理
全称为二维多重信号分类(2D-Multiple Signal Classification)算法,是一种子空间类的超分辨率 DOA 估计算法,核心是利用信号子空间和噪声子空间的正交性来估计信号方向。
MUSIC 算法的关键是对协方差矩阵进行特征值分解,划分信号子空间和噪声子空间,再利用两个子空间的正交性构造空间谱。
首先,雷达阵列的每个天线都会收到信号,所有天线接收信号的能量分布和相关性,可以通过计算样本协方差矩阵表示。随后,MUSIC 算法会对这个协方差矩阵做拆分(即特征值分解),拆分规则如下:
把协方差矩阵拆成 N 个特征值和对应的特征向量(N = 天线阵元总数)。特征值越大,代表这个特征向量包含目标的可能性越大。因为有目标的信号,相比无目标的噪声信号能量更强,而特征值的物理意义就是代表协方差矩阵在对应特征向量方向上的能量大小。
拆分后会出现一个明显的规律:
- 少数特征值特别大:这些特征向量里基本都是人体目标的信号能量(因为目标信号能量强,占主导);
- 剩下的特征值特别小,全是噪声能量(因为噪声能量弱)。
随后,MUSIC 算法将得到的所有特征向量,按特征值大小进行排序分类,并放在两个不同的空间中:
- 信号子空间:理想情况下,只包含目标信号,对应公式中协方差矩阵的大特征值,即把特征值大的那几个放在一起,组成一个专属空间。(几个对应公式中指定的 K,即目标数)
- 噪声子空间:只包含噪声,对应公式中协方差矩阵的小特征值,即除了信号子空间内包含的以外所有特征值组成另一个专属空间。
既然特征值大的特征向量就包含了目标信息,为什么还有继续的步骤?
这是因为信号子空间里的特征向量,只是装着目标信号的能量,它不直接包含角度信息。角度信息,存在于'阵列流形向量'中——这个向量是由天线位置和信号来波方向共同决定的(一个角度对应一个唯一的阵列流形向量)。因此,再后面的计算,都是为了计算目标的方位信息,也就是利用正交性。
那为什么可以利用正交性来判断目标方向呢?
因为人体反射的目标信号能量和环境噪声的信号能量是两个独立不相关的信号。即人体信号的强弱,不会影响噪声的大小;同样的,噪声变大或变小,也不会让人体信号变强或变弱。而正交性有一个特性,就是正交的两个向量,点积为 0(可理解为关联性为 0)。
具体步骤如下:
- 给定一个角度范围(比如方位角 −90 度∼90 度,俯仰角 -90 度∼90 度),每隔一个小步长(比如 1 度)取一个角度组合;
- 对每个角度组合,根据天线阵列的位置分布,计算对应的阵列流形向量;
- 判断当前阵列流形向量和噪声子空间是否正交,即计算两个向量的内积模,正交趋近为 0。
同样的,遍历猜想角度是否是真实目标角度,那就只有两种情况:猜对和猜错。
- 猜的角度=真实目标角度
阵列流形向量属于信号子空间,和噪声子空间正交,关联性趋近于 0。取倒数后,对应谱值的值变大,形成峰值。
- 猜的角度≠真实目标角度
阵列流形向量属于噪声子空间,和噪声子空间不是正交关系,关联性大于 0。取倒数后,对应谱值的值变小,无法形成峰值。
完成所有角度的计算后,即可得到空间谱,找到空间谱中的峰值,对应的角度就是目标角度。
注意:MUSIC 算法有个前提,需要指定目标个数,也就是划分进信号子空间中特征向量的个数。这是因为后续利用噪声子空间的正交性,来判断是否是目标方向。如果不能确认目标个数,会导致子空间分类出错,进而导致后续验证正交性时,得到的空间谱结果失真。
比如真实目标是 2 个,但指定目标是 3 个,那噪声子空间就会少一个特征向量,空间谱会在非目标角度出现一个'假峰',在筛选峰值时,会误以为有 3 个目标。
若指定目标是 1 个,那信号子空间少了一个特征向量,噪声子空间多了一个信号特征向量,空间谱的真实目标峰就会变得很平缓,甚至被噪声覆盖,无法得到有效峰值。
当然,现在很多 MUSIC 算法已经做了优化,可以自适应识别目标个数,即增加了信源数估计算法,核心逻辑都是通过某一种方法去找特征值的分界点,从而得到目标数 K。如,当前特征分解后,得到 10 个特征值 [10,9,8,3,2,2,3,1,2,1],简单的,可以通过聚类,设定误差为±2 的归为一类,那么很明显的,8 和 3 就是一个分界点,可以分成 2 批,取特征值大的那一批作为目标数,得到目标 K=3。
协方差矩阵解析
上文中提到用协方差来表示信号的能量分布和相关性,接下来进行详细解释。
对于阵列中的每一根天线,它接收到的信号都不是固定值,而是随时间变化的随机量。天线信号中包含两个信息:能量分布、相关性。
能量分布:每根天线自己接收到的信号'有多强'(波动大小);

