m基于matlab的GPS卫星信号捕获和数据解析仿真

简介: m基于matlab的GPS卫星信号捕获和数据解析仿真

1.算法描述

   全球定位系统(gps)是一种全天候、全球覆盖、高精度、自动化的卫星导航定位系统,该系统向有适当接收设备的全球范围用户提供精确、连续的三维位置和速度信息。gps自投入运行以来,已经发展成为一个涵盖各领域的服务系统。       

image.png

   卫星信号的捕获算法是卫星定位接收机的关键,传统的捕获算法通常采用基于fft的相干积分和非相干积分相结合的方法,例如在使用gps信号进行定位和导航前首先需要对卫星信号进行捕获,gps卫星信号的传统捕获算法一般为频域并行捕获算法,频域并行捕获算法的原理框图如图3所示,频域并行捕获算法是一种基于fft的捕获算法,搜索覆盖全部搜索频点和全部伪码序列,对于正常功率的gps信号,通常只需要处理lms的导航数据,就能够完成gps信号的捕获,但是对于gps弱信号而言,通常处理lms的导航数据所获得的判决量并不可靠,难以实现捕获,此时就需要通过增加捕获算法所用的数据长度,采用相关积分和非相关积分相结合的方法,来提高捕获灵敏度,但同时导致fft相关运算的计算量将成倍增长,从而造成捕获速度降低。

为了跟踪和解码GPS信号,首先要捕获到GPS信号。将捕获到的GPS信号的必要参数立刻传递给跟踪过程,再通过跟踪过程便可得到卫星的导航电文。GPS卫星处于高速运动中,因此,其频率会产生多普勒频移。载波频率与C/A码的多普勒频移将在下面详细讲述。

   GPS卫星发送的信号一般由3个分量组成:载波、伪码和导航电文,其中伪码和导航电文采用BPSK技术去调制载波。

   为了跟踪和解码GPS信号,首先要捕获到GPS信号。将捕获到的GPS信号的数据传递给跟踪过程,再通过跟踪过程便可得到卫星的导航电文。传统的GPS捕获方法有:串行搜索捕获、滑动相关法、循环相关法、PMF算法。

   GPS卫星信号是发生在两个L波段频率的载波信号L1和L2,两个载波频率分别是L1的主频率fL1和L2的次频率fL2。在L波段进行调制可以避免拥挤,因为L波段的频率占据使用比率和其他波段相比要低一些,有助于全球性观测;L波段上更容易进行扩频(将低比特率的电文转换成高比特率的组合码,有利于卫星信号的保密性),发送宽带信号;L波段大气偏差和电离偏差小,接收设备可以更简单、更经济地接收和测量。每一颗卫星均有唯一的扩频码或伪随机序列,由此调制出载波频率。

2.仿真效果预览
matlab2022a仿真结果如下:
2.png
3.png
4.png
5.png
6.png
7.png
8.png
9.png

3.MATLAB核心程序

clear;
close all;
warning off;
addpath(genpath(pwd));
 
rng('default')
%%
%11111111111111111111111111111111111111111111111111111111111
isnoise         = 0;%1:add noise;0 good signal
%nosie awgn
SNR             = -19;
 
%Q1
satellite       = [1,12,14,22];
satellitenumber = length(satellite);
fs              = 16.368e6; %sampling freq
IF              = 4.092e6;%centered
fIFD            = IF + 5e3 - 10e3*rand(1,satellitenumber);%no more than 5 KHz in absolute value
Fai             = 2*pi*rand(1,satellitenumber);%random values
Ai              = 0.7+0.3*rand(1,satellitenumber);%random between 1 and 0.7 for different satellites
taoi            = floor(4e5*rand(1,satellitenumber)) + 2e5; %random between 1 and 
Dur             = 20;%bit duration,20ms
Len             = 50;%data bit length,1s
%
CHIP_TIME       = 977.5e-9;    % chip time in seconds 
ts              = 1/fs;
n               = fs/1000; 
nn              = [0:n-1]; 
millisecond     = 1000;
 
x_bound         = (ts/2)/CHIP_TIME;  % Maximum offset 
d_samp          = 6; % sample offset between correlators 
d               = (d_samp*ts)/CHIP_TIME;  
msSamp          = 16368;
 
 
for i = 1:satellitenumber
    i
    %C
    %1ms with 16 samples
    code0   = digitizg(fs/1000,fs,0,satellite(i));
    %20ms
    code1   = [code0,code0,code0,code0,code0,code0,code0,code0,code0,code0,code0,code0,code0,code0,code0,code0,code0,code0,code0,code0];
    %len
    CA      = [];
    for j = 1:Len
        CA = [CA,code1];
    end
    %D
    Di0       = 2*double(rand(1,Len)>=0.5)-1;
    %output the data
    for j = 1:Len
        Dout2{i}(Dur*(j-1)+1:Dur*j) = Di0(j);
    end
    
    for j = 1:length(Dout2{i})
        Di2(length(code0)*(j-1)+1:length(code0)*j) = Dout2{i}(j);
    end
    %S
    signal0 = Ai(i).*CA.*Di2;
    %16times
    %delay taoi/61
    delays  = floor(taoi(i)/61);
    signal3 = [zeros(1,delays),signal0(1:end-delays)];
    
    %carrier
    t       = 0:1/fs:(length(signal3)-1)/fs;
    carrier{i} = cos(2*pi*fIFD(i)*t+Fai(i));
    Si0{i}     = signal3.*carrier{i};
end
相关文章
|
7月前
|
数据可视化
基于MATLAB的OFDM调制发射与接收仿真
基于MATLAB的OFDM调制发射与接收仿真
|
6月前
|
5G
基于IEEE 802.11a标准的物理层MATLAB仿真
基于IEEE 802.11a标准的物理层MATLAB仿真
346 0
|
6月前
|
算法
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
|
6月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
6月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
7月前
|
机器学习/深度学习 算法 安全
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
247 2
|
7月前
|
监控
基于MATLAB/Simulink的单机带负荷仿真系统搭建
使用MATLAB/Simulink平台搭建一个单机带负荷的电力系统仿真模型。该系统包括同步发电机、励磁系统、调速系统、变压器、输电线路以及不同类型的负荷模型。
1343 5
|
7月前
|
传感器 资源调度 算法
【数据融合】【状态估计】基于KF、UKF、EKF、PF、FKF、DKF卡尔曼滤波KF、无迹卡尔曼滤波UKF、拓展卡尔曼滤波数据融合研究(Matlab代码实现)
【数据融合】【状态估计】基于KF、UKF、EKF、PF、FKF、DKF卡尔曼滤波KF、无迹卡尔曼滤波UKF、拓展卡尔曼滤波数据融合研究(Matlab代码实现)
779 0
|
6月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
260 0
|
6月前
|
存储 监控 并行计算
目标跟踪中常用点迹航迹数据关联算法的MATLAB实现
通过计算测量点与预测点之间的欧氏距离,选择最近邻点进行关联,适用于单目标跟踪场景。

推荐镜像

更多
  • DNS