基于matlab的GPS单点定位程序开发(初学者)

基于matlab的GPS单点定位程序开发

开发初衷

本人是测绘专业的学生,在初学GPS时遇到了很多代码问题,因此希望这篇文章能够帮助广大的测绘和导航专业的学子

代码开始

开发的第一部分是:文件读取,文件读取包括两部分,观测文件和星历文件读取。

首先介绍第一部分文件读取:读取星历文件(代码如下)

读取GPS星历(可以是混合星历)

// An highlighted block
 function eph=loadxingli(filename)%%读取rinex3的星历文件
 tic;
 fprintf('Opening RINEX file: %s\n', filename);
 finp = fopen(filename, 'rt');
%%%%星历索引值
 no = 2:3;           year_idx = 5:8;        month_idx = 10:11;    day_idx = 13:14;
 hour_idx = 16:17;   min_idx = 19:20;       sec_idx = 22:23;      
 f1 = 5:23;          f2 = 24:42;            f3 = 43:61;           f4 = 62:80;
%%%跳过文件头
while 1
    line=fgetl(finp);
    if contains(line,'END OF HEADER')
        break;
    end
end
%%预设数组
sat=1:32;nav=cell(1,32);
eph=[];SEP=zeros(size(sat));
block_init =zeros(42,1);
while ~feof(finp)%%每次循环8行
    line=fgetl(finp);
    system=line(1);
      if system=='G'
        prn = str2double(line(no));
        idx = find(prn ==sat);
        SEP(idx) = SEP(idx) + 1;
        tt = zeros(6,1);
        tt(1) = round(str2double(line(year_idx)));
        tt(2) = round(str2double(line(month_idx)));
        tt(3) = round(str2double(line((day_idx))));
        tt(4) = str2double(line(hour_idx));
        tt(5) = str2double(line(min_idx));
        tt(6) = str2double(line(sec_idx));
        [GPSWeekNo, GPSSecond, DOY, DOW] = greg2gps(tt');
        mTime = datenum(tt');
        block=block_init;
        block(1:11) = [tt; GPSWeekNo; GPSSecond; DOY; DOW; mTime];
        %%%第一行
        block(12:14) = [str2double(line(f2));str2double(line(f3));str2double(line(f4))];
        %%%第二行
        line=fgetl(finp);
        block(15:18) = [str2double(line(f1));str2double(line(f2));...
        str2double(line(f3));str2double(line(f4))];
         %%%第三行
         line=fgetl(finp);
        block(19</
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值