📄 findsf1.m
字号:
%查找子桢
function start_sf1=findsf1(navd)
[nsat,n]=size(navd);
marker=[1 -1 -1 -1 1 -1 1 1];
start_sf1=zeros(1,nsat);
for m=1: nsat,
c=xorr(maker,navd(m,1:360)); %查找和前导序列相匹配的数据位序列
indn=find(abs(c)>7.99);
pts=indn-360+1;
flag=1;
n=1;
while flag & n <=length(pts),
pt=pts(n);
k=1;
err=0;
while k<3 & ~err, %检查下两个子桢前导序列
sfmark=navd(m,pt+(k*300):pt+(k*300)+7);
if abs(sum(sfmark .*marker))<8,
err=1;
end
k=k+1;
end
end_HOW=sum(navd(m,pt+58:pt+59)); %检查HOW末尾的奇偶位
if ~end_HOW|err, %如果出错就跳到下一个点
n=n+1;
else
id=navd(m,pt+49 : pt+51); %寻找子桢
if end_HOW==2, %判断HOW字的极性
id=-id;
end
sf(m)=0;
id=fliplr(id);
for k=1: length(id),
if id(k)==1,
sf=sf+2.^(k-1);
end
end
if sf(m)<6 & sf(m)>0, %使子桢在1~5之间
flag=0;
else
n=n+1;
end
end
end
if ~flag, %查找子桢1的起始位置
if sf(m)==1,
start_sf1(m)=pt;
else
start_sf1(m)=pt+((6-sf(m))*300);
id=navd(m,start_sf1(m)+49: start_sf1(m)+51);
if id ~=[-1 -1 1]&id ~=[1 1 -1],
disp(['Error in finding sat' num2str(m) '-sf1 id did not match.'])
start_sf1(m)=0;
end
end
else
disp(['Error in finding sat' num2str(m)])
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -