0

我使用以下代码创建了我的 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
4

1 回答 1

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);

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

于 2012-08-20T10:55:45.580 回答