GPS卫星的扩频码和自相关,互相关(可选择卫星编号(1-10))

GPS L1C/A信号卫星1和卫星2的扩频码生成,并画出两者自相关和互相关图

抽头法原理图

抽头法原理图,其他两种方法的图差异不大,可自行百度

代码和卫星编号

len表示码片长度,不同型号的卫星码片长度不尽相同
number1/number2数组表示不同的卫星编号
以上两参数都可自己填写,根据不同编号
在这里插入图片描述

function ca=CAgenerate(number1,number2)
%CA码的生成
%%%%%%%%%%%%%%%%%抽头法%%%%%%%%%%%%%%%%%%%%%%%%%%
number1=input('请选择第一个信号的编号(1-10的整数):');
number2=input('请选择第二个信号的编号(1-10的整数):');
code_chip=1023; %码片数
G1=ones(1,10);
G2=ones(1,10);%选择卫星1的初始10个码片的始化
G3=ones(1,10);
G4=ones(1,10);%选择卫星2的初始10个码片的始化
G2Table=[2,3,4,5,1,2,1,2,3,2;
         6,7,8,9,9,10,8,9,10,3]; %1-10号卫星亦或上下一一对应的亦或码片的编号
     
for i=1:code_chip
    R1(1)=mod(G2(G2Table(1,number1))+G2(G2Table(2,number1)),2); %选取卫星1 G1的码片
    R2(1)=mod(G4(G2Table(1,number2))+G4(G2Table(2,number2)),2); %选取卫星2 G4的码片
    rd1(i)=mod(R1(1)+G1(10),2);
    rd2(i)=mod(R2(1)+G3(10),2);%扩频码输出
    newBit1=mod(G1(3)+G1(10),2);%G1取码片模2(或亦或)
    newBit2=mod(G3(3)+G3(10),2);%G1取码片模2(或亦或)
    G1=[newBit1 G1(1:9)]; %G1码片右移
    G3=[newBit2 G3(1:9)]; %G3码片右移
    newBit3=[mod(G2(2)+G2(3)+G2(6)+G2(8)+G2(9)+G2(10),2)];%G2取码片模2(或者亦或)
    newBit4=[mod(G4(2)+G4(3)+G4(6)+G4(8)+G4(9)+G4(10),2)];%G2取码片模2(或者亦或)
    G2=[newBit3 G2(1:9)];%G2码片右移
    G4=[newBit4 G4(1:9)];%G4码片右移
end
rd1(rd1==0)=-1;%扩频码只存在正负1rd2(rd2==0)=-1;%扩频码只存在正负1figure(1);
% subplot(211);
plot(1:code_chip,rd1);%绘制扩频码
% subplot(212);
axis([0 1100 -1.25 1.25]);
figure(2);
plot(1:code_chip,rd2);%绘制扩频码
axis([0 1100 -1.25 1.25]);%调整坐标轴
cacode1=[rd1 rd1];%复制延长
cacode2=[rd2 rd2];%复制延长
code_len1=length(cacode1);
code_len2=length(cacode2);

xk1=fft(cacode1,code_len1);%傅里叶变换到频域
xk2=fft(cacode2,code_len2);%傅里叶变换到频域
rm1=real(ifft(conj(xk1).*xk1))/code_len1;%共轭相乘取模,傅里叶逆变换,取实部(求自相关)
rm2=real(ifft(conj(xk2).*xk2))/code_len2;
rm3=real(ifft(conj(xk2).*xk1))/code_len1;%互相关

figure(3);
plot(0:code_len1-1,rm1);
axis([0 code_len1+25 -0.25 1.25])
title('CA的自相关函数,卫星1');
figure(4);
plot(0:code_len2-1,rm2);
axis([0 code_len2+25 -0.25 1.25])
title('CA的自相关函数,卫星2');
figure(5);
plot(0:code_len1-1,rm3);
axis([0 code_len1+25 -0.25 1.25])
title('CA的互相关函数,卫星1/2');

第一次GNSS小作业,前几天的想法不对,matlab自带的相关函数那是线性相关,应该采用循环相关,经过老师点拨和同学的提醒,最后自己琢磨了一下,感觉这次要正确一点,特此分享

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值