2
$\begingroup$

I was wondering if anyone may know of any method for the construction of a 3D wavelet transform in matrix form? I've been able to build matrices to perform 1D & 2D transforms. Yet, am finding very little resources regarding the 3D case in the literature.

$\endgroup$
5
  • $\begingroup$ It might be that you need tensors (3D blocks of numbers) and not matrices. reading this superficially:en.m.wikipedia.org/wiki/… there is a quote “The discrete wavelet transform is extended to the multidimensional case using the tensor product of well known 1-D wavelets. In 2-D for example, the tensor product space for 2-D is decomposed into four tensor product vector spaces” $\endgroup$ Commented Jul 27, 2023 at 13:42
  • $\begingroup$ I’m not actually familiar with this area of math/signal processing so let’s wait for an expert but can you edit your question to explicitly show what the 1D and 2D matrix cases are, if I see an obvious pattern that suggests a tensor product I might be able to construct your 3D example $\endgroup$ Commented Jul 27, 2023 at 13:43
  • $\begingroup$ Sure thing! I'll provide some the results I have now for those cases in a moment (at work currently). But thanks so much for the help! $\endgroup$
    – hubble
    Commented Jul 27, 2023 at 15:15
  • $\begingroup$ If I may ask, why do you need it in matrix form? $\endgroup$ Commented Jul 28, 2023 at 19:37
  • $\begingroup$ @AnonSubmitter85 This is purely just a pedagogical exercise for myself to understand how one could build these matrices manually. $\endgroup$
    – hubble
    Commented Jul 31, 2023 at 14:21

1 Answer 1

1
$\begingroup$

In general, if you want to construct the matrix form of a linear operator, you can always apply the operator to the sequence of basis vectors. The result for each basis vector is the corresponding column of the matrix.

For example, let $f(\mathbf{x}) : \mathbb{C}^N \rightarrow \mathbb{C}^N$ be some general linear operator. If we wanted to construct the $N \times N$ matrix representation, we could do so computing the $i^\mathrm{th}$ column as $f(\mathbf{e}_i)$, where $\mathbf{e}_i$ is the $i^\mathrm{th}$ standard basis vector (i.e., all zeros except a one at element $i$). This works since for any matrix $\mathbf{A}$, the product $\mathbf{A} \mathbf{e}_i$ is simply the $i^\mathrm{th}$ column of $\mathbf{A}$.

Note that you can do this for 1-D, 2-D, 3-D, etc. problems by stacking the dimensions on top of one another into a single vector. However, the size of your matrix will quickly grow out of control. For example, consider an $L \times P$ image. The matrix representation for a 2-D DFT of this image will be $LP \times LP$.

If you want the matrix representation so that you can use it in a system solver that requires the adjoint of an operator in order to compute the solution, you should handle that with function handles and avoid explicitly forming the matrix.

$\endgroup$
1
  • $\begingroup$ Thanks for this! I have done this and am able to get the desired result, however, I'm seeking a method that allows one to manually build the matrix so compute each sub-signal such as this paper: ( ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5553961 ) $\endgroup$
    – hubble
    Commented Jul 31, 2023 at 14:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.