使用commsrc.pn生成伪代码

时间:2012-08-20 06:44:31

标签: matlab sequence pseudocode

我使用以下代码创建我的PN生成器:

h=commsrc.pn('GenPoly',gfprimdf(3), 'InitialStates',[1 0 0], ...
             'CurrentStates', [1 0 0], 'Mask',[0 0 1], 'NumBitsOut',1)

这是我的PN发生器的GF多项式:

>> gfpretty(h.GenPoly)
                                         3
                                1 + X + X 

h的当前状态是:

>> h.CurrentStates
   ans =
             1     0     0

看着GF多项式,我认为下一个h的雕像应该是[0 1 0]。但是Matlab将h的下一个状态转换为[1 1 0]而不是期望值[0 1 0]。

>> generate(h);
>> h.CurrentStates
 ans =
            1     1     0

1 个答案:

答案 0 :(得分:0)

gfprimdf(...)按1+a1*x+a2*x^2+a3*x^3+...+x^N的顺序生成生成多项式,并将其表示为向量

[1 a_1 a_2 ... a_N-1 1]

(多项式幂的升序)。但是,commsrc.pn期望此向量按降序排列。

因此,在您的示例中,commsrc.pn实际使用的生成多项式是1 + x ^ 2 + x ^ 3,而不是预期的1 + x + x ^ 3。如果您改为使用

h=commsrc.pn('GenPoly',[1 0 1 1],'InitialStates',[1 0 0],'CurrentStates',[1 0 0],'Mask',[0 0 1],'NumBitsOut',1);

生成一个输出位后的状态会导致预期的状态。