⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smartsmooth.m

📁 JLAB is a set of Matlab functions I have written or co-written over the past fifteen years for the p
💻 M
字号:
function[y]=smartsmooth(x,f)%SMARTSMOOTH  Fast light smoothing for large matrices%%   SMARTSMOOTH(X) for matrix X returns X smoothed by a 3x3 boxcar.  X%   is zero-padded at the edges before smoothing.%   %   SMARTSMOOTH(X,F) uses 3x3 smoothing matrix F.%%   This is designed for fast filtering of very large matrices which%   would take a painfully long time with CONV.  If you want to smooth%   over more than a 3x3 box, call SMARTSMOOTH multiple times. For%   example, SMARTSMOOTH(SMARTSMOOTH(X)) is equivalent to smoothing%   over a 5x5 boxcar.%%   SMARTSMOOTH has the correct behavior for asymmetric F.     %%   See also VFILT  %   _________________________________________________________________%   This is part of JLAB --- type 'help jlab' for more information%   (C) 2003, 2004 J.M. Lilly --- type 'help jlab_license' for details        if strcmp(x, '--t')  smartsmooth_test; returnendif nargin==1  f=ones(3,3)/9;endy=zeros(size(x,1)+2,size(x,2)+2);y(2:end-1,2:end-1)=x;x=0*y;for i=-1:1  for j=-1:1     x1=y;     %Need to shift negatively to what you'd think to get the right relation     x1=vshift(x1,-i,1);      x1=vshift(x1,-j,2);     x=x+x1*f(i+2,j+2);  endendy=x(2:end-1,2:end-1);function[]=smartsmooth_testx=zeros(5,5);x(3,3)=2;y=smartsmooth(x);yans=[0 0 0 0 0; 0 1 1 1 0 ; 0 1 1 1 0 ; 0 1 1 1 0 ; 0 0 0 0 0];yans=yans*2/9;bool=allall(yans==y);reporttest('SMARTSMOOTH delta-function centered in 5x5 matrix, boxcar',bool);%reporttest('SMARTSMOOTH delta-function centered in 5x5 matrix, boxcar',bool);f=[0 1 2; 3 4 5; 0 2 1];x=zeros(5,5);x(3,3)=1;yans=[0 0 0 0 0; 0 f(1,:) 0; 0 f(2,:) 0; 0 f(3,:) 0; 0 0 0 0 0];y=smartsmooth(x,f);bool=allall(yans==y);reporttest('SMARTSMOOTH delta-function centered in 5x5 matrix, asymmetric filter',bool);f=[0 1 2; 3 4 5; 0 2 1];x=zeros(5,5);x(3,4)=1;yans=[0 0 0 0 0; 0  0 f(1,:); 0 0 f(2,:); 0 0 f(3,:) ; 0 0 0 0 0];y=smartsmooth(x,f);bool=allall(yans==y);reporttest('SMARTSMOOTH delta-function off-center in 5x5 matrix, asymmetric filter',bool);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -