文档

poly2trellis

将卷积码多项式转换为网格描述

语法

trellis = poly2trellis(ConstraintLength,CodeGenerator)
trellis = poly2trellis(ConstraintLength,CodeGenerator,…
FeedbackConnection)

描述

poly2trellis函数接受卷积编码器的多项式描述,并返回相应的网格结构描述。的输出poly2trellis是否适合作为convenc而且vitdec函数,并作为通信系统工具箱™软件中的卷积编码器,维特比解码器和APP解码器块的掩码参数。

trellis = poly2trellis(ConstraintLength,CodeGenerator)执行速率的转换k/n前馈编码器。ConstraintLength是1 × -吗k向量,它指定编码器的延迟k输入比特流。CodeGenerator是一个k——- - - - - -n八进制矩阵或ak——- - - - - -n单元格阵列多项式特征向量它指定了n每个编码器的输出连接k输入比特流。

trellis = poly2trellis(ConstraintLength,CodeGenerator,…
FeedbackConnection)
与上面的语法相同,除了它适用于反馈编码器,而不是前馈编码器。FeedbackConnection是1 × -吗k八进制数向量,用于指定编码器的反馈连接k输入比特流。

对于这两种语法,输出都是MATLAB®结构,其字段如下表所示。

速率k/n代码的输出结构网格的字段

栅格结构中的场 意义
numInputSymbols 标量 编码器的输入符号数:2k
numOutputSymbols 标量 编码器输出的符号数:2n
numStates 标量 编码器中的状态数
nextStates numStates2k矩阵 当前状态和当前输入的所有组合的下一个状态
输出 numStates2k矩阵 当前状态和当前输入的所有组合的输出(八进制)

有关此结构的更多信息,请参阅istrellis函数。

例子

全部折叠

为一个速率为2/3的前馈卷积代码创建一个网格结构,并显示网格下一个状态的一部分。

描述了编码器的结构。正如预期的速率2/3编码器,有两个输入流和三个输出流。

创建一个网格,其中上路径的约束长度为5,下路径的约束长度为4。代码生成器矩阵的八进制表示对应于上移位寄存器和下移位寄存器的敲击。

格子= poly2trellis([5 4],[23 35 0;0 5 13])
格子=带字段的结构:numInputSymbols: 4 numOutputSymbols: 8 numStates: 128 nextStates: [128x4 double] outputs: [128x4 double]

结构场numInputSymbols等于4,因为两个比特流可以产生四个不同的输入符号numOutputSymbols等于8,因为三个比特流产生八个不同的输出符号。由于总共有七个移位寄存器,所以有可能的状态为trellis.nextStates

显示128 × 4的前五行trellis.nextStates矩阵。

: trellis.nextStates (1:5)
ans =5×40 64 8 72 0 64 8 72 1 65 9 73 1 65 9 73 2 66 10 74

在。中可以找到使用此编码器的示例convenc

为速率为1/2的前馈卷积码创建一个网格结构,并使用它来编码和解码随机比特流。

创建一个网格,其中约束长度为7,代码生成器指定为多项式字符向量的单元格数组。

格子= poly2trellis(7,{1 + x^3 + x^4 + x^5 + x^6'...1 + x + x^3 + x^4 + x^6'})
格子=带字段的结构:numInputSymbols: 2 numOutputSymbols: 4 numStates: 64 nextStates: [64x2 double] outputs: [64x2 double]

生成随机二进制数据,对数据进行卷积编码,并使用Viterbi算法解码数据。

数据= randi([0 1],70,1);codedData = convc(数据,格子);decodedData = vitdec(codedData,格子,34,“trunc”“硬”);

验证已解码的数据中没有误码。

decodedData biterr(数据)
Ans = 0

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

另请参阅

||

主题

R2006a之前介绍

这个话题有用吗?