myilwt.m

来自「此为基于二代提升小波的阈值压缩算法源码」· M 代码 · 共 48 行

M
48
字号
%**************************************************************************
% 函数功能:一维提升小波反变换
% 输入参数:a为低频系数向量;d为高频系数向量,LS为使用的提升方案
% 返回值:返回重构向量x
%**************************************************************************
function x = myilwt(a,d,LS)

firstIdxAPP = 1; firstIdxDET = 1+mod(firstIdxAPP,2);
x = zeros(1,length(a)+length(d));
x(firstIdxAPP:2:end) = a;
x(firstIdxDET:2:end) = d;
if (size(a,1)>1) || (size(d,1)>1) , x = x'; end
clear a d
if ischar(LS) , LS = liftwave(LS); end

% Splitting.
lx = length(x);
idxAPP = firstIdxAPP:2:lx;
idxDET = firstIdxDET:2:lx;
lenAPP = length(idxAPP);
lenDET = length(idxDET);

%===================%
% LIFTING ALGORITHM %
%===================%
NBL = size(LS,1);
LStype = LS{NBL,3};

% Normalization.
if isempty(LStype)
    x(idxAPP) = x(idxAPP)/LS{NBL,1};
    x(idxDET) = x(idxDET)/LS{NBL,2};
end

% Reverse Lifting.
for k = NBL-1:-1:1
    liftTYPE = LS{k,1};
    liftFILT = -LS{k,2};%反变换时符号取反即可
    DF       = LS{k,3};
    switch liftTYPE
       case 'p'
           x(idxAPP) = x(idxAPP) + forecastupdate(x(idxDET),liftFILT,DF,lenAPP,LStype);
       case 'd'
           x(idxDET) = x(idxDET) + forecastupdate(x(idxAPP),liftFILT,DF,lenDET,LStype);
    end
end
%=========================================================================%

⌨️ 快捷键说明

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