Skip to content

Messy data structure of SIWPD #45

Description

@zengfung

Some functions on the Shift-Invariant Wavelet Packet Decomposition (SIWPD) have been implemented, but the tree structure and the best basis algorithm are quite different from the usual implementations in the standard, stationary, and the autocorrelation wavelet transforms. The latter transforms all involve binary trees (for 1D signals) and quadtrees (for 2D signals).

For SIWPD however, each level of decomposition also comes with a corresponding shifted decomposition, ie. in the case of 1D signals, each node will decompose into 2 nodes for approximate and detail coefficients of the original node, plus 2 more nodes for the approximate and detail coefficients of the right circularly shifted version (via circshift) of the node.

The current implementation is quite messy. Here's an example of the difference in tree structures between the SIWPD and the other transforms:

# 1D tree for dwt, swt, and acwt transforms for signals of length 4
3-element BitVector:
 1
 1
 1

# full tree for siwpd for the same signal
7-element Vector{BitVector}:
 [1]
 [1, 1]
 [1, 1]
 [1, 1, 1, 1]
 [1, 1, 1, 1]
 [1, 1, 1, 1]
 [1, 1, 1, 1]

Hence, the issues that need to be resolved are:

  • What data structure is best for representing the full tree for SIWPD?
  • Can we find a data structure for SIWPD trees that is similar to the BitVectors used for the standard, stationary, and autocorrelation wavelet transforms' binary and quadtrees?
  • Plot(s) to visualize the best basis of SIWPD of a signal.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

help wantedExtra attention is needed

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions