# Questions about the paper titled "Rapid computation of the continuous wavelet transform by oblique projections"

This paper introduced a fast method for computing the real CWT and achieved $$O(N)$$ complexity per scale.

However, in the context of this article, I'm not sure what the definition of oblique projection is. This paper (Section II) said that there are two subspaces, i.e. (1) a space $$V(\phi_2)$$ defined by the integer shift of the scaling function $$\phi_2(t)$$, and (2) a space $$V(\phi_1)$$ defined by the integer shift of the analysis function $$\phi_1(t)$$. Specifically, the related source text is shown below

Our goal is to efficiently compute the CWT at $$P$$ scales per octave. This will be achieved by constructing a set of $$P$$ auxiliary wavelets $$\{\psi_i(t)\approx\alpha_i^{-1/2}\psi(t/\alpha_i)\}_{i=0,\ldots,P-1}$$, which are the oblique projections of the wavelets $$\{\alpha_i^{-1/2}\psi(t/\alpha_i)\}_{i=0,\ldots,P-1}$$ into a space defined by the scaling function $$\phi_2(t)$$ orthogonal to the space defined by the analysis function $$\psi_1(t)$$.

For a pair of analysis functions $$\phi_1$$ and $$\phi_2$$, the oblique projection of the wavelet $$\psi_{\alpha_i}(t)=\psi(t/\alpha_i)$$ into $$V(\phi_2)$$ orthogonal to $$V(\phi_1)$$ can be expressed in terms of the basis generated by $$\psi_2$$ and a set of coefficients $$p_{\alpha_i}(k)$$, where $$\psi_i(t)=\sum_{k\in \mathbb{Z}}p_{\alpha_i}(k)\psi_2(t-k)$$ The original wavelet is measured in terms of the analysis function $$\phi_1$$ providing the values $$q_{\alpha_i}(k) = \langle \psi_{\alpha_i}(t),\phi_1(t-k) \rangle$$

My questions are

1. Does the fact that $$V(\phi_1)$$ and $$V(\phi_2)$$ are orthogonal to each other imply that $$\phi_1$$ and $$\phi_2$$ are orthogonal?
2. Does the oblique projection mean that $$\phi_2(t-k)$$ and $$\phi_2(t-l)$$ are not orthogonal to each other, where $$l$$ and $$k$$ are integers?
3. Are the analysis functions $$\phi_1(t-k)$$ and $$\phi_1(t-l)$$ are orthogonal to each other?

My understanding of what's going on: they seek some function, $$h(\omega)$$, such adding up its scaled time-shifts produces wavelets, $$\psi(\omega)$$. Note, $$h(\omega)$$ must tile all of $$\omega$$, or at least $$\omega > 0$$ for real-valued $$x(t)$$ input. I can see this as possible; right is a few unweighted translations of left added to itself:

Certainly doesn't look like a wavelet, but we can see how a properly chosen $$h(\omega)$$, and weights, would work. For a shift by $$+k$$ in time, we're adding $$h(\omega)e^{-j\omega k}$$ in frequency, and we need to add $$+k$$ and $$-k$$ to keep $$h(\omega)$$ real-valued if it started as real-valued. It's also why $$h(\omega)$$ must hit every $$\omega$$, since $$\cdot e^{-j\omega k}$$ can't fix zeros.

To your questions, I'm not familiar with functional spaces, but brief reading suggests they're basically analogues of vector spaces, so I'll treat $$\varphi$$ as a vector where relevant.

1. Usually yes, "$$V$$" is defined by $$\varphi$$ (i.e. produced by scaled sums of its elements). However here it's defined differently

$$V(\varphi) = \left\{ h(t) = \sum_{k \in \mathrm{Z}} c(k) \varphi(t - k)\right\}$$

so instead, we can say that $$h_1(t)$$ and $$h_2(t)$$ are orthogonal.

1. Maybe. In general, such shifts may be orthogonal - but considering "orthogonal" = inner product is zero = $$(\hat\varphi_2(\omega)e^{j\omega k} * \hat\varphi_2(\omega)e^{j\omega l})[0] = 0$$, and $$\varphi_2$$ is the $$h$$, this seems unlikely, and the paper doesn't appear to make use of such orthogonality anywhere. Instead, $$\varphi_2$$ is referred to as a scaling function and splines, whose integer shifts generally aren't orthogonal.
To comment on performance aspect, I'm not convinced: this neat trick isn't as fast relative to FFT as one might expect. As we need an even number of scaled additions, and I can't imagine an $$h(\omega)$$ where only two additions suffice, it's safe to say we require at least four additions. For real-valued convolutions and $$N=131,072$$, this makes the method only twice as fast, and for complex (in time) wavelets, only x1.15 faster, per my benchmarks.