Matlab 等间隔读取IGS对流层天顶延迟(ZPD)文件

IGS(International GNSS Service)提供对流层天顶延迟(ZPD)文件,可从cddis分析中心下载(ftp://cddis.gsfc.nasa.gov/gps/products/trop_zpd),其数据间隔为300s,使用MATLAB提取2小时间隔的对流层天顶延迟数据。

以DARW站2016年第1天至第366天数据为例    (注:ZPD文件自2017年第29天起记录发生变化,使用该程序需做调整)

⑴数据提取

clear all;

clc;

day='缺失天数';         %定义变量名day,记录缺失的文件年积日

for n=1:366;                                %zpd文件天数
    ns=num2str(n,'%03d');         % 输值转字符串,固定三位数字(001,010,100)
name=['darw',ns,'0.16zpd'];     % 字符串拼接得到文件名称

ffid=fopen(name,'rt');              % 打开zpd文件,从第一行开始读取,数据存储在cell里

if ffid>0                  % 文件存在,读取数据

i = 1;
while feof(ffid) == 0    
    tline{i,1} = fgetl(ffid);
    i = i+1;
end    
% 提取间隔2h的数据,从0时至22时,zpd文件采样间隔为300s,2h间隔为24行
for i=62:24:326         
    a((i-38)/24,:)=char(tline{i,1});   %从cell里提取数据转成字符型
end
for i=1:12
    zpd(i,:)=str2num(a(i,20:25));      %从字符串里提取第20至第25个字符并转成数值
end

xlswrite(ns,zpd)                       %按天写入excel表

else 
    day=strcat(day,'-',ns);             %文件不存在,记录缺失文件年积日
    xlswrite(ns,nan);                   %生成空文件
end

end

⑵数据合并

clear;
clc;
for n=1:366
n=num2str(n,'%03d');
eval(['a',n,'=','xlsread(n)']);
end
n=2; ss=a001;
while(n<367)
    n=num2str(n,'%03d');
    ss=cat(1,ss,eval(['a',n]));
    n=str2num(n);
    n=n+1;
end
xlswrite('2016.xlsx',ss)

你可能感兴趣的:(Matlab 等间隔读取IGS对流层天顶延迟(ZPD)文件)