資源簡(jiǎn)介
運(yùn)用matlab讀取rinex文件的觀測(cè)文件,程序簡(jiǎn)潔,完整,可靠
代碼片段和文件信息
function?[OBSXYZ]=?ReadObsfile()
%此文件用來(lái)讀取RINEX格式的觀測(cè)數(shù)據(jù)文件
%讀取前先設(shè)定每顆衛(wèi)星所提供的觀測(cè)參數(shù)個(gè)數(shù)
fprintf(‘開(kāi)始讀取O文件\n‘);
[FileNamePathName]=uigetfile(‘*.*o‘‘select?observation?rinex?file‘);
fido=fopen(FileName);
if?fido<1
????fprintf(‘打開(kāi)o文件失敗\n‘);
end
fseek(fido0‘eof‘);
f_size=ftell(fido);
fseek(fido0‘bof‘);%把指針?lè)诺轿募_(kāi)頭
head_find=0;
while(~feof(fido)&head_find==0)
????line=fgetl(fido);
????k=findstr(line‘APPROX?POSITION?XYZ‘);
????if~isempty(k)
????????XYZ=[str2num(line(2:14))str2num(line(16:28))str2num(line(31:42))];
????end
????k=findstr(line‘TYPES?OF?OBSERV‘);
????if?~isempty(k)
????????[numtypetype]=parse_type(line);?????????%函數(shù)在最下面,用于得到觀測(cè)值的類型數(shù)量和類型
????end
????
????k=findstr(line‘INTERVAL‘);
????if~isempty(k)
????????interval=str2num(line(1:11));
????end
????
????k=findstr(line‘END?OF?HEADER‘);
????if~isempty(k)
????????head_find=1;
????end
end
epoch=0;
while(feof(fido)~=1)
????epoch=epoch+1;
????clear?sat_num?num_sats;
????line=fgetl(fido);
????
????long=length(line);
????if(long<80)
????????line(long+1:80)=‘0‘;
????end
????
????utc_time(1)=str2num(line(1:3));
????utc_time(2)=str2num(line(4:6));
????utc_time(3)=str2num(line(7:9));
????utc_time(4)=str2num(line(10:12));
????utc_time(5)=str2num(line(13:15));
????utc_time(6)=str2num(line(16:26));
????utc_time;
????OBS(epoch).t=cal2gps(utc_time);???%%%%%%
????
????num_sats=str2num(line(30:32));
????if(num_sats>12)
????????fprintf(‘程序不能讀取大于12課衛(wèi)星的o文件‘);
????????return
????end
????for?i=1:num_sats
????????start_dx=33+(i-1)*3;
????????sat=sscanf(line(start_dx:start_dx+2)‘%c‘);
????????if?~isempty(deblank(sat(2:3)))
????????????sat_num(i)=str2num(sat(2:3));???
???
- 上一篇:maya源文件斧頭
- 下一篇:虛擬網(wǎng)絡(luò)映射仿真代碼
評(píng)論
共有 條評(píng)論