⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gps.m

📁 读取renix格式的卫星星历文件
💻 M
字号:
%这是一个读取卫星导航电文的程序
%首先申明矩阵gps,GPS
clear;clc;
gps=[];
GPS=[];
[filename1,pathname1]=uigetfile('*.*N','读取gps导航电文');
fit1=fopen(strcat(pathname1,filename1),'rt');
if(fit1==-1)    
    msgbox('Input File or Path is not correct','Warning','warn');
    break;
end
while 1
    tline=fgets(fit1);
    ii = findstr(tline,'END OF HEADER');
    if ~isempty(ii)
        break;
    end
end
%下面找到了文件头,开始读数据
j=0;
while 2    
    %GPS为最终要得到的矩阵
    %将星号、时间寄存在data1,浮点数字寄存在data2,每一组卫星导航信息寄存在gps中
    %读数据,数据存储在gps矩阵中
        gps=zeros(1,38);
        temp=[];
        temp=fscanf(fit1,'%f',7);
        if isempty(temp)
            fclose(fit1); 
            break;
        end
        data1=temp;
        gps(1:7)=data1;
        for i=8:34
        temp=fscanf(fit1,'%f',1);
        aa=fscanf(fit1,'%c',1);
        bb=fscanf(fit1,'%c',1);
        cc=fscanf(fit1,'%f',1);
        if bb=='+'
            data2=temp*10^cc;
        elseif bb=='-'
            data2=temp*0.1^cc;
        end
        gps(i)=data2;  
        end
        
        %读每个数据块的最后一行
        tline=fgets(fit1);
        tline=fgets(fit1);
        ii=find('D'==tline);
        sz=size(ii,2);
        temp=[];    char bb=[];  cc=[];  data2=[];   
        %将读出来的最后一行转换为所要的数据
        for i=1:sz
            temp(i)=str2num(tline(ii(i)-15:ii(i)-1));
            bb(i)=tline(ii(i)+1);
            cc(i)=str2num(tline(ii(i)+2:ii(i)+3));
            if bb(i)=='+'
                data2(i)=temp(i)*10^cc(i);
            elseif bb(i)=='-'
                data2(i)=temp(i)*0.1^cc(i);
            end
        end
        gps(35:sz+34)=data2;
        j=j+1;
        GPS(j,:)=gps;
end
%%%%%%%%%%%%%
GPS=gps_qutong(GPS);            %一个将相同值去除的函数
'卫星的导航电文信息存储在GPS矩阵中'
'卫星的位置数据存储在SatPos矩阵中'
'位置的单位是km'
SatPos=gps_compute(GPS);
%SatPos(:,8:10)=SatPos(:,8:10)/1000;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -