# How to construct Diffusion Wavelet Packets?

I understand the idea of constructing Low-pass and High-pass filters as a projection on the Numerical Range and Numerical Kernel of dyadic powers of a diffusion operator in the work Diffusion Wavelet Packets.

This can be represented as a tree and is implemented here: https://github.com/aweinstein/dw/blob/master/Wavelets/DWPTree.m

I don't understand how to split each $W_{j}$. To my understanding I could make another QR decomposition, as is done for the $V_{j}$ subspace at level $J$.

The authors say (in the end of section 4 of the above mentioned article) to choose each $W_{j}$'s children as having the same dimension.

The problem is: they don't explain why and how to do this splitting, so I started to read the code on github.

In line 404, using a handle to function DefaultSplitFcn, I found a method nowhere explained in articles or lectures about diffusion wavelets.

Using the researches' words (line 503, DefaultSplitFcn function):

Averages the endpoints of the approximate frequency range of the node

My questions are: why can I do this?