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

답변 (1개)

Satyam
Satyam 2026년 3월 11일

0 개 추천

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

카테고리

제품

릴리스

R2025b

질문:

2026년 2월 28일

답변:

2026년 3월 11일

Community Treasure Hunt

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

Start Hunting!

Translated by