Hello Konoha,
I understand that you are interested in exploring the scaling and normalization of wavelet coefficients within the multi-level wavelet decomposition.
When you perform a multi-level wavelet decomposition in MATLAB:
- The signal is processed with two filters: a low-pass filter (scaling function) and a high-pass filter (wavelet function).
- The filtered signal is then downsampled by half, which is a key step in wavelet decomposition.
For the normalization and scaling of wavelet coefficients:
- The scaling function is normalized so that it integrates to one, helping to preserve the signal's energy.
- Downsampling can affect the energy of the signal if not compensated for, but this is taken care of in the wavelet transform.
In MATLAB's Wavelet Toolbox:
- Functions like "wavedec" for 1-D signals and "wavedec2" for 2-D signals, automatically handle normalization to ensure energy preservation.
- The filters used are designed to keep the energy consistent across decomposition levels.
- Users generally do not need to manually adjust coefficients for energy preservation.
Here is an example script that performs a two-level decomposition on a simple 1D signal using the Haar wavelet and checks the energy preservation:
signal = [1, 3, -2, 4, -1, 5, 3, -3];
original_energy = sum(signal.^2);
[C, L] = wavedec(signal, 2, 'haar');
A2 = appcoef(C, L, 'haar', 2);
transformed_energy = sum(A2.^2) + sum(D2.^2) + sum(D1.^2);
disp(['Original Energy: ', num2str(original_energy)]);
disp(['Transformed Energy: ', num2str(transformed_energy)]);
To know more about the amplitude changes and ensure you are interpreting the results correctly, you can additionally refer to the MathWorks documentation:
I hope this helps!