我正在尝试在 Matlab 中为数百名用户建模 CDMA,以将其与其他多路访问方案进行比较。每次脚本运行时,首先使用以下行创建一个数据框:
User = sign(randn([NumberOfUsers,BitsPerFrame]));
然后我使用 comm.GoldSequence 对象为传播生成必要的 Gold 代码。代码取自手册中的示例,唯一的变化是第一多项式和第二多项式不同:
for i=1:NumberOfUsers
code=[];
k=de2bi(i,9);
hgld = comm.GoldSequence('FirstPolynomial',[9 4 0],...
'SecondPolynomial', [9 6 4 3 0],...
'FirstInitialConditions', [k],...
'SecondInitialConditions', padarray(1,4)',...
'Index', 4, 'SamplesPerFrame', CodeLength);
code = step(hgld)';
for t= 1:length(code)
if code(t)==0
code(t)=-1;
end
end
code_matrix(i,:)=code;
end
当用户数为几十时,系统按预期工作。然而,当用户达到数百个时,BER 率几乎是 50%,这一定是错误的。不过,我真的不明白为什么,因为据我所知,Gold 代码是正确生成的。任何帮助将不胜感激。