📄 cacode.m
字号:
clear;
clc;
%产生MLS和G2输出并核对延迟时间
%输入
%K1,K2:两个延迟抽头的位置
%K3:延迟时间
% k = input('enter[k1 k2 k3]=');
k(1)=1;
k(2)=2;
k(3)=3;
inp1=-ones(1,10);
for j=1:1023
mlsout(j)=inp1(10);
modulo=inp1(2)*inp1(3)*inp1(6)*inp1(8)*inp1(9)*inp1(10);
inp1(2:10)=inp1(1:9);
inp1(1)=modulo;
g2(j)=inp1(k(1))*inp1(k(2));
end
if mlsout==g2([k(3):1023 1:k(3)-1])
disp('OK');
else
disp('not match');
end
%产生由D.Akos发明J.Tsui改进的32个C/A码中的一个
svnum=input('enter the satellite number c');
%ca:含有想要的输出序列的一个向量
%g2s向量进行适当的相移后产生g2码
%the C/A码(ex. for SV#19 - use a G2 shift of g2s(19)c471)
g2s=[5;6;7;8;17;18;139;140;141;251;252;254;255;256;257;258;469;470;471;...
472;473;474;509;512;513;514;515;516;859;860;861;862];
g2shiftg2s(svnum,1);
%Generate G1code
%装载移位寄存器
reg=-1*one(1,10);
for i=1:1023,
g1(i)=reg(10);
slave1=reg(3)*reg(10);
reg(1,2:10)=reg(1,1:9);
reg(1)=save1;
end,
%产生G2码
%装载移位寄存器
reg=-1*one(1,10);
for i=1:1023,
g2(i)=reg(10);
save2=reg(2)*reg(3)*reg(6)*reg(8)*reg(9)*reg(10);
reg(1,2:10)=reg(1,1:9);
reg(1)=save2;
end,
%相移G2码
g2tmp(1,1:g2shift)=g2(1,1023-g2shift+1:1023);
g2tmp(1,g2shift+1:1023)=g2(1,1:1023-g2shift);
g2=g2tmp;
%G1和G2相乘形成单个C/A码采样
ss_ca=g1*g2;
ca=ss_ca;
%变换到1、0输出
ind1=find(ca==-1);
ind2=find(ca==1);
ca(ind1)=ones(1,length(ind1));
ca(ind2)=zeros(1,length(ind2));
ca(1:10)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -