Energy conservation in Discrete stationary wavelet transform (SWT)

13 visualizaciones (últimos 30 días)
DrMex
DrMex el 7 de Sept. de 2012
Respondida: Jonah Padawer-Curry el 26 de Ag. de 2018
Hi,
I have a question regarding the energy conservation property when we are using the Discrete Stationary Wavelet Transform (SWT).
First, I want to use the SWT because its shift invariance property, the conventional DWT doesn't have it (the DWT of a translated version of a signal X is not, in general, the translated version of the DWT of X, but if we use the SWT it is).
Second, the problem. With the SWT we can decompose a signal into aproximations and details coefficients. For example, if we choose 3 levels we would have: cA3, cD3, cD2 and cD1. We can compute the energy of each of them. In theory, the summation of the energies has to be equal to the energy of the signal. Energy(signal)=Energy(cA3)+Energy(cD3)+Energy(cD2)+Energy(cD1). However, I don't achieve that.
Here is the code with an example:
close all;clear all;clc;
load leleccum;
signal = leleccum(1:3968);
%Change a little bit the signal.
signal(1:7:end)=5*signal(1:7:end);
MotherWavelet='sym5';
nLevels=7;
%Decomposition
[SWA,SWD] = swt(signal,nLevels,MotherWavelet);
% The matrix SWA(i,:) contains the approximation coefficients of level i
% The matrix SWD(i,:) contains the detail coefficients of level i.
%
% In theory the sum of energies has to be the energy of the original signal
% Energy(signal)=Energy(cA7)+Energy(cD7)+Energy(cD6)+...+Energy(cD1)
Energy_Signal=sum(signal.^2) %Energy of the signal
Ea=sum(SWA(nLevels,:).^2); %The energy of cA7 in our case
for k=1:nLevels
E(k)=sum(SWD(k,:).^2); %The energy of cDk
end
Energy_coefficients=Ea+sum(E) %The sum of each energy
The result of the above code results in:
Energy_Signal = 2.3414e+009
Energy_coefficients = 1.7013e+011
Am I doing something wrong? Am I missing something?
Thank you.

Respuestas (1)

Jonah Padawer-Curry
Jonah Padawer-Curry el 26 de Ag. de 2018
If I am not mistaken, using something like the stationary wavelet (also known as Maximal Overlap MRA) you are creating a transform that is redundant (take a look at the wavelet tree, and you'll see what I mean). Having a redundant transform thus means that you will have a an energy that is larger than the true energy (recall that if it is redundant then you are double counting).

Community Treasure Hunt

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

Start Hunting!

Translated by