lifting Scheme Equations for sym4 dwt

I am using MATLAB’s lwt function with the Symlet 4 (sym4) lifting scheme. The documentation is unclear, and I am having trouble understanding the exact lifting equations.
Could anyone please provide the explicit equations for the five lifting steps (predict and update) and the final scaling for Sym4, including the correct indexing for each step? I need this for verification and fixed-point implementation for Hardware.
%split:
even[n] = s[2n]
odd[n] = s[2n+1]
%predict1:
odd[n] := odd[n] 0.3911 * even[n]
%update1:
even[n] := even[n] + (0.1244)·odd[n+1] + (0.3392)·odd[n]
%predict2:
odd[n] := odd[n] (1.4195·even[n] + 0.1620·even[n1])
%update2:
even[n] := even[n] + 0.4313·odd[n] + 0.1460·odd[n1]
%predict3:
odd[n] := odd[n] (1.0493·even[n+1])
%scaling:
ca[n] = K1 · even[n] with K1 = 1.5707 (approximation / low-pass)
cd[n] = K2 · odd[n] with K2 = 0.6367 (detail / high-pass)
these are the equations am currently working with but am not sure about the indexing if its causal or needs lookahead i can't determine it for each stage, the coefficients are correct they're from the Matlab output so i need your help correcting them

Answers (1)

Satyam
Satyam on 11 Mar 2026 at 9:39
Hi Ayman,
To implement the Symlet-4 lifting scheme used by MATLAB’s lwt, you can follow the lifting steps below. The indexing shows the data dependencies required for implementation: Predict1 is causal, Update1 and Predict3 require one-sample look-ahead, while Predict2 and Update2 require one-sample look-back, which is important when designing fixed-point or hardware pipelines. The complete sequence can be written as:
% Split
even[n] = s[2n]
odd[n] = s[2n+1]
% Predict1 (causal)
odd[n] = odd[n] - 0.3911 * even[n]
% Update1 (look-ahead)
even[n] = even[n] - 0.3392 * odd[n] - 0.1244 * odd[n+1]
% Predict2 (look-back)
odd[n] = odd[n] + 1.4195 * even[n] - 0.1620 * even[n-1]
% Update2 (look-back)
even[n] = even[n] + 0.4313 * odd[n] + 0.1460 * odd[n-1]
% Predict3 (look-ahead)
odd[n] = odd[n] + 1.0493 * even[n+1]
% Scaling
ca[n] = 1.5707 * even[n]
cd[n] = 0.6367 * odd[n]
In practice, this means the implementation typically needs delay registers for n-1 terms and small buffers for n+1 terms. The lifting formulation and usage details are described in the official documentation: https://www.mathworks.com/help/wavelet/ref/lwt.html

Categories

Find more on Wavelet Toolbox in Help Center and File Exchange

Products

Release

R2025b

Asked:

on 28 Feb 2026 at 16:40

Answered:

on 11 Mar 2026 at 9:39

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!