缺測氣象數(shù)據(jù)的填補
在(3)中提到访得,某些站點的氣象數(shù)據(jù)會存在著缺失問題州既,當(dāng)缺測數(shù)據(jù)很多時,可直接去掉該站點羔巢,當(dāng)較少時望忆,則需要采取手段進行填充。本文線性內(nèi)插法進行補齊
線性內(nèi)插法
for year=1980:2015
if mod(year,4)==0
cd=366;
else
cd=365;
end
%降水
data=xlsread(strcat('H:\Day1951-2012yuanshi\插值格式\1980-2016\未修正\中國PRE',int2str(year),'.xlsx')); %讀取中國1980年降水
for i=1:size(data,1) %對降水?dāng)?shù)據(jù)進行循環(huán)
data1=data(i,:);
data_pre=data1(5:cd+4);%前四位分別是站點竿秆,經(jīng)緯度和高程启摄,降水?dāng)?shù)據(jù)從第五位開始
sy=find(abs(data_pre)>=0);%找到數(shù)據(jù)中絕對值大于0的部分,缺失值NaN值不會大于0
if length(sy)<cd %當(dāng)滿足條件的長度小于天數(shù)時幽钢,表明存在著空值部分
if length(sy) >340 %當(dāng)滿足條件的超過350天歉备,即95%以上時進行內(nèi)插處理,否則直接去掉該點
%首先判斷前段
data_pre1=data_pre(1:5);%取前五個進行判斷匪燕,有空值部分取其他值的均值
sy1=find(abs(data_pre1)>=0);
data_pre1_average=mean(data_pre1(sy1));
for j=1:5
if isnan(data_pre1(j))
data_pre1(j)=data_pre1_average;
end
end
%再判斷后段
data_pre2=data_pre(cd-4:cd);%對后五個進行判斷
sy1=find(abs(data_pre2)>=0);
data_pre2_average=mean(data_pre2(sy1));
for j=1:5
if isnan(data_pre2(j))
data_pre2(j)=data_pre2_average;
end
end
data_pre(1:5)=data_pre1;
data_pre(cd-4:cd)=data_pre2;
%前后完整后采用線性內(nèi)插函數(shù)對中間缺失值進行內(nèi)插
sy1=find(abs(data_pre)>=0);
juzheng=[sy1;data_pre(sy1)];
data_pre_new=interp1(sy1,data_pre(sy1),[1:length(data_pre)]);
data1(5:cd+4)=data_pre_new;
else
data1=[];
end
end
data(i,:)=data1;
end
biaotou=[NaN,NaN,NaN,NaN,[1:cd]];
data=[biaotou;data];
filename=strcat('H:\Day1951-2012yuanshi\插值格式\1980-2016\未修正\缺測修正的中國PRE',int2str(year),'.xlsx');
xlswrite(filename,data);
end
通過上述方法能夠?qū)⒁荒曛腥睖y少于5%的站點數(shù)據(jù)補齊蕾羊。
更多需求,請查看個人介紹