《matlab仿真gps的--大学毕业论文开题报告.doc》由会员分享,可在线阅读,更多相关《matlab仿真gps的--大学毕业论文开题报告.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、湖北大学本科毕业论文(设计)前言全球定位系统(GPS)是新一代的精密卫星导航定位系统。由于其全球性、全天候以及连续实时三维定位等特点,在军事和民用领域得到了广泛的发展。近年来,随着科学技术的发展,GPS导航和定位技术已向高精度、高动态的方向发展。GPS卫星接收机属于卫星导航定位系统中的用户设备,主要用于接收卫星信号和电文,由无线电信号测定用户至卫星的距离,或多普勒频移等观测量;根据导航电文,计算观测卫星的位置和速度,根据观测量和卫星的位置、速度,解算出用户的位置和速度。目前,国内大多数GPS接收机都是在国外定位模块的基础上进行二次开发,但是随着GPS定位广泛的应用,要求我们全面透彻地研究GPS
2、定位系统,为我国的定位导航应用作出贡献。为了满足更加高的定位要求,获得更加高的可靠性,对GPS接收机来说,要能兼容各种定位导航系统而且考虑到算法改进的成本问题,相比较于现有的GPS接收机需要更换硬件设备,GPS软件接收机只需改动软件,具有更强的灵活性和开放性。本文所做的工作是利用Matlab软件搭建GPS仿真平台。本文阐述了CA码的生成原理与GPS信号的生成原理,捕获和跟踪的原理,GPS信号的捕获和跟踪。利用FFT相关法进行时间和频率串行搜索,。然后,利用MATLAB仿真环境开发信号仿真平台,并利用此仿真器实现GPS信号的仿真,并对所提出的信号的捕获和跟踪算法进行了仿真。仿真结果表明,所做的仿
3、真达到了预期设计的目标.目录绪论1.1 GPS系统概述1.2课题意义及研究方向1.3论文内容安排第二章 GPS的C/A码捕获2.1介绍2.2C/A码起始点的精确性2.3 MATLAB仿真C/A码的产生 2.3. 1最大长度序列(MLS)和G2的输出及其延迟时间的检验2.3.2 C/A码的产生第三章GPS卫星信号的捕获3.1概述3.2卫星信号捕获的考虑 3.2.1 捕获时的最大电文长度 3.2.2 捕获中的频率步长3.3 GPS卫星信号的捕获方法 3.3.1 传统捕获方法3.4 GPS卫星信号捕获的例子 3.5 关于捕获的一些子程序 3.5.1 随机编码过程仿真3.5.2 获取导航信息的仿真第四
4、章 GPS信号接收机仿真系统概述4.1 GPS信号接收机4.1.1 GPS信号接收机架构4.1.2 GPS信号接收机的工作原理4.2 GPS载波相位测量定位 4.2.1 GPS载波相位测量4.2.2 波数和整周跳变 4.2.3 表4-1 波数解算举例 第五章 GPS信号的跟踪5.1 目的5.2 GPS信号跟踪5.2.1载波和码元跟踪5.2.2利用锁相环跟踪GPS信号5.2.3二阶锁相环5.3跟踪过程的高测时精度 5.3.1通过理想相关输出获得高测时精度5.3.2通过曲线拟合获得高测时精度第六章 GPS卫星导航数据定位6.1目的6.2几何定位及架构6.3. 卫星数据GPSsignal6.3.1卫
5、星数据分析6.3.2卫星数据分析程序代码第七章 总结和展望基于METLAB的GPS全球定位系统关键技术仿真摘 要全球定位系统(GPS)是新一代的精密卫星导航定位系统。由于其全球性、全天候以及连续实时三维定位等特点,在军事和民用领域得到了广泛的发展。近年来,随着科学技术的发展,GPS导航和定位技术已向高精度、高动态的方向发展。GPS卫星接收机属于卫星导航定位系统中的用户设备,主要用于接收卫星信号和电文,由无线电信号测定用户至卫星的距离,或多普勒频移等观测量;根据导航电文,根据观测量和卫星的位置、速度,解算出用户的位置和速度。本文所做的工作是利用Matlab软件搭建GPS仿真平台。本文阐述了CA码
6、的生成原理与GPS信号的生成原理,捕获和跟踪的原理,GPS信号的捕获和跟踪。然后,利用MATLAB仿真环境开发信号仿真平台,并利用此仿真器实现GPS信号的仿真,并对所提出的信号的捕获和跟踪算法进行了仿真。仿真结果表明,所做的仿真达到了预期设计的目标【关键词】GPS导航 定位 捕获 跟踪 MATLAB仿真Simulation of GPS global positioning system key techniques based on the METLAB AbstractGlobal positioning system (GPS) is a new generation of satell
7、ite navigation and positioning systems. Due to its global, around-the-clock and continuous real time three dimensional positioning and so on, has been widely used in the field of development in military and civilian. In recent years, with the development of science and technology, GPS navigation and
8、 positioning technology to high precision, high dynamic development. GPS satellite receiver belonging to users of satellite navigation and positioning system devices, mainly used for reception of satellite signals and messages, determination of users by radio signals to a satellite distance, or Dopp
9、ler shift measurements under navigation message, according to the measurements and satellite location, speed, and calculate the position and speed of the user. This work is done by the use of Matlab software to build GPS simulation platform. This article expounded the CA principles of code generatio
10、n and the generation of GPS signal theory, principles of acquisition and tracking, GPS signal acquisition and tracking. Then, using MATLAB simulation environment to develop signal simulation platform and simulation of GPS signal using the emulator, and on the proposed signal acquisition and tracking
11、 algorithms for the simulation. Simulation results show that the design of the simulation to achieve the desired goal 【Key words】GPS navigation Locate Capture Track MATLAB simulation 绪论GPS目前处于良好的运行状态,并满足20世纪60年代所提出的最佳定位系统标准。这个系统向有适当接收设备的全球范围内的用户提供精确、连续的三维位置和速度信息。 GPS也向全球广播世界协调时(UTC)。组成卫星星座的24颗卫星被安排在
12、6个轨道平面上,即每个平面上4颗。一个分布在全世界的地面控制/监视网监视着卫星的运行状态。卫星用叫做码分多址(CDMA)的技术在两个频率上广播测距码和导航数据。 也就是说, 系统只使用两个频率, 称为L1(1575.42 MHz)和L2(1227.6 MHz)。每颗卫星都在这两个频率上发射,但所有的测距码与其他卫星所使用的不一样。导航数据提供给接收机, 以确定卫星在发射信号时的位置,而测距码使用户接收机能够确定信号的传输延时,从而确定卫星到用户的距离。 这种技术要求用户接收机也包含一个时钟。利用这种技术来测量接收机的三维位置时,要求测量接收机到4颗卫星的TOA(信号到达时间)距离,如果接收机时
13、钟已经是与卫星时钟同步的,便需要3个距离测量值。因此,为测量用户的纬度、经度、高度和接收机相对于内在系统时的偏移,需要有4个测量值。如果系统时或高度已准确获知, 便只需要4颗以下的卫星。GPS系统除定位服务外,同时也能利用GPS卫星具有的高稳定性原子时钟为用户提供授时服务,由此用户可以计算出自身的速度。 这些服务被称为标准的PVT(位置、速度、时间的英文缩写)服务。GPS提供两种精度不同的PVT测量: 标准定位服务(SPS)和精密定位服务(PPS)。SPS是为民用服务的, 而PPS是为美国军方用户和特定的政府部门用户服务的,两者精度不同。1 课题意义及研究方向目前,国内大多数GPS接收机都是在
14、国外定位模块的基础上进行二次开发,但是随着GPS定位广泛的应用,要求我们全面透彻地研究GPS定位系统,为我国的定位导航应用作出贡献。为了满足更加高的定位要求,获得更加高的可靠性,对GPS接收机来说,要能兼容各种定位导航系统而且考虑到算法改进的成本问题,相比较于现有的GPS接收机需要更换硬件设备,GPS软件接收机只需改动软件,具有更强的灵活性和开放性。1.1 航空领域的应用GPS在航空领域的应用推动着全球卫星系统(GNSS)的发展, 它可以提供从航路直到精密飞行轨道阶段(起飞、 降落)的引导。 1.1.2 空间运载引导从1992年起,GPS接收机便被用于TOPEX/POSEIDON卫星上, 这种
15、卫星是用于研究海洋环境的。 1.1.3 海洋应用 商业和娱乐海事企业都已在利用GNSS。从洋面旅行到内河航路,尤其是艰险的水域,所有船舶的导航都得到了提高。 1.1.4 陆用GPS 测绘行业依靠差分GPS已经获得毫米级的测量精度。铁路部门利用类似的技术获得相对于附近的铁轨组的火车位置。 GPS是智能交通系统(ITS)的关键组成部分。 1.2 论文内容安排本文所做的工作是利用Matlab软件搭建GPS仿真平台。本文阐述了CA码的生成原理与GPS信号的生成原理,捕获和跟踪的原理,GPS信号的捕获和跟踪。利用FFT相关法进行时间和频率串行搜索,。然后,利用MATLAB仿真环境开发信号仿真平台,并利用
16、此仿真器实现GPS信号的仿真,并对所提出的信号的捕获和跟踪算法进行了仿真。2 GPS的C/A码捕获2.1 介绍C/A码(Coarse Acquisition Code)是用于粗测距和捕获GPS卫星信号的伪随机码。它是由两个10级反馈移位寄存器组合产生的,其产生原理如图2-1所示。图2-1 C/A码发生器2.2 C/A码起始点的精确性输入信号以5 MHz的频率数字化,或者说,每个数据点相隔200 ns。这样的时间分辨率,与之相应的距离分辨率大约是60 m(310820010-9),这个数值对确定用户位置来说不够精确。由于GPS信号与接收机数字时钟不同步,所以某个特定数据点不可能完全匹配C/A码起
17、始点。在最坏情况下,即C/A码的起始点落在两个数据点中间,C/A码的数字化起始点与真实值相差100 ns。捕获过程只能在数字频率下测量出C/A码起始点的精确性,而我们需要的是测得C/A码起始点极其精确。 传统跟踪环,本地生成C/A码每毫秒更新一次。更新的目的是生成C/A码来匹配输入信号的C/A码, 并且生成一个载波频率来匹配输入信号的载波频率。这里仅讨论C/A码的匹配问题。例如,如果实际的C/A码的起始点准确落在两个数据点之间,完全可以产生一个本地C/A码,准确地匹配这一点。但是,由于噪声的影响,本地生成的C/A码只能接近目标值,不会完全达到目标值。在BASS方法跟踪过程中,本地产生的C/A码
18、是固定的,第一个数据点通常从C/A码的起始点开始,且这个码元将一直使用。 在最糟情况下,本地产生的C/A码和数字输入之间相差100 ns。 可以采用两种方法,以较高的测时精度来找出输入信号中C/A码的起始点。一个方法是利用三种信号:即时码、超前码和滞后码。 本地产生的C/A码看做即时码。利用这个信号以固定间隔产生超前码和滞后码。 C/A码以5 MHz的频率生成即时码。C/A码为1 ms长,产生5000个数据点,超前码和滞后码通过平移即时码获得。 图69示意了即时码,数据点从1到5000,任意选择平移两个数据点,向前平移两个数据点得到超前码,即4999,5000,1,2,4998; 向后平移两个
19、数据点,得到滞后码, 次序为3,4,5000,1,2。 产生的这三个码都与输入信号进行相关运算。 另一个方法是利用五种信号:一个即时码, 两个超前码和两个滞后码。 将即时码移动四个数据点产生附加的一个超前码和滞后码。 2.2 Matlab仿真C/A码的产生及调制2.3 MATLAB仿真C/A码的产生 2.3.1 最大长度序列(MLS)和G2的输出及其延迟时间的检验该仿真程序的原理性描述见图4-5, 运行结果见图4-9。 其完整的M程序代码如下: %产生C/A码的方法一%k1=2; k2=6; delay=5; %将10号寄存器的 Reg=-ones(1,10); %定义参数k1、 k2以及延迟
20、%定义寄存器110的初始值都为-1%通过循环产生长度为1024的MLS序列以及G2序列for j=1:1023;MLS(j)=Reg(10); %将10号寄存器的输出作为 MLS 输出 modulo=Reg(2)*Reg(3)*Reg(6)*Reg(8)*Reg(9)*Reg(10);Reg(2:10)=Reg(1:9);Reg(1)=modulo;g2(j)=Reg(k1)*Reg(k2); %将参数k1和k2所代表的寄存器模二相加后作为G2 输出end%将G2与MLS进行延迟检验if MLSg2(delay:1023 1:delay-1) disp(OK)elsedisp(not matc
21、h)end%在G2序列中找出-1并转换为0, 找出1并转换为1 ind1=find(g2-1);ind2=find(g21);g2(ind1)=ones(1,length(ind1);g2(ind2)=zeros(1,length(ind2);temp=g2(1:120);x(1)=0;Show(1)=temp(1);P=2;%下面的循环是为了将结果显示成方波形式for i=2:length(temp) if (temp(i)=temp(i-1) x(P)=i-1; Show(P)=temp(i-1); x(P+1)=i-1+0.01; Show(P+1)=temp(i); P=P+2; el
22、se Show(P)=temp(i); x(P)=i; P=P+1; endend%画出仿真结果图plot(x,Show);axis(0 length(x)-60 -0.1 1.1); grid; 图2-3 最大长度序列(MLS)和G2的输出2.3.2 C/A码的产生 该程序对C/A码的产生进行了仿真,运行结果显示了第4颗卫星产生的C/A码,如图4-10所示。仿真程序完整的M程序代码如下:2.3.3 程序代码%产生C/A码的方法二%本程序要求输入卫星的编号, 在图4-10中显示的是第4颗卫星产生的C/A码, 即输入为4svnum=input(enter the satellite number
23、 = );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;g2shift=g2s(svnum,1); reg =-1*ones(1,10); %将110号寄存器的初始值设为-1%将10号寄存器的输出作为G1码%并将10号寄存器与3号寄存器输出模二相加后反馈给1号寄存器for i = 1:1023,g1(i) = reg(10);slave1 = reg(3)*reg(10);reg(1,2:1
24、0) = reg(1:1:9);reg(1) = slave1;end reg = -1*ones(1,10); %将110号寄存器的初始值设为-1%将10号寄存器的输出作为G2码%并将10、 9、 8、 6、 3、 2寄存器输出模二相加后反馈给1号寄存器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;endg2tmp(1,1:g2shift)=g2(1,1023-g2shift+1:1023);g2
25、tmp(1,g2shift+1:1023)=g2(1,1:1023-g2shift);g2 = g2tmp; %G1和G2卷积后得到C/A码ss-ca = g1.*g2; ca = ss-ca;%在C/A码的序列中找出-1并转换为0, 找出1并转换为1ind1=find(ca=-1);ind2=find(ca=1);ca(ind1)=ones(1,length(ind1);ca(ind2)=zeros(1,length(ind2);temp=ca(1:102) ;%下面的循环是为了将结果显示成方波形式x(1)=0;Show(1)=temp(1);P=2;for i=2:length(temp)
26、 if (temp(i)=temp(i-1) x(P)=i; Show(P)=temp(i-1);x(P+1)=i+0.01; Show(P+1)=temp(i); P=P+2; else Show(P)=temp(i); x(P)=i; P=P+1; endend%画出仿真结果图plot(x,Show);axis(0 length(x)+5 -1 1.5); grid; 2.3.3 模拟产生代码波形图2-4 第4颗卫星产生的C/A码3 GPS卫星信号的捕获3.1 概述为了跟踪和解码GPS信号, 首先要捕获到GPS信号。将捕获到的GPS信号的必要参数立刻传递给跟踪过程,再通过跟踪过程便可得到卫
27、星的导航电文。GPS卫星处于高速运动中,因此,其频率会产生多普勒频移。为覆盖高速卫星预期中的所有多普勒频率范围,捕获方法覆盖的频率范围必须在10 kHz之内。针对某个特定的卫星信号, 捕获过程就是要找到C/A码的起始点,并利用找到的起始点展开C/A码频谱,一旦复现了C/A码的频谱, 输出信号将变成连续波(Continuous Wave, CW),于是便得到其载波频率。也就是说,捕获过程就是要获得输入信号的C/A码的起始点和载波频率,然后传递给跟踪过程。 3.2 卫星信号捕获的考虑 3.2.1 捕获时的最大电文长度 C/A码长1 ms,那么至少要用1ms的电文来捕获,甚至只用1 ms的电文来捕获
28、时,都可能发生导航电文相位偏移。因此,为了保证捕获电文中不含有数据偏移,需要用两组连续的电文来捕获, 这个电文最大长度是10 ms。如果使用两组连续的10 ms电文来捕获, 就保证了在某一组电文中不含相位偏移。 限制电文长度的第二个因素是C/A码的多普勒效应。3.2.2 捕获中的频率步长 捕获时的另一个考虑因素是捕获中剥离载波所需的频率。步进频率的大小与捕获中的电文长度紧密相关。如果输入信号与本地混频信号相距1个周期,它们两者没有相关性;如果两者小于1个周期, 则它们有部分相关性。解决信号周期和步进频率问题的一个简单方法是频率相离与电文长度成反向关系。 可得出如下结论:捕获中的操作执行次数与总
29、的数据点并不是成线性比例关系,当电文长度从1 ms上升到10 ms时,电文长度上升10倍,频率点数目也上升了10倍, 捕获所需的操作次数上升了不止10倍。因此,实际捕获时, 如果强调捕获的速度的话,电文长度需保持在最小值。 执行次数的增加,取决于实际捕获所用的方法,下面将讨论具体的捕获方法。 3.3 GPS卫星信号的捕获方法 3.3.1 传统捕获方法捕获的基本思想就是展开输入信号,找到载波频率。如果相位正确的C/A码与输入信号相乘,输入信号将如图4-1中所示变成一个连续信号。图3-1中最上端是输入信号,这个信号是C/A码编码的射频信号相位。中间的图表示C/A码,其值在1之间。 最下端的图是连续
30、信号,代表输入信号与C/A码的乘积,是一个连续信号,这个过程有时称做输入信号的C/A码剥离。 图3-1C/A编码的输入信号与本地C/A码相乘3.3.2 C/A码数值分析一旦输入变成连续信号,通过傅立叶变换可以知晓其频率。可以设置一个阈值,即一个门限来判断一个频率分量是否足够大。高于这个门限的最高频率分量就是我们要找的频率。 由于输入信号中C/A码的起始点还未知,因此,必须先找到这个点。为了找到这个点,我们产生本地的一个C/A码,将其数字化为5000个点,且与输入信号点对点相乘,对此乘积的结果进行FFT或DFT,可以找到其频率。通过这种方法,可以用时间分辨率为200 ns(1/5 MHz)和1
31、kHz的频率分辨率找出C/A码的起始点。 如果使用10 ms的电文,因为信号只需要卷积1 ms,因此需要5000次操作。每次操作包含50 000个点对点乘积和50 000次FFT,总共有1.25108(500025 000)个输出结果。3.4 GPS卫星信号捕获的例子 程序中所用到的输入电文在时域内的情形如图3-2所示。 输入信号看起来像噪声,其频率描绘可通过FFT求得,如图3-3所示。正如预料的,FFT变换后带宽是2.5 MHz,其频谱形状与射频链的滤波器形状相似,通过循环相关后如图3-4所示, 其中给出了6号卫星的C/A码起始点,其起始点在2884。图3-5给出了相距1 kHz的21个频率
32、分量,最高值发生在k=7处。从图3-6和3-7我们可以轻易地看出C/A码的起始点和频率。由于输入电文是实际收集到的数据,精频的精确度就难以测定, 因为其多普勒频率未知。精频还取决于在下变频中用到的本地振荡器的频率精确性和采样频率的精确性。图3-2 5000个输入数据点图3-3 输入信号的快速傅立叶变换图 3-4 6号卫星的C/A码起始点图3-5卫星6的展开的各个频率分量对弱信号(24号卫星)执行捕获,如图4-6和图4-7所示。从图中我们很难判断C/A 码的起始点和频率是否为正确值,需要通过另外的相关运算才能找出它们图3-6 24号卫星的C/A码起始点图3-7 24号卫星的展开信号的频率分量3.
33、5 关于捕获的一些子程序 3.5.1 随机编码过程仿真打开Matlab,新建一个MFile,输入以下的文本,保存为GenerateCode.m,并调试运行。可以单步或多步运行M文件。%该程序仿真产生三组伪随机数, 模拟随机编码过程close all;clear;clc;t=0:5:1000; %时间变量为1 s, 步长5 ms%x1=rand(1,length(t); %生成一组1*length(t)维的伪随机数x1=round(x1); %将x1数组中的元素转换到与其最近的整数index1=find(x1=0); %找出x1数组中为0的元素x1(index1)=-ones(1,length(
34、index1); %返回一个index1长度的一维数组x2=rand(1,length(t);x2=round(x2);index1=find(x2=0);x2(index1)=-ones(1,length(index1); x3=rand(1,length(t);x3=round(x3);index1=find(x3=0);x3(index1)=-ones(1,length(index1); y1=zeros(1,1); y2=zeros(1,1); y3=zeros(1,1); %生成三个1*1的零矩阵,存放伪随机值t1=zeros(1,1); t2=zeros(1,1); t3=zero
35、s(1,1); %生成三个1*1的零矩阵,存放时间值%将生成的伪随机值存放到对应的矩阵中%y1(1)=x1(1); y2(1)=x2(1); y3(1)=x3(1);t1(1)=t(1);t2(1)=t(1);t3(1)=t(1);k=2;m=2;n=2;for i=2: length(t) if (x1(i)=x1(i-1) y1(k)=x1(i); t1(k)=t(i); k=k+1; else y1(k)=x1(i-1); y1(k+1)=x1(i); t1(k)=t(i); t1(k+1)=t(i)+0.01; %如果该时刻阶跃变化, 则右移0.01来记录 k=k+2; end if
36、(x2(i)=x2(i-1) y2(m)=x2(i); t2(m)=t(i); m=m+1; else y2(m)=x2(i-1); y2(m+1)=x2(i); t2(m)=t(i); t2(m+1)=t(i)+0.01; m=m+2; end if (x3(i)=x3(i-1) y3(n)=x3(i); t3(n)=t(i); n=n+1; else y3(n)=x3(i-1); y3(n+1)=x3(i); t3(n)=t(i); t3(n+1)=t(i)+0.01; n=n+2; endend%画图说明产生的三组伪随机码%subplot(3,1,1);plot(t1,y1,y);gri
37、d on;axis(-1,1001,-1.5,1.5);subplot(3,1,2);plot(t2,y2,y);grid on;axis(-1,1001,-1.5,1.5);subplot(3,1,3);plot(t3,y3,y);grid on;axis(-1,1001,-1.5,1.5); whitebg(black);%将三组伪随机值存放到新矩阵并传送到Workspace中, 方便以后调用数据%simin1=t1;y1;simin2=t2;y2;simin3=t3;y3; 输入上面的文本后,运行得到如图5-29所示的伪随机码。 其结果还可以通过Workspace查看,之所以要传送到Wo
38、rkspace中, 是因为我们在后面的仿真中还要用到这些伪随机码。 图 3.8 模拟三组伪随机码的仿真示意图3.5.2 获取导航信息的仿真在这个仿真中,我们要得到卫星的导航信息,其中忽略了频率偏移,且卫星信号的数据是基于前面章节中得到的卫星数据,存放在GPSsignal.mat文件中。在运行程序之前, 我们必须将GPSsignal.mat中的数据传送到Workspace中。 clear; %清除所有的变量clc; %关闭所有指令窗close all; %关闭所有未隐藏的窗口load GPSsignal.mat %从GPSsignal.mat中获得所有变量到Workspace中%n=length
39、(GPSsignal);%SvNum=12;%调用fGenerateCAcode3.m文件, 获得卫星编号为12的C/A码Temp=fGenerateCAcode3(SvNum);index1=find(Temp=0); %找出C/A码中的低电平, 形成列向量存放在index1中Temp(index1)=-ones(1,length(index1); %返回一个与index1相同长度的一维数组 SinWave=sin(0:2*pi/8:2*pi*7/8); %产生一个步进2*pi/8的正弦波SinWave=single(SinWave); %将SinWave矩阵转换成单精度矩阵GpsMatch
40、=zeros(1,1); %生成一个1*1的零矩阵SinWave=SinWave SinWave SinWave SinWave SinWave; GPSsignal.mat %生成一个5 ms的连续信号 for i=1:length(Temp) GpsMatch=GpsMatch Temp(1,i)*SinWave; end GpsMatch=GpsMatch(2:length(GpsMatch); %生成本地匹配信号并去掉第一个元素n=length(GpsMatch);m=50000;for i=1:m Res(i)=GpsMatch*GPSsignal(1,i:i+n-1); %将本地生
41、成匹配信号GpsMatch与GPSsignal循环卷积 endplot(1:m,Res); %图示卷积的幅值%Res2=abs(Res);for i=1:100 %该循环目的是找出Res中的最大值C I=max(Res2);Res2(1,I)=0;Index(1,i)=I;end;%下面是要找到GPS signal中的导航电文% %方法是检验GPS signal(已被C/A code调制过)的每个最大值处是否具有相位偏移%w=length(GpsMatch);m=1;for i=Index(1,1):w:(length(GPSsignal)-w+1) NavigationBit(m)=(GPSsignal(i:i+w-1)*GpsMatch)/w; m=m+1;endNavigationCode=zeros(1,1);NavigationCode(1,1)=NavigationBit(1,1);m=2;Count=0; for i=2:length(NavigationBit) if(NavigationBit(1,i)=NavigationBit(1,i-1) NavigationCode(1,m)=NavigationBit(1,i); m=m+1; Count=0; else Count=Count+1; if(Count=5) Navigation