北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx

上传人:b****4 文档编号:4198552 上传时间:2023-05-06 格式:DOCX 页数:11 大小:199.95KB
下载 相关 举报
北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx_第1页
第1页 / 共11页
北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx_第2页
第2页 / 共11页
北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx_第3页
第3页 / 共11页
北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx_第4页
第4页 / 共11页
北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx_第5页
第5页 / 共11页
北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx_第6页
第6页 / 共11页
北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx_第7页
第7页 / 共11页
北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx_第8页
第8页 / 共11页
北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx_第9页
第9页 / 共11页
北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx_第10页
第10页 / 共11页
北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx

《北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx》由会员分享,可在线阅读,更多相关《北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx(11页珍藏版)》请在冰点文库上搜索。

北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序.docx

北斗卫星导航信号串行捕获算法MATLAB仿真报告附MATLAB程序

北斗卫星导航信号串行捕获算法MATLAB仿真报告

 

一、原理

卫星导航信号的串行捕获算法如图1所示。

图1卫星导航信号的串行捕获算法

接收机始终在本地不停地产生对应某特定卫星的本地伪码,并且接收机知道产生的伪码的相位,这个伪码按一定速率抽样后与接收的GPS中频信号相乘,然后再与同样知晓频率的本地产生的载波相乘。

GPS中频信号由接收机的射频前端将接收到的高频信号下边频得到。

实际产生对应相位相互正交的两个本地载波,分别称为同相载波和正交载波,信号与本地载波相乘后的信号分别成为,产生同相I支路信号和正交的Q支路信号。

两支路信号分别经过一个码周期时间的积分后,平方相加。

分成两路是因为C/A码调制和P码支路正交的支路上,假设是I支路。

当然由于信号传输过程中引入了相位差,解调时的I支路不一定是调制时的I支路,Q支路也一样,二者不一定一一对应,因此为了确定是否检测到接收信号,需要同时对两支路信号进行研究。

相关后的积分是为了获取所有相关数据长度的值的相加结果,平方则是为了获得信号的功率。

最后将两个支路的功率相加,只有当本地伪码和本地载波的频率相位都与中频信号相同时,最后得到的功率才很大,否则结果近似为零。

根据这个结论考虑到噪声的干扰,在实际设计时应该设定一个判定门限,当两路信号功率和大于设定的门限时则判定为捕获成功,转入跟踪过程,否则继续扫描其它的频率或相位。

二、MATLAB仿真过程及结果

仿真条件设置:

抽样频率16MHz,中频5MHz,采样时间1ms,频率搜索步进1khz,相位搜索步进1chip,信号功率-200dBW,载噪比55dB

(1)中频信号产生

卫星导航信号采用数字nco的方式产生,如图2所示。

载波nco控制字为:

carrier_nco_word=round(f_carrier*2^N/fs);

伪码nco控制字为:

code_nco_word=round(f_code*2^N/fs);

图2

其中载波rom存储的是正弦信号的2^12个采样点,伪码rom存储长度为2046的卫星伪码。

这样伪码采用2psk的方式调制到射频,加性噪声很小是理想接收中频信号如图3所示。

图3理想中频信号

(2)噪声功率估计

实际接收机接收到的导航信号淹没在噪声中,本程序对接收到的信号进行了噪声估计并进行了放大。

采用滑动平均估计法估计噪声功率,滑动平均估计法原理如图4所示。

 

图4噪声功率滑动平均估计法原理

迭代滤波器因子取0.8.功率估计结果是-191.48dBW。

仿真中将接收中频信号放大到了signal_power_dB=-4.94dBW。

这个功率与后面的判决门限有关系。

(2)检测门限的确定

常见的检测方法有幅度检波、平方检波和平方律检波。

幅度检波器的输出为

在H0假设下,z(k)服从瑞利分布,其概率密度函数为:

 

在H

(1)假设下,z(k)服从莱斯分布,其概率密度函数为

式中,为零阶修正的贝塞尔函数。

平方律检波输出为:

 

在H0假设下,z(k)服从自由度为2M的伽马分布,其概率密度函数为

在H1假设下,z(k)服从自由度为2M的卡方分布,其概率密度函数为

当M=1时,平方检波累积器就变成平方律检波器,可以计算出当归一化门限为Vt时其虚警概率为:

 

其中

采用恒虚警率检测,设虚警率为pfa,本仿真取0.1,采用平方律检波,归一化判决门限为Vt=(-2*log2(pfa))^0.5,实际判决门限为VT=Vt*signal_power

(3)判决算法

常见判决算法有单次判决、M/N判决、(M/N+1)判决和Tong判决,采用单次判决,虚警率为pfa=0.1.归一化检测门限为Vt=2.5776,判决门限为VT=0.8248;

(5)仿真结果

搜索21个多普勒频点和40和相位点,仿真设置接收中频为4.991MHz,相位为2,结果如图5所示。

图中最大处的相关结果是144,其他非峰值最大的约为1.约21dB。

部分相关值如下表:

可以看出绝大部分数值都在门限之下,但也存在若干个在门限之上的数值,这些点可能造成虚警。

 

附:

仿真主程序

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%´®ÐⶻñËã·¨·ÂÕæ

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clearall;

clc;

%f_doppe=5000;

fsample=21e6;

f_m=5e6;

t_sim=1e-3/1;

df=1/t_sim;

cnt_det=1;%Åоö´ÎÊý

f_carrier=f_m-9*df;%½ÓÊÕÔز¨ÆµÂÊ

f_code=2.046e6;%αÂëËÙÂÊ

code_phase_init=2;%Ê×´ÎËÑË÷ʱ½ÓÊÕÂëÏàλ

code_phase_init_cmp=code_phase_init;

f_local_init=f_m-10*df;%±¾µØÔز¨nco³õʼƵÂÊ

local_code_phase=3;%%%%±¾µØαÂëÏàλ

cnt_doppler=21;

cnt_phase=40;

dot_num=t_sim*fsample;%·ÂÕæÒ»¸öαÂëÖÜÆڵĵãÊý

dBW_signal_pow=-200;

dB_C_I=60;

Am=10^(dBW_signal_pow/20)*2^0.5;

pre_noise_power=dBW_signal_pow-dB_C_I+(10*log10(f_carrier));

corr_result1=zeros(cnt_doppler,cnt_phase);

fordect_num=1:

cnt_det%Åоö´ÎÊý

fornum_phase=1:

cnt_phase%²éÕÒÏàλµãµã

fornum_doppeler=1:

cnt_doppler%µ¥´Î²éÕÒ¶àÆÕÀÕµã

ifnum_doppeler==1

f_local=f_local_init;

else

f_local=f_local+df;

end

signal_r=signal_gen(fsample,f_carrier,f_code,code_phase_init,dBW_signal_pow,dB_C_I,dot_num);%%%%%ÕâÀïÔز¨Ö¸Ï±ßƵºóµÄÖÐƵ,ÊÕµ½ºó´¦Àí·¢Ë͵Ļ¬¶¯±êÖ¾£¬ËÑË÷ÏÂÒ»¸öÏàλ

%%%%Ê×´ÎËÑË÷¹À¼ÆÐźŹ¦ÂÊ

ifnum_doppeler==1&num_phase==1

Ni=10;

signal_r1=zeros(1,length(signal_r)+Ni);

Qn1=zeros(1,length(signal_r)+Ni);

Qn2=zeros(1,length(signal_r)+Ni);

Qn3=zeros(1,length(signal_r)+Ni);

pow_noise=zeros(1,10);

forbbb=1:

10

foraaa=1:

length(signal_r)/10

signal_r1(aaa)=signal_r(aaa)*signal_r(aaa);

a=0.8;%µü´úÂ˲¨Æ÷ϵÊý

%Qn2(aaa+1)=signal_r1(aaa)*signal_r1(aaa);

Qn1(aaa+Ni)=sum(signal_r1((aaa):

(aaa+Ni)))/Ni;%»¬¶¯Æ½¾ù

Qn(aaa)=Qn1(aaa+1)^0.5;

Qn3(aaa+1)=a*Qn1(aaa)+(1-a)*Qn1(aaa+1);

pow_noise1=Qn3(aaa+1);

end

pow_noise2(bbb)=pow_noise1;

end

pow_noise=sum(pow_noise2(1:

10))/10;

pow_noise_dB=10*log10(pow_noise);

AD_min_volt=0.8;

AD_R=1;

AD_power=0.5*AD_min_volt*AD_min_volt/AD_R;

AD_power_dB=10*log10(AD_power);

Am1=AD_power_dB-pow_noise_dB;

Am1=10^(Am1/20);

end

signal_r=signal_r*Am1;%ÖÐƵ·Å´ó

Am_local=0.9;

local_carrier=local_carrier_gen(fsample,dot_num,f_local,Am_local);%%%flocal°üº¬Á˶àÆÕÀÕ

local_code=local_code_gen(f_code,fsample,dot_num,local_code_phase)*Am_local;

corr_result(num_phase,num_doppeler)=deal_local(signal_r,local_carrier,local_code);

%corr_result1(num_doppeler,cnt_phase)=corr_result;

end

%pulse_next_phase=1;

code_phase_init=mod(code_phase_init+1,2046);

%local_code_phase=local_code_phase+1;

end

%%%%²éÕÒµ¥´Î²¶»ñ×î´óÖµ¼«Î»ÖÃ

[phase_max(dect_num)doppler_max(dect_num)]=find(corr_result==max(max(corr_result)));

mod_max(dect_num)=max(max(corr_result));

det_phase=local_code_phase-phase_max+1;

det_doppler=(doppler_max-1)*df+f_m-10*df;

disp(det_phase);disp(det_doppler);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%ÇóÅоöÃÅÏÞºãÐ龯ÂÊ

%±ê¶ÈÒò×ÓÊÇÅоöÃÅÏÞÓëÔëÉù¹¦ÂʵıÈÖµ

fa=0.1;

Vt=(-2*log2(fa))^0.5;%¹éÒ»»¯ÅоöÃÅÏÞ

%Vt=0;

%¾¹ý·Å´óºó¹¦ÂÊΪAD_power

%VT=(Vt*pow_noise);

VT=Vt*AD_power;

ifmod_max(dect_num)>VT%ƽ·½Âɼ첨

flag_det=1;

else

flag_det=0;

end

%Tong¼ì²â

K=1;

B=2;

ifflag_det==1

K=K+1;

else

K=K-1;

end

ifK>=B

disp('success!

');

else

ifdect_num==cnt_det

disp('failed!

');

end

end

end

corr_result_dB=10*log10(corr_result/mod_max);

cnt_doppler1=f_m-10*df:

df:

f_m+10*df;

mesh(1:

cnt_doppler,1:

cnt_phase,corr_result);xlabel('doppler');ylabel('code_phase');

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2