AnyMath 文档

工程师。卷积编码器

二进制数据的卷积编码。

库::`工程师` 座:: 卷积编码器

资料描述

EngeeComms.ConvolutionalEncoder 系统对象对二进制输入向量序列进行编码,以产生二进制输出向量序列。

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

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

  2. 用参数调用对象,就好像它是一个函数一样。

若要了解有关如何使用系统对象的详细信息,请参阅 AnyMath系统对象.

创造

语法

  • 对象=EngeeComms。卷积编码器 -使用*default*属性创建用于卷积编码的系统对象。

    例子::

    ConvEncoder = EngeeComms.ConvolutionalEncoder()
  • 对象=EngeeComms。卷积编码器(trellis) -通过网格结构创建卷积编码的系统对象。

    例子::

    # кодер с длиной ограничения 7 и полиномами генератора кода 171 и 133 (в восьмеричных числах)
    ConvEncoder = EngeeComms.ConvolutionalEncoder(TrellisStructure="poly2trellis(7, [171 133])"
  • 对象=EngeeComms。卷积编码器(名称=值) -以对的形式创建具有指定属性的卷积编码的系统对象 名称=值,在哪里 姓名 -物业的名称,以及 价值 -适当的值。 您可以指定多个对 «名称-值» 对的顺序并不重要。 未指定的属性保留其默认值。

    例子::

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

特征

格架结构 — 通过晶格结构的卷积码的描述

+ poly2trellis(7,[171,133])(默认) | 晶格结构

Details

卷积码的网格描述,定义为包含速度为 ,在哪里 是输入比特流的数量,并且 -输出比特流的数量。

要创建晶格结构,可以使用函数 [医]聚二 或者手动创建它。

网格结构包含以下字段:

  • n.数字,数字 -输入到编码器的字符数,设置为等于 ,在哪里 -输入比特流的数量。

  • n.数字,数字 -编码器输出的字符数,设置为等于 ,在哪里 -输出比特流的数量。

  • n.数字,数字 -编码器中的状态数,设置为功率 2.

  • 下一个国家 -当前状态和当前输入的所有组合的后续状态,指定为整数矩阵。 矩阵的大小应该是 n.数字,数字 .

  • 产出 -当前状态和当前输入数据的所有组合的输出数据,指定为八进制数的矩阵。 矩阵的大小应该是 n.数字,数字 .

*终止*是 完成编码帧的方法

+ 连续(默认情况下) | 截断

Details

编码帧的完成方法,设置为这些值之一:

  • 连续不断 -系统对象在每个输入向量的末尾保存编码器状态,以便在下一个输入向量中使用。

  • 截断 -系统对象在每个输入向量的开头重置。 如果将*InitialStateInputPort*属性设置为 0(错误),然后对象将其状态重置为 «全零». 如果将*InitialStateInputPort*属性设置为 1(真),然后对象将其状态重置为输入参数*initstate*中指定的值。

延迟反应 — 延迟输出数据复位选项

+ 0(默认) | 1

Details

输出数据复位延迟选项,设置为这些布尔值之一:

  • 1 (true)-对象计算编码数据后,编码器的内部状态将重置。

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

依赖关系

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

初始输入端口 — 启用初始状态输入的选项

+ 0(默认) | 1

Details

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

依赖关系

若要使用此属性,请将*TerminationMethod*属性设置为 截断.

FinalStateOutputPort — 选项来启用最终状态的输出

+ 0(默认) | 1

Details

启用最终状态的输出的选项,设置为逻辑 1 (真)或 0 (错误)。 设置此属性的值 1 以在输出端获得编码器的最终状态。

依赖关系

若要使用此属性,请将*TerminationMethod*属性设置为 连续不断截断.

标点符号来源 — 穿孔图案的来源

+ 无(默认情况下) | 物业

Details

穿孔图案的来源指定为这些值之一:

  • -对象不执行穿孔。

  • 物业 -对象执行代码打孔。 穿孔基于穿孔模式的向量,该向量在*PuncturePattern*属性中设置。

依赖关系

若要使用此属性,请将*TerminationMethod*属性设置为 连续不断截断.

标点符号 — 射孔图案的向量

+ [1; 1; 0; 1; 0; 1] ( 默认情况下) | 列向量

Details

的穿孔图案,定义为矢量。 射孔矢量是从 10,在哪里 0 表示从输出编码数据中排除的打孔比特或比特。

依赖关系

若要使用此属性,请将*TerminationMethod*属性设置为 连续不断截断,而对于*PuncturePatternSource*属性,值 物业.

使用

语法

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。卷积编码器() -创建默认系统对象。

  • ConvEncoder=EngeeComms。ConvolutionalEncode(名称=值) -创建具有指定参数的对象。

输出参数

— 输出值

+ [码字,最终状态]|[码字]

Details

如果*FinalStateOutputPort*属性设置为 1 (true),那么输出参数*out*是一个向量 [码字,最终状态],在哪里 码字 -卷积代码字,以及 最终状态 -编码器的最终状态。 如果*FinalStateOutputPort*属性设置为 0 (false),则*out*只包含卷积码字 [码字].

作为具有二进制值的列向量返回的卷积码消息。 此输出向量具有与输入消息相同的数据类型和方向。

当卷积编码器呈现码的速率为 ,输入向量的长度为 对于一些正整数 . 对象将输出向量的长度设置为 .

<无转换>*数据类型:* 漂浮64, Int8</无翻译>

最终状态 — 编码器的最终状态

+ 一个整数

Details

编码器的最终状态,作为整数返回。

依赖关系

若要使用此参数,请将*TerminationMethod*属性设置为 连续不断截断.

<无转换>*数据类型:* 漂浮64</无翻译>

方法

所有系统对象通用

步!::运行系统对象运算算法 释放!::允许更改系统对象属性的值 重置!::重置系统对象的内部状态

此外

了解有关卷积编码的更多信息

Details

卷积编码是一种具有内存的错误控制编码。 特别是,计算和编码输出取决于当前输入字符集和先前输入字符的数量,这取决于网格配置而变化。

卷积编码器输出 位为每个 输入位。 在建模过程中,输入数据可以是 位。

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

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

系统对象*EngeeComms。APPDecoder-使用后验概率解码器对卷积码的输出进行软解码。

文学作品

  1. 克拉克,乔治C.和J.Bibb Cain。 数字通信的纠错编码。 通信理论的应用。 繝シ繧ォ繝シ縺ォ縺ェ縺"縺ヲ縺縺セ縺呐

  2. Gitlin,Richard D.,Jeremiah F.Hayes和Stephen B.Weinstein。 数据通信原则。 通信理论的应用。 繝シ繧ォ繝シ縺ォ縺ェ縺"縺ヲ縺縺セ縺呐

  3. Yasuda,Y.,K.Kashiki和Y.Hirata。 "High-Rate Punctured Convolutional Codes for Soft Decision Viterbi Decoding."IEEE Transactions on Communications32,no.3(March1984):315-19. https://doi.org/10.1109/TCOM.1984.1096047…​;

  4. Hacoun,D.和G.开始。 "用于Viterbi和顺序解码的高速率穿刺卷积码。"IEEE Transactions on Communications37,no.11(November1989):1113-25. https://doi.org/10.1109/26.46505…​;

  5. Begin,G.,D.Hacoun和C.Paquin。 "关于Viterbi和顺序解码的高速率穿刺卷积码的进一步结果。"IEEE Transactions on Communications38,no.11(November1990):1922-28. https://doi.org/10.1109/26.61470…​;