📄 gps.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 + -