空间低通高通滤波 滤波器和中值滤波

即使数据含有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'); 

filt2 滤波程序下载

对比显示,中值滤波信号更强一些,中尺度现象较为明显

你可能感兴趣的:(matlab)