(经过深思熟虑,我猜想回答我自己的问题。如果我错了,请告诉我。)
第一步是查看每个脉冲在决策点的贡献。滤波器被归一化,因此单个脉冲的结果为 1。在这种特殊情况下,相邻脉冲的尾部计算为 1/6。
然后,我们可以查看三个脉冲的任何可能组合,将它们的贡献加在一起。如果我们说三个脉冲是xn−1, xn, xn+1,然后输出yn在决策点是:
yn=1/6xn−1+xn+1/6xn+1
举一些例子:
- 111:1/6 + 1 + 1/6 = 1.33
- 010:-1/6 + 1 + -1/6 = 0.67
- 110:1/6 + 1 + -1/6 = 1
假设状态 01 表示前一位是 0,而前一位是 1。然后我们可以问,“如果我们添加另一个位,输出会变成什么?” 例如,如果下一位为零,则产生 001,根据上述公式,输出为 -1。
然后我们可以建立一个状态表:
╔═══════╦═══════╦════════╗
║ input ║ state ║ output ║
╠═══════╬═══════╬════════╣
║ 0 ║ 00 ║ -1.33 ║
║ 1 ║ 00 ║ -1 ║
║ 0 ║ 01 ║ -1 ║
║ 1 ║ 01 ║ -0.67 ║
║ 0 ║ 10 ║ 0.67 ║
║ 1 ║ 10 ║ 1 ║
║ 0 ║ 11 ║ 1 ║
║ 1 ║ 11 ║ 1.33 ║
╚═══════╩═══════╩════════╝
以及相关的格子图:
符号“0/-1.33”的意思是“从这个状态发送一个0,输出是-1.33”。
观测值与预期值之间的差值的大小或平方均可用作度量。维特比算法将找到通过具有最低度量的格子的路径,无论使用什么度量,只要它是随着观察和预期之间的距离单调增加的东西。
然后可以按照通常的方式遵循维特比算法来确定解释接收信号的最可能序列,了解相邻脉冲将如何影响接收值。
我发现这些视频对理解 Viterbi 算法的评估特别有帮助: