trellis=poly2trellis([5,4],[23,35,0;0,5,13])
trellis =
numInputSymbols: 4
numOutputSymbols: 8
numStates:
128
nextStates: [128x4
double]
outputs: [128x4 double]
numInputSymbols: 4 输入符号数是4。
是一个标量,表示两路输入共有4(2^k k为输入的路数)种状态分别为00,01,10,11
numOutputSymbols: 8 输出符号数是8.
同样是一个标量,表示输出共有8(2^n n为输出的路数)种状态分别为000,001,010,011,100,101,110,111
numStates: 128 状态数是128(2^7,7是寄存器的总个数) 状态是7为二进制数,不多说了。
下面是重点:
nextStates: [128x4 double] 下一个状态
nextState是numStates-by-2k的矩阵。他表示所有当前状态和当前输入组合所产生的下一状态。相当于马尔科夫链的状态转移表。
行表示各种不同的当前状态,依次表示从全0状态到全1状态。
列表示各种不同的输入,依次表示从全0到全1的输入。
outputs: [128x4 double]
输出
outputs也是numStates-by-2k的矩阵。他表示所有当前状态和当前输入组合所产生的输出(8进制表示)。
行和列的意义的nextState相同。
这样二者的结合的矩阵表示出了所有的状态和输入的组合,计算时只需知道这两个状态即可以快速的查这两个表得到下一个状态和输出。
trellis.nextStates(1:5,:)
ans =
0 64 8 72
0 64 8 72
1 65 9 73
2 66 10 74
上面我们列出了nextStates的1-5行,
(1,1)个元素表示在全0状态时,输入全0时的下一个状态还是全0,即所有的寄存器的结果还都是0.
64表示所有寄存器的状态分别是1,000,000(十进制的64)。
其他依次类推可以得到。
就说这么多了详细的介绍用doc poly2trellis命令自己查看吧,全英文。其上全是个人理解,如有错误欢迎大家指正