GPS L5 信号卫星的扩频码,自相关,互相关
原理图
code片段
PPR为卫星编号 I5为Xb_I的起始number,Q5为Xb-Q的起始number,后面两列为初始化值,循环到头后,需要再初始化,最后得到10230个码片,也就是说,一个10230码片需要两次初始化.
这个请结合上图一起理解
这次里边涉及到QPSK调制[添加链接描述] 请跳转到此地址,我觉得讲的蛮好(https://wenku.baidu.com/view/f87fd4bf5ef7ba0d4b733b39.html)
function xk1=L5CAgenerate(number1,number2,i11)
%L5%码的生成
number3=ones(1,13);
number4=ones(1,13);
number1_1=number1;%暂时寄存,后面调用
number2_1=number2;
number3_1=number3;
number3_2=number3;
for i=266:8191
newbit1=mod(number1(1)+number1(3)+number1(4)+number1(6)+number1(7)+number1(8)+number1(12)+number1(13),2); %选取XA_I的码片
newbit3=mod(number3(9)+number3(10)+number3(11)+number3(12)+number3(13),2);%选取XA
rd1(i-265)=mod(number1(13)+number3(13),2);
number1=[newbit1 number1(1:12)]; %码片右移
number3=[newbit3 number3(1:12)];
end
for i1=8192:10495
newbit1=mod(number1_1(1)+number1_1(3)+number1_1(4)+number1_1(6)+number1_1(7)+number1_1(8)+number1_1(12)+number1_1(13),2); %XA_I
newbit3=mod(number3_1(9)+number3_1(10)+number3_1(11)+(12)+number3_1(13),2);%XA
rd1(i1-265)=mod(number1_1(13)+number3_1(13),2);%扩频码输出
% newBit1=mod(G1(3)+G1(10),2);%G1取码片模2(或亦或)
% newBit2=mod(G3(3)+G3(10),2);%G1取码片模2(或亦或)
number1_1=[newbit1 number1_1(1:12)]; %G1码片右移
number3_1=[newbit3 number3_1(1:12)];
end
clear newbit1 newbit2 newbit3;
for ii5= 1701:8191
newbit2=mod(number2(1)+number2(3)+number2(4)+number2(6)+number2(7)+number2(8)+number2(12)+number2(13),2); %XA_Q
newbit3=mod(number4(9)+number4(10)+number4(11)+number4(12)+number4(13),2);%选取XA
rd2(ii5-1700)=mod(number2(13)+number4(13),2);%扩频码输出
number2=[newbit2 number2(1:12)]; %码片右移
number4=[newbit3 number4(1:12)]; %码片右移
end
clear newbit1 newbit2 newbit3;
% length(rd1)
for ii6= 8192:11930
newbit2=mod(number2_1(1)+number2_1(3)+number2_1(4)+number2_1(6)+number2_1(7)+number2_1(8)+number2_1(12)+number2_1(13),2); %XA_Q
newbit3=mod(number3_2(9)+number3_2(10)+number3_2(11)+(12)+number3_2(13),2);%XA
rd2(ii6-1700)=mod(number2_1(13)+number3_2(13),2);
number2_1=[newbit2 number2_1(1:12)]; %G3码片右移
number3_2=[newbit3 number3_2(1:12)]; %G3码片右移
end
length(rd2)
rd1(rd1==0)=-1;%改变0值,后边使用
rd2(rd2==0)=-1;
%%%%%%%%%%%%QPSK%%%%%%%%%%%%%%%%%%%%
for i2=1:10230
if ([rd1(i2) rd2(i2)]==[1 1])
n=1;
else if ([rd1(i2) rd2(i2)]==[-1 1])
n=2;
else if ([rd1(i2) rd2(i2)]==[-1 -1])
n=3;
else
n=4;
end
end
end
switch n
case 1
rd3(i2)=(1/sqrt(2))*(rd1(i2)*cos((pi/4))-rd2(i2)*sin(pi/4));
case 2
rd3(i2)=(-1/sqrt(2))*(rd1(i2)*cos(pi*3/4)+rd2(i2)*sin(pi*3/4));
case 3
rd3(i2)=(1/sqrt(2))*(-rd1(i2)*cos(pi*5/4)+rd2(i2)*sin(pi*5/4));
case 4
rd3(i2)=(1/sqrt(2))*(rd1(i2)*cos(pi*7/4)+rd2(i2)*sin(pi*7/4));
end
end
%扩频码只存在正负1;
% rd3(rd3==0)=-1;
figure(i11);
code_chip=length(rd3);
plot(1:code_chip,rd3);%绘制扩频码
axis([0 code_chip+10 -1.25 1.25]);
cacode1=[rd3 rd3];%复制延长
code_len1=length(cacode1);
xk1=fft(cacode1,code_len1);%傅里叶变换到频域
rm1=2*real(ifft(conj(xk1).*xk1))/code_len1;%共轭相乘取模,傅里叶逆变换,取实部(求自相关)
figure(i11+1);
plot(0:code_len1-1,rm1);
axis([0 code_len1+25 -0.25 1.25])
title('L5信号的自相关函数');
主函数,信号初始化可调.
clc
clear
close all
star1=L5CAgenerate([0 1 0 1 0 1 1 1 0 0 1 0 0],[1 0 0 1 0 1 1 0 0 1 1 0 0],1);
star2=L5CAgenerate([1 1 0 0 0 0 0 1 1 0 1 0 1],[0 1 0 0 0 1 1 1 1 0 1 1 0],3);
rm3=real(ifft(conj(star1).*star2))/length(star1);%互相关
figure(5);
code_len1=length(star1);
plot(0:code_len1-1,rm3);
axis([0 code_len1+25 -0.25 1.25])
title('L5信号的互相关函数,卫星1/2');
此次为 GPS L5 信号的自相关和互相关以及扩频码(本来打算做个咸鱼,只搞一个问题的,但是我的卷王同学们都搞了,着实有点不好意思,所以再写一个)