Energy conservation in Discrete stationary wavelet transform (SWT)
13 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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.
0 comentarios
Respuestas (1)
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).
0 comentarios
Ver también
Categorías
Más información sobre Signal Analysis en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!