www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/eml/idwt.m

    function x = idwt(a,d,varargin)
%MATLAB Code Generation Library Function

%   Copyright 1995-2016 The MathWorks, Inc.
%#codegen

narginchk(3,9)
coder.internal.prefer_const(varargin);
% Check arguments.
[Lo_R,Hi_R,dwtEXTM,shift,lx] = parseinputs(varargin{:});
NONEMPTYA = ~isempty(a);
NONEMPTYD = ~isempty(d);
if NONEMPTYA
    % Reconstructed Approximation and Detail.
    x = upsconv1(a,Lo_R,lx,dwtEXTM,shift);
    if NONEMPTYD
        x = x + upsconv1(d,Hi_R,lx,dwtEXTM,shift);
    end
elseif NONEMPTYD
    % Reconstructed Approximation and Detail.
    x = upsconv1(d,Hi_R,lx,dwtEXTM,shift);
else
    xtype = coder.internal.scalarEg(a,d);
    x = zeros(size(a),'like',xtype);
end

%--------------------------------------------------------------------------

function [Lo_R,Hi_R,dwtEXTM,shift,lx] = parseinputs(varargin)
coder.internal.prefer_const(varargin);
if ischar(varargin{1})
    [Lo_R,Hi_R] = wfiltersConst(varargin{1},'r');
    next = coder.internal.indexInt(2);
else
    Lo_R = varargin{1};
    Hi_R = varargin{2};
    next = coder.internal.indexInt(3);
end
% Find lx, if supplied.
ilx = coder.const(findNonChar(varargin{next:nargin}));
next = next + ilx;
if ilx == 0
    % lx not supplied.
    lx = zeros(1,0);
else
    lx = varargin{next - 1};
end
% Check arguments for Extension and Shift.
[dwtEXTM_default,shift_default] = defaultDWTExtModeAndShift(1);
parms = struct( ...
    'mode',uint32(0), ...
    'shift',uint32(0));
poptions = struct( ...
    'CaseSensitivity',true, ...
    'PartialMatching','none', ...
    'StructExpand',false, ...
    'IgnoreNulls',false);
pstruct = coder.internal.parseParameterInputs(parms,poptions, ...
    varargin{next:end});
dwtEXTM = coder.internal.getParameterValue(pstruct.mode, ...
    dwtEXTM_default,varargin{next:end});
shift_input = coder.internal.indexInt(coder.internal.getParameterValue( ...
    pstruct.shift,shift_default,varargin{next:end}));
shift = eml_bitand(shift_input,coder.internal.indexInt(1));

%--------------------------------------------------------------------------

function idx = findNonChar(varargin)
% Return the index of the first non-char input, if any, otherwise 0.
idx = 0;
for k = coder.unroll(1:nargin)
    if ~ischar(varargin{k})
        idx = k;
        break
    end
end

%--------------------------------------------------------------------------