我使用以下代码创建我的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
答案 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);
生成一个输出位后的状态会导致预期的状态。