Engee 文档

维特比解码器

使用维特比算法解码卷积编码数据

类型: ViterbiDecoder

图书馆中的路径:

/Communication Systems/Error Detection And Correction/Convolution/Viterbi Decoder

说明

维特比解码器 模块采用维特比算法对卷积编码得到的输入符号进行解码,以产生二进制输出符号。网格结构定义了卷积编码方案。

端口

输入

端口_1 - 卷积编码接收的输入字
矢量列

通过卷积编码接收的输入字,以列向量形式指定。如果解码器接受 输入比特流(即可以接受 可能的输入符号),那么对于某个正整数 ,输入块矢量的长度等于

更多信息,请参阅输入和输出数据大小输入数据和解码类型,以及运行模式 参数的说明。

数据类型: Float32, Float64, Int8, Int16, Int32, UInt8, UInt16, UInt32, Bool

输出

端口_1 - 输出信息
二进制矢量列

以二进制向量列形式返回的输出信息。如果解码器输出 输出比特流(即可以输出 可能的输出符号),则对于某个正整数 ,块输出向量的长度等于

更多信息,请参阅输入和输出尺寸

数据类型: Float32, Float64, Int8, Int16, Int32, UInt8, UInt16, UInt32, Bool

参数

编码数据参数

Trellis 结构 - 通过编码网格描述卷积码
poly2trellis(7, [171 133]) (默认值)

卷积码的网格描述,以速率为 的编码的网格结构给出,其中 是输入比特流的数量, 是输出比特流的数量。

要创建网格结构,可以使用 poly2trellis 函数或手动设置。

网格结构包含以下字段:

  • numInputSymbols` - 编码器输入的符号数,设置为等于 的整数,其中 K 是输入比特流的数量。

  • numOutputSymbols` - 到达编码器输出端的符号数,设置为等于 的整数,其中 K 是输出比特流的数量。

  • numStates` - 编码设备的状态数,指定为 2 级。

  • nextStates - 当前状态和当前输入的所有组合的下一个状态,以整数矩阵形式给出。矩阵的大小必须与 numStates 相同,

  • outputs - 当前状态和当前输入的所有组合的输出,以八进制数矩阵形式给出。矩阵大小应为`numStates`,网址为

分支度量计算参数

决定类型 - 解码器决定类型
硬解码(默认) | `未量化的

解码器的判定类型,可供选择的选项:

  • 硬判定"- 解码器使用海明距离计算分支度量。输入必须是代表 0 或 1 的硬判定值向量。 输入的数据类型必须是双精度、单精度、逻辑或数值型。

  • 未量化"- 解码器使用欧氏距离计算分支度量。输入数据必须是未量化的双精度或单精度实数值向量。该对象将正值转换为逻辑 1,将负值转换为逻辑 0。

回溯解码参数

回溯深度 - 回溯深度
34(默认) |`正整数

回溯深度指定为整数,表示用于构建每个回溯路径的网格分支数。

跟踪深度会影响解码延迟。解码延迟是指输出中第一个解码字符之前的零字符数。

在连续模式操作中,解码延迟等于跟踪深度字符数。

一般估计,典型的跟踪深度值约为 的两到三倍,其中

  • - 是代码中约束的长度;

  • ;

  • - 是输入符号的数量;

  • - 输出符号数;

  • - 穿刺模式向量。

例如,如果我们应用这一一般估计,就能得到这些近似的轨迹深度:

  • 速率为 1/2 的编码的跟踪深度为

  • 速度为 2/3 的代码的跟踪深度为

  • 速度为 3/4 的代码的跟踪深度为

  • 速度为 5/6 的代码的跟踪深度为

更多信息请参见7

操作模式 - 终止编码帧的方法
连续(默认) | `截断

编码帧终止方法指定为这些模式值之一:

  • Continuous - 数据块在每次输入结束时保留其内部状态度量,以供下一帧使用。每条跟踪路径都是独立处理的。该模式会导致 的卷积码解码延迟为 Traceback depth 零比特,其中 为信息字符数, 为编码字符数。

  • 截断"--程序块独立处理每个输入。跟踪路径从具有最佳度量的状态开始,并始终以 "全零 "状态结束。如果相应块卷积编码器 的*操作模式*参数设置了 "截断(每帧重置)",则适合使用此模式。该模式下没有输出延迟。

如果程序块输出序列的长度在仿真期间发生变化,且设置了 "截断 "操作模式,则解码器状态将在每个输入时间步重置。

如果输入信号只包含一个字符,请使用 "连续 "模式。

更多信息

输入和输出数据的大小

如果卷积码使用的字母表有 个可能的符号,那么对于某个正整数 ,输入向量的长度必须是 。同样,如果解码数据使用的是 可能的输出符号字母表,那么输出向量的长度将是

该程序块接受输入信号作为列向量, 。对于大小可变的输入信号, 可在仿真过程中更改。程序块的运行由运行模式参数控制。

下表总结了输入和输出端口支持的数据类型。

端口 支持的数据类型

输入

  • 双精度浮点数。

  • 单精度浮点数。

  • 布尔值,用于 "硬判定 "模式。

  • 8、16 和 32 位带符号整数,用于 "硬判定 "模式。

  • 用于 "硬判定 "模式的 8、16 和 32 位无符号整数。

输出

  • 双精度浮点数。

  • 单精度浮点数。

  • 布尔值

  • 带符号的 8 位、16 位和 32 位整数。

  • 8 位、16 位和 32 位无符号整数。

输入数据和解决方案类型

输入向量项为双极性实数、二进制或整数数据,具体取决于*判定类型*参数的值。

决定类型 可能的解码器输入条目 值的解释 分支度量的计算

未量化

实数。

超出 范围的输入值将分别截断为

正实数:逻辑零。

负实数:逻辑 1。

欧氏距离

硬判定

0, 1

0:逻辑零。

1:逻辑 1。

半径

文学

  1. Clark, George C. 和 J. Bibb Cain.Error-Correction Coding for Digital Communications。通信理论的应用》。纽约:Plenum 出版社,1981 年。

  2. Gitlin, Richard D., Jeremiah F. Hayes, and Stephen B. Wee.Gitlin, Richard D., Jeremiah F. Hayes, and Stephen B. Weinstein.Data _Communications Principles.New York: Plenum Press, 1992.

  3. Heller, J., and I. Jacobs.Jacobs."卫星和空间通信的维特比解码》。IEEE Transactions on Communication Technology 19, no.5 (October 1971):835-48.https://doi.org/10.1109/TCOM.1971.1090711.

  4. Yasuda, Y., K.Kashiki, and Y. Hirata.Hirata."用于软决策维特比解码的高速率打点卷积码"。IEEE Transactions on Communications 32, no.3 (March 1984):315-19.https://doi.org/10.1109/TCOM.1984.1096047.

  5. Haccoun, D., and G. Begin."High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding." IEEE Transactions of Communications 37, no.IEEE Transactions on Communications 37, no.11 (November 1989):1113-25.https://doi.org/10.1109/26.46505.

  6. Begin, G., D.Haccoun, and C.Paquin."用于维特比和序列解码的高速率打点卷积码的进一步研究成果"。IEEE Transactions on Communications 38, no.11 (November 1990):1922-28.https://doi.org/10.1109/26.61470.

  1. Moision, B."A Truncation Depth Rule of Thumb for Convolutional Codes." In Information Theory and Applications Workshop (January 27 2008-February 1 2008, San Diego, California, 555-557.In Information Theory and Applications Workshop (January 27 2008-February 1 2008, San Diego, California), 555-557.纽约:IEEE,2008 年。