📄 mylwt.m
字号:
%**************************************************************************
% 函数功能:计算信号x的一维提升小波变换
% 输入参数:x为原始输入数据;LS为所用小波的提升方案,也可给定提升小波的名称;level为小波分解的级数,默认为1
% 返回值:尺度系数及小波系数交织存储的矩阵x_inplace
%**************************************************************************
function x_inplace = MyLwt(x,LS,level)
if ischar(LS) , LS = LiftScheme(LS); end
%===================%
% LIFTING ALGORITHM %
%===================%
% lazy小波变换.
lx = length(x);
firstIdxAPP = 1;
firstIdxDET = 1+mod(firstIdxAPP,2);
idxAPP = firstIdxAPP:2:lx;%奇数序列
idxDET = firstIdxDET:2:lx;%偶数序列
lenAPP = length(idxAPP);
lenDET = length(idxDET);
% Lifting.
NBL = size(LS,1);
LStype = LS{NBL,3};%决定是否进行整数提升小波变换
for k = 1:NBL-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
% Normalization.
if isempty(LStype)
x(idxAPP) = LS{NBL,1}*x(idxAPP);
x(idxDET) = LS{NBL,2}*x(idxDET);
end
%========================================================================%
% Recursion if level > 1.
if level>1
x(idxAPP) = MyLwt(x(idxAPP),LS,level-1);
end
x_inplace =x;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -