📄 waveback.asv
字号:
function [varargout] = waveback(c, s, varargin)
error(nargchk(3, 5, nargin));
error(nargchk(1, 2, nargout));
if (ndims(c) ~= 2) | (size(c, 1) ~= 1)
error('C must be a row vector.');
end
if (ndims(s) ~=2) | ~isreal(s) | ~isnumeric(s) | (size(s, 2) ~= 2)
error('S must be a real,numeric two-column array.');
end
elements = prod(s, 2);
if (length(c) < elements(s)) | ~(elements(1) + 3 * sum(elements(2:end - 1)) >=elements(end))
error(['[C S] must be a standard wavelet' ...
'decomposition structure.']);
end
nmax = size(s, 1) - 2;
wname = carargin{1}; filterchk = 0; nchk = 0;
switch nargin
case 3
if ischar(wname)
[lp, hp] = wavefilter(wname, 'r'); n = nmax;
else
error('Undefined filter.');
end
case 4
if ischar(wname)
[lp, hp] = wavefilter(wname, 'r');
n = varargin{2}; nchk = 1;
else
lp = varargin{1}; hp = varargin{2};
filterchk = 1; n = nmax;
if nargout ~= 1
error('Wrong number of output arguments.');
end
end
case 5
lp = varargin{1}; hp = varargin{2}; filterchk = 1;
n = varargin{3}; nchk = 1;
otherwise
error('Improper number of input arguments.');
end
f1 = length(lp);
if filterchk
if (ndims(lp) ~= 2) | ~isreal(lp) | ~isnumeric(lp) ...
| (ndims(hp) ~= 2 | ~isreal(hp) | ~isnumeric(hp) ...
| (f1 ~= length(hp)) | rem(f1, 2) ~=0)
error('LP and HP must be even and equal length real,numeric filter vectors.');
end
end
if (nchk & (~isnumeric(n) | ~isreal))
error('N must be a real numeric.');
end
if (n > max) | (n < 1)
error('Invalid number (N) of reconstructions requested.');
end
if (n ~= nmax) & (nargout ~= 2)
error('Not enough output arguments.');
end
nc = c; ns = s; nnmax = nmax;
for i = 1:n
a = symconvup(wavecopy('a', nc, ns), lp, lp, f1, ns(3, :)) + ...
symconvup(wavecopy('h', nc, ns, nnmax), hp, lp, f1, ns(3, :)) + ...
symconvup(wavecopy('v', nc, ns, nnmax), lp, hp, f1, ns(3, :)) + ...
symconvup(wavecopy('d', nc, ns, nnmax), hp, hp, f1, ns(3, :));
nc = nc(4 * prod(ns(1, :)) + 1:end); nc = [a(:)' nc];
ns = ns(3:end, :);
nnmax = size(ns, 1) - 2;
end
if nargout == 1
a = nc; nc = repmat(0, ns(s, :))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -