概述
目录
1 测距码特性
2 matlab程序生成
1 测距码特性
测距码就是伪随机噪声( pseudo random noise,PRN)码,也称作伪码,常作为扩频系统的扩频码,工程上常用一系列0或1组成的二进制序列码,按照一定的编码规则来产生伪噪声码。伪码具有确定性、周期性以及良好的自相关性,大体被分为三类:m序列、组合码和非线性码,北斗伪卫星信号的Ⅰ支路测距码是一种由m序列构成的组合码。
北斗伪卫星系统中,Ⅰ支路使用的测距码是Gold 码,由两个11级的m序列G1、G2,通过模二和,并截短一个码片后产生。北斗伪卫星系统中Gold码的速率为2.046Mcps,长度为2046,伪码周期为1ms,即1个伪码周期包含2046个码片。两个移位寄存器的G1,G2的生成多项式为:
G1 和 G2 的初始相位为:
G1 序列初始相位:01010101010;
G2 序列初始相位:01010101010。
码发生器如图下:
通过对产生 G2 序列的移位寄存器不同抽头的模二加可以实现G2 序列相位的不同偏移,与 G1 序列模二加后可生成不同卫星的测距码。G2 序列相位分配如表:
2 matlab程序生成
function codes = GoldGenerator(No,num)
codeLen = 2046; % ???????
% ?????????????, ???0??
polynomial1 = [1 0 0 0 0 0 1 1 1 1 1]; % [1 7 8 9 10 11] ???е?????????????????????????????
polynomial2 = [1 1 1 1 1 0 0 1 1 0 1]; % [1 2 3 4 5 8 9 11]
% ????????????????
%rand('twister', sum(100*clock));
%randn('state', sum(100*clock));
% ????????????λ?????
sd1 = [0 1 0 1 0 1 0 1 0 1 0]; % ???????λ?????1
sd2 = [0 1 0 1 0 1 0 1 0 1 0]; % ???????λ?????2
% ????α??1
pn1 = zeros(1, codeLen);
for i=1:codeLen
pn1(i) = sd1(11);
% ???????GOLD?
newGold = mod((sum(polynomial1 & sd1)), 2); %???1????????????????????????1
% ??λ
sd1(2:11) = sd1(1:10);
sd1(1) = newGold;
end
% ????α??2
if No==30
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(6),sd2(10));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==1
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(1),sd2(3));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==2
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(1),sd2(4));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==3
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(1),sd2(5));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==4
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(1),sd2(6));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==5
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(1),sd2(8));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==6
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(1),sd2(9));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==7
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(1),sd2(10));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==8
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(1),sd2(11));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==9
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(2),sd2(7));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==10
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(3),sd2(4));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==11
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(5),sd2(3));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
elseif No==12
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = xor(sd2(6),sd2(3));
% ???????GOLD?
newGold = mod((sum(polynomial2 & sd2)), 2);
% ??λ
sd2(2:11) = sd2(1:10);
sd2(1) = newGold;
end
else
% error('The wrong satellite number!')
pn2 = zeros(1, codeLen);
end
% ???GOLD??
codes1 = xor(pn1,pn2);
nf = ceil(num/codeLen);
for frame=1:nf
codes((1:codeLen)+((frame-1)*codeLen))=codes1(1:codeLen);
end
codes=double(codes(1:num));
% for i=1:num
% if codes(i)==1
% codes(i)=-1;
% else
% codes(i)=1;
% end
% end
最后
以上就是酷炫芒果为你收集整理的北斗B1I测距码特性及程序生成的全部内容,希望文章能够帮你解决北斗B1I测距码特性及程序生成所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复