时频脊
该函数使用惩罚前向后贪婪算法从时频矩阵中提取最大能量脊。该算法通过极小化求最大时频脊ln一个在每个时间点一个是矩阵的绝对值。最小化ln一个是否等同于最大化的价值一个.该算法有选择地约束频率跳变,惩罚与频率箱之间的距离成正比。
下面的示例演示了时频脊算法,该算法使用的惩罚是频率容器之间距离的两倍。具体来说,就是元素之间的距离(j, k)
和(m, n)
被定义为(j-m)2
.时频矩阵有三个频箱和三个时间步长。矩阵的列对应时间步长,矩阵的行对应频率箱。第二行中的值表示正弦波。
假设你有一个矩阵:
1 4 4 2 2 2 5 5 4
更新(1,2)元素的值,如下所示。
保持第一个时间点的值不变。从矩阵的(1,2)元素开始算法,该元素表示第二个时间点的第一个频率仓。bin值为4。根据与(1,2)元素的距离惩罚第一列中的值。对第一列应用惩罚将产生
原值+罚×距离1 + 2 × 0 = 1 2 + 2 × 1 = 4 5 + 2 × 4 = 13
1 4 4 2 13 5
将列1中的最小值添加到当前的bin值4。更新后的(1,2)值变为5,它来自bin 1。
按如下方法更新列2中其余元素的值。
使用与步骤2a相同的过程,使用惩罚因子重新计算列1的原始值。使用与步骤2b中相同的过程获取剩余的第二列值。例如,当更新bin值为2的(2,2)元素时,对列yield应用惩罚
原值+罚×距离1 + 2 × 1 = 3 2 + 2 × 0 = 2 5 + 2 × 1 = 7
1 5(1)4 2 4(2)2 5 9(2)4
对第三列重复步骤2。但现在惩罚应用于更新后的第二列。例如,当更新(1,3)元素时,惩罚是
5 + 2 × 0 = 5 4 + 2 × 1 = 6 9 + 2 × 4 = 17
1 5(1)9(1)2 4(2)6(2)5个9(2)10(2)
从矩阵的最后一列开始,求最小值。通过这个矩阵从当前的箱子回到之前时间点的箱子的原点。跟踪组成山脊的路径的bin指数。该算法通过使用原始码而不是最小码来平滑过渡。在本例中,山脊指数为2
,2
,2
,与步骤1中矩阵第二行正弦波的能量路径相匹配。
如果要提取多个脊,算法将从时频矩阵中删除第一个脊,并重复此过程。