如何用Matlab的poly2trellis正确定义指定递归系统卷积码(RSC)?
正确定义递归系统卷积码(RSC)的poly2trellis用法
你的核心问题是生成多项式的顺序与RSC生成矩阵的输出位对应关系不匹配,同时需要明确poly2trellis针对递归系统卷积码的参数规则:
错误原因分析
你给出的生成矩阵是:G(D) = [1 n0(D)/d(D) n1(D)/d(D)]
其中:
n0(D) = 1 + D + D³→ 八进制13n1(D) = 1 + D + D² + D³→ 八进制17d(D) = 1 + D² + D³→ 八进制15
但你写的poly2trellis(4, [15 17 13], 15)中,生成多项式数组的顺序是[系统位多项式, n1(D), n0(D)],和生成矩阵中[1, n0(D)/d(D), n1(D)/d(D)]的输出位顺序不匹配,导致校验位对应错误。
正确写法
调整生成多项式的顺序,让校验位的多项式和生成矩阵对应:
trellis = poly2trellis(4, [15 13 17], 15);
poly2trellis递归系统码的核心用法规则
- 参数含义:
- 第一个参数
4:约束长度,等于寄存器个数+1(你的RSC有3个移位寄存器,所以约束长度为4)。 - 第二个参数
[15 13 17]:每个输出位的前馈生成多项式(八进制):- 第一个元素
15:系统位的前馈多项式,必须等于反馈多项式15,这样系统位的生成式为15(D)/15(D)=1,符合系统码要求。 - 后续元素
13、17:对应生成矩阵中n0(D)/d(D)、n1(D)/d(D)的校验位前馈多项式。
- 第一个元素
- 第三个参数
15:递归反馈的连接多项式(八进制),对应d(D)。
- 第一个参数
- 八进制多项式转换注意事项:
二进制多项式的最高次项对应八进制的最高位,例如d(D)=1+D²+D³的二进制是1101(从D³到D⁰),转换为八进制即15(1*8 +5),你的转换是正确的。 - 验证方法:
可以用istrellis(trellis)验证格型结构合法性,也可以用convenc生成编码序列,对比手动计算的RSC编码结果来确认正确性。
内容的提问来源于stack exchange,提问作者Jhonathan Nicolas
相关产品推荐
相关产品推荐

