即使数据含有nan值,也可以直接处理
法一:空间中值高通低通滤波
% 空间滤波lon6°x lat6° 高通
lon_filt=6;lat_filt=6; %滤波的经纬度
mm_lon=lon_filt*4;
mm_lat=lat_filt*4;
mid=sla;
ngrid1=nan(size(mid));
ngrid2=nan(size(mid));
mid = padarray(mid, [mm_lon/2,mm_lat/2], 'symmetric', 'both');
for mm=mm_lon/2+1:size(mid,1)-mm_lon/2
for nn=mm_lat/2+1:size(mid,2)-mm_lat/2
domain=mid(mm-mm_lon/2+1:mm+mm_lon/2-1,nn-mm_lat/2+1:nn+mm_lat/2-1);
looc=find(isnan(domain));
if length(looc)/((mm_lon-1)*(mm_lat-1))<=1
domain=domain(~isnan(domain));
ngrid1(mm-mm_lon/2,nn-mm_lat/2)=mid(mm,nn)-median(domain); %表示高通
% ngrid2(mm-mm_lon/2,nn-mm_lat/2)=median(domain); %表示低通
end
end
end
法二: 空间中值高通低通滤波
采用网上下载程序
使用例子
res=25;
%lamba=200,600,2000,空间2°*2°,6°*6°,20°*20°,高通低空滤波 使用数据分辨率为0.25*0.25
lamba=600;
sla3 = filt2(sla,res,lamba,'hp');
对比显示,中值滤波信号更强一些,中尺度现象较为明显