Open carlosayam opened 7 years ago
I think you are saying that the coordinates should be different for the wavelet by an integer shift? As a concrete example, for 'db2' the current xs
is in the range [0, 3] while for the wavelet, xs_phi
should be in the range [-1, 2]?
Additional contributors to the project are always welcome. The wavefun
function is not one I have personally worked on. If you are interested in improving it, that would be appreciated. I would start by making a simple PR regarding just adding the xs_phi
output to wavefun. Any new features can go in a separate PR.
probably something for custom wavelets
I think this already can be done? e.g. assuming you have a set of FIR filters defined:
w = pywt.Wavelet('my_wavelet', filterbank=(dec_lo, dec_hi, rec_lo, rec_hi))
w.orthogonal = True
phi, psi, xs_phi = w.wavefun()
Yes, that's what I meant. I will do a PR to have separate xs_phi
and xs_psi
in the output on wavefun.
I am using wavelets outside the context of filtering, as general approximation functions, and that information is critical for any algorithm working with them.
I will investigate is there is an easy way to infer support for father and mother wavelets from the filter definition; if I find something will use it.
Thanks for being open to this change :)
Also, keep in mind that this change will impact the "wavelet browser" site (is in this same repo, isn't it?)
I am using wavelets outside the context of filtering, as general approximation functions, and that information is critical for any algorithm working with them.
Great. If you have any simple demo along those lines that uses the new xs_phi
, you could add a file to the demo
subfolder of the repository to illustrate its use.
Also, keep in mind that this change will impact the "wavelet browser" site (is in this same repo, isn't it?)
Actually, that site was created long ago and I don't believe it is any longer actively maintained. For instance, there are additional Debauchies (up to db38
) and Coiflet (up to coif17
) wavelets available in PyWavelets that do not show up on that site. We should update the documentation to reflect that.
demo/plot_wavelets_pyqtgraph.py
is a demo (requiring PyQtGraph) that serves a similar function and plots all of the current discrete wavelets. The older demo/plot_wavelets.py
only requires Matplotlib, but does not plot every wavelet in each family. Those two functions would be very easy to update to use xs_phi
in the plots for the wavelets.
Thanks Gregory for your guidance; I will get onto it.
As can be seen here, the values returned by wave.wavefun although correct in 𝜙 and ψ, have wrong values for
xs
as they are only valid for the scaling function, not the wavelet. As I see it, fixing this requires a breaking change in APIphi, psi, xs_phi, xs_psi = wave.wavefun(...)
and of course putting into place code for compactly supported wavelets, some sensible alternative for wavelets without compact support, and probably something for custom wavelets.
Happy to contribute with this or any alternative API change or addition that addresses this.