%%***********************************************************************%%
%%***********************************************************************%%
%%***********************1 全国日值降雨数据提取与异常值处理****************%%
%%***********************************************************************%%
%%***********************************************************************%%
clc;clear
InputPath = 'C:\Users\ ';
prepath = '气象温度2009-2018\';
filename = 'SURF_CLI_CHN_MUL_DAY-TEM*.txt';
Outfile = 'PRE_FullStation_2009_2018';
OutputPath = 'C:\Users\ ';
if exist(OutputPath,'dir')==0
mkdir(OutputPath); % build the new direct
end
Ifiles = dir([InputPath,prepath,filename]);
nIfiles = length(Ifiles);
PRE = [];
P_Labes ={'Station','Lat','Lon','Elev','Y','M','D','TEMmax','TEMmin','TEM'};
Parameters.Names = P_Labes';
for nf = 1:nIfiles
Ifilename = Ifiles(nf).name;
fileID = fopen([InputPath,prepath,Ifilename]);
data_dummy = textscan(fileID,'%f %f %f %f %f %f %f %f %f %f %f %f %f');
TEMdata = [data_dummy{1},data_dummy{2},data_dummy{3},data_dummy{4},...
data_dummy{5},data_dummy{6},data_dummy{7},...
data_dummy{8},data_dummy{9},data_dummy{10}];
[row,~] = find(TEMdata(:,8:10)>= 32700);
TEMdata(row,8:10) = 0;
[row1,~] = find(TEMdata(:,8:10)> 30000);
if isempty(row1)~= 1
TEMdata(row1,8:10) = (TEMdata(row1,8:10)/1000-floor(TEMdata(row1,8:10)/1000))*1000;
end
% check the spectial data
[row_dummy,~] = find(TEMdata(:,10)>= 20000);
if isempty(row_dummy)~=1
disp('Error')
end
TEMdata(:,8:10) = TEMdata(:,8:10)*0.1;
PRE = [PRE;TEMdata];
end
PREdata = array2table(PRE,'VariableNames',P_Labes);
save([OutputPath,Outfile,'.mat'],'PREdata','-v7.3');
评论1