Engee 文档

EngeeComms.ConvolutionalEncoder

二进制数据的收敛编码。

资料库

EngeeComms. Block::卷积编码器

说明

系统对象 EngeeComms.ConvolutionalEncoder 对一串二进制输入向量进行编码,生成一串二进制输出向量。

要对二进制数据进行卷积编码,请执行以下步骤:

  1. 创建对象 EngeeComms.ConvolutionalEncoder 并设置其属性。

  2. 像调用函数一样调用带参数的对象。

要进一步了解如何使用系统对象,请参阅Engee 系统对象

创建

语法

  • object = EngeeComms.ConvolutionalEncoder 创建一个具有 default 属性的卷积编码系统对象。

    示例

    ConvEncoder = EngeeComms.ConvolutionalEncoder()
  • object = EngeeComms.ConvolutionalEncoder(trellis) 通过网格结构 TrellisStructure 创建一个用于卷积编码的系统对象。

    示例

    # кодер с длиной ограничения 7 и полиномами генератора кода 171 и 133 (в восьмеричных числах)
    ConvEncoder = EngeeComms.ConvolutionalEncoder(TrellisStructure="poly2trellis(7, [171 133])"
  • object = EngeeComms.ConvolutionalEncoder(Name=Value) 创建一个用于卷积编码的系统对象,每个指定的属性 Name(名称)设置为指定的 价值观(值)。您可以以任意顺序(Name1=Value1,…​,NameN=ValueN)指定其他参数作为名值对(name-value pair)。

    例如

    # сохраняет состояния кодера в конце каждого входа для использования в следующем кадре
    ConvEncoder = EngeeComms.ConvolutionalEncoder(TerminationMethod="Continuous")

属性

TrellisStructure -. 通过网格结构描述卷积码
poly2trellis(7, [171 133]) (default)` | `格子结构

Details

卷积码的 Trellis 描述,以结构形式给出,包含对速率为 的编码的 Trellis 描述,其中 是输入比特流的数量, 是输出比特流的数量。

要创建 Trellis 结构,可以使用 poly2trellis 函数或手动创建。

网格结构包含以下字段:

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

  • numOutputSymbols` - 从编码器输出的符号数,指定为等于 的整数,其中 - 输出比特流的数量。

  • numStates`-编码器中的状态数,指定为 "2 "度。

  • nextStates - 当前状态和当前输入的所有组合的后续状态,以整数矩阵形式给出。矩阵大小必须为 numStates ,地址为

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

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

Details

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

  • Continuous - 系统对象在每个输入矢量结束时保存编码器状态,以便在下一个输入矢量中使用。

  • Truncated` - 系统对象在每个输入矢量开始时重置。如果将 InitialStateInputPort 属性设置为 0 (false),对象将重置其状态为全部 0。如果将 InitialStateInputPort 属性设置为 "1(true)",则对象会将其状态重置为 initstate 输入参数中指定的值。

DelayedResetAction -。 用于延迟重置输出数据的选项
0(默认) | 1

Details

以这些逻辑值之一指定的输出数据重置延迟选项:

  • 1 (真) - 编码器内部状态的重置发生在对象计算编码数据之后。

  • 0"(假)- 在对象计算编码数据之前重置编码器的内部状态。

依赖关系

要使用此属性,请将 ResetInputPort 属性设置为 1

InitialStateInputPort -。 选项启用初始状态输入
0(默认) | 1

Details

启用初始状态输入的选项,指定为逻辑 1 (真) 或 0 (假)。此属性设置为 1 时,对象允许为每个输入向量设置编码器的初始状态。

依赖关系

要使用此属性,请将 TerminationMethod 属性设置为 Truncated

FinalStateOutputPort -. 选项启用最终状态输出
0(默认) | 1

Details

启用最终状态输出的选项,指定为逻辑 1(真)或 0(假)。将此属性设为 1,可获得编码器的最终状态输出。

依赖关系

要使用此属性,请将 TerminationMethod 属性设置为 ContinuousTruncated

PuncturePatternSource — 穿孔图案源
None (default) | Property

Details

冲孔图案的来源,指定为以下值之一:

  • None - 该对象不执行打孔。

  • 属性"--对象执行代码穿孔。穿孔基于*PuncturePattern*属性中指定的穿孔模式向量。

依赖关系

要使用此属性,请将 TerminationMethod 属性设置为 ContinuousTruncated

PuncturePattern — 穿孔图案向量
[1;1;0;1;1;0;1] (默认)|列向量

Details

以向量形式指定的穿孔模式。穿孔向量是由 10 组成的模式,其中 0 表示穿孔位或从输出编码数据中排除的位。

依赖关系

要使用此属性,请将 TerminationMethod 属性设置为 ContinuousTruncated,并将 *PuncturePatternSource*属性设置为 Property

使用方法

语法

ConvEncoder= EngeeComms.ConvolutionalEncoder()

ConvEncoder= EngeeComms.ConvolutionalEncoder(TrellisStructure="poly2trellis(3,[4 5])")

ConvEncoder= EngeeComms.ConvolutionalEncoder(TrellisStructure="poly2trellis(3,[4 5])" TerminationMethod="Truncated", FinalStateOutputPort=true)
in_data = [1; 0; 1; 0; 0; 1]
out = ConvEncoder(in_data)

说明

  • ConvEncoder=EngeeComms.ConvolutionalEncoder()`创建默认系统对象。

  • ConvEncoder= EngeeComms.ConvolutionalEncode(Name=Value) - 用指定参数创建对象。

输出参数

out - 输出值
[codeword, finalstate]| [codeword]

Details

如果 FinalStateOutputPort 属性设置为 1 (true),则输出参数 out 是一个向量 [codeword,finalstate],其中 codeword 是卷积码,而 finalstate 是编码器的最终状态。如果 FinalStateOutputPort 属性设置为 0(false),则 out 只包含卷积码字 [codeword]

卷积编解码信息会以二进制值列向量的形式返回。该输出向量的数据类型和方向与输入信息相同。

当卷积编码器以 的速率输出编码时,对于某个正整数 ,输入向量的长度为 。对象设置输出向量的长度等于

数据类型: Float64, Int8

finalstate - 编码器最终状态
整数

Details

编码器的最终状态,以整数形式返回。

依赖关系

要使用此参数,请将 TerminationMethod 属性设置为 ContinuousTruncated

数据类型: Float64

方法

所有系统对象通用

step!: 启动系统对象的运行算法 release!: 允许更改系统对象属性的值 reset!: 重置系统对象的内部状态

可选项

关于卷积编码的更多信息

Details

卷积编码是一种具有记忆功能的错误控制编码。特别是,计算和编码输出取决于当前的输入符号集和先前的输入符号数,而先前的输入符号数随网格配置的不同而变化。

卷积编码器对每 个输入比特输出 个比特。在模拟过程中,输入数据可能是 位的倍数。

使用定义了一组发生器多项式的晶格结构,可以对具有直接或系统反馈的非系统、系统卷积编码进行建模。

要解码卷积码的输出,可以使用

  • System Object EngeeComms.APPDecoder - 使用后验概率解码器对卷积码的输出进行软解码。

文学

  1. Clark, George C. 和 J. Bibb Cain.数字通信的纠错编码》。通信理论的应用》。纽约:Plenum 出版社,1981 年。

  2. Gitlin, Richard D., Jeremiah F. Hayes, and Stephen B. Wee.Hayes, and Stephen B. Weinstein.Data Communications Principles.通信理论的应用》。纽约:Plenum 出版社,1992 年。

  3. Yasuda, Y., K.Kashiki, and Y. Hirata.Hirata."High-Rate Punctured Convolutional Codes for Soft Decision Viterbi Decoding." IEEE Transactions of Communications 32, no.IEEE Transactions on Communications 32, no.3 (March 1984):315-19.https://doi.org/10.1109/TCOM.1984.1096047.

  4. 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.

  5. Begin, G., D.Haccoun, and C. Paquin.Paquin."Further Results on High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding." IEEE Transactions on Communications 38, no.IEEE Transactions on Communications 38, no.11 (November 1990):1922-28.https://doi.org/10.1109/26.61470.