www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/eml/private/parseModwptInputs.m
function [lev,Lo,Hi,FullTree,TimeAlign] = parseModwptInputs( ... defaultLev,defaultWave,varargin) %MATLAB Code Generation Private Function % Copyright 1995-2016 The MathWorks, Inc. %#codegen coder.internal.prefer_const(defaultLev,defaultWave,varargin); coder.inline('always'); ZERO = coder.internal.indexInt(0); TimeAlign = false; % default TimeAlign FullTree = false; % default FullTree wnameSupplied = false; filterSupplied = false; ignoreWname = false; levSupplied = false; ntffilters = ZERO; readTimeAlign = false; TimeAlignSupplied = false; readFullTree = false; FullTreeSupplied = false; lev = coder.internal.indexInt(defaultLev); for k = coder.unroll(1:length(varargin)) % Check for 'reflection' boundary if readTimeAlign TimeAlign = varargin{k} ~= 0; readTimeAlign = false; TimeAlignSupplied = true; elseif readFullTree FullTree = varargin{k} ~= 0; readFullTree = false; FullTreeSupplied = true; elseif ischar(varargin{k}) if nargout >= 5 && ~TimeAlignSupplied && ... strncmpi(varargin{k},'TimeAlign',length(varargin{k})) readTimeAlign = true; elseif nargout >= 4 && ~FullTreeSupplied && ... strncmpi(varargin{k},'FullTree',length(varargin{k})) readFullTree = true; elseif ~wnameSupplied wname = varargin{k}; wnameSupplied = true; else % The number of wavelet names supplied must be exactly one, or % else we ignore it. ignoreWname = true; end elseif coder.internal.isConst(isscalar(varargin{k})) && ... isscalar(varargin{k}) && ~levSupplied % Any scalar input must be the level lev = coder.internal.indexInt(varargin{k}); levSupplied = true; elseif isnumeric(varargin{k}) % If the user specifies a filter, use that instead of default % wavelet. ntffilters = ntffilters + 1; coder.internal.assert(ntffilters <= 2, ... 'Wavelet:modwt:Invalid_Numeric'); % If there are at least two numeric inputs, the first two must be % the scaling and wavelet filters if ntffilters == 1 Lo = varargin{k}; elseif ntffilters == 2 Hi = varargin{k}; filterSupplied = true; ignoreWname = true; end end end if filterSupplied coder.internal.assert(~wnameSupplied, ... 'Wavelet:FunctionInput:InvalidWavFilter'); coder.internal.assert(ntffilters == 2, ... 'Wavelet:modwt:Invalid_Numeric'); coder.internal.assert(length(Lo) >= 2 && length(Hi) >= 2, ... 'Wavelet:modwt:Invalid_Filt_Length'); % Ensure that Lo and Hi satisfy the orthogonality conditions coder.internal.assert(checkModwtFilter(Lo,Hi), ... 'Wavelet:modwt:Orth_Filt'); else if ~wnameSupplied || ignoreWname wname = defaultWave; end [~,~,Lo,Hi] = wfiltersConst(wname); wtype = coder.const(feval('wavemngr','type',wname)); coder.internal.assert(wtype == 1,'Wavelet:modwt:Orth_Filt'); end %--------------------------------------------------------------------------