wavefast.m

来自「开发的两个小波变换函数对图像进行小波变换」· M 代码 · 共 39 行

M
39
字号
function [c,s]=wavefast(x,n,varargin)
error(nargchk(3,4,nargin));
if nargin==3
     if ischar(varargin{1})
         [lp,hp]=wavefilter(varargin{1},'d');
     else
         error('missing wavelet name.');
     end
 else
     lp=varargin{1};hp=varargin{2};
 end
 f1=length(lp); sx=size(x);
 if(ndims(x)~=2)|(min(sx)<2)|~isreal(x)|~isnumeric(x)
     error('x must be a real,numeric matrix.');
 end
 if (ndims(lp)~=2)|~isreal(lp)|~isnumeric(lp)...
         |(ndims(hp)~=2)|~isreal(hp)|~isnumeric(hp)...
         |(f1~=length(hp))|rom(f1,2)~=0
     error(['lp and hp must be even and equal length real,'...
             'numeric filter vectors.']);
 end
 if ~isreal(n)|~isnumeric(n)|(n<1)|(n>log2(max(sx)))
     error(['n must be a real scalar between 1 and'...
             'log2(max(size((x))).']);
 end
 c=[]; s=sx; app=double(x);
 for i=1:n
     [app,keep]=symextend(app,f1);
     rows=symconv(app,hp,'row',f1,keep);
     coefs=symconv(rows,hp,'col',f1,keep);
     c=[coefs(:)' c];s=[size(coefs);s];
     coefs=symconv(rows,lp,'col',f1,keep);
     c=[coefs(:)' c];
     rows=symconv(app,lp,'row',f1,keep);
     coefs=symconv(rows,hp,'col',f1,keep);
     c=[coefs(:)' c];
     app=symconv(rows,lp,'col',f1,keep);
 end
 c=[app(:)' c];s=[size(app);s];

⌨️ 快捷键说明

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