In case of continuous wavelet transform (CWT), the wavelets are generated from the mother wavelet by scaling and translation. To achieve energy normalization and to ensure that all wavelets have the same energy regardless of their scales, each wavelet is divided by the square root of the the scale S. In case of discrete wavelet transform, as shown in the attached figure, the energy of the wavelet having 4B bandwidth at the first scale is twice the energy of the wavelet having a bandwidth 2B at the second scale, and so on. Thus, the energy is not equal at different scales. How energy is normalized at different scales in case of DWT?
It's just the same like in CWT:
multiply with one over square-root of the scale.
Here is why
The energy is defined as:
E = Sum(abs(x0(t))^2)
Be x0(t,B) a discrete wavelet function as you defined above that doubles the energy for doubling the B.
Choosing a fixed B and try to change function x0(t,B) to a new function x(t,B) that has the same Energy as x0(t,B) at B=1:
E(B=1) = Sum(abs(x0(t,B))^2) = Econst
As stated by you energy increases linear with increase of B:
E(B) = B * Econst = B * Sum(abs(x0(t,B0))^2)
To get E independent of B introduce a compensation factor a(B):
E(B) = Econst = B * Econst * a(B)
a(B) = 1/B
This can be transformed to:
Econst = B * 1/B * Sum(abs(x0(t,B))^2) = B * Sum(1/B * abs(x0(t,B))^2)
1/B = (1/sqrt(B))^2
Pulling the term in to the square:
Econst = B * Sum( abs(1/sqrt(B)*x0(t,B))^2 )
Therefore the new energy-normalized function x(t,B) is:
x(t,B) = 1/sqrt(B) * x0(t,B)