📄 wavefast.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -