Closed dsweber2 closed 4 years ago
Travis seems to be having issues with conv, since it's using the nightly build of v0.7. This has been moved to DSP. Since Wavelets.jl is part of this, I'm hesitant to just add using DSP
at the top of Wavelets.jl
Thanks for that. I haven't had time to look at it, but I think it's fine to depend on DSP (conditionally, depending on the version). I hope I can review this in detail soon.
So all the tests work, and I actually included a Project.toml
and a Manifest.toml
. I'm getting tired of referring people to my fork, as its a bit more of a pain for them to install, and there have been several people asking about having this functionality. What more would you need to see to have this included?
Thank you very much for having the patience to work on this for almost (sorry for that) 2 years. 👍 I don't use really use Julia much nowadays and it looks like you know what you are doing and are up to date with the ecosystem, so I will merge this now.
This did need quite a bit of work. To double check his functions, I compared with the methods of Wavelab implemented in MATLAB, and eventually Wikipedia, which had an implementation that was more sampling agnostic (no dt needed).
In so doing, I had to add a couple of parameters to the Morlet wavelet, since these are of a different type from those of the DOG or Paul wavelet. I would also like to add some aliases for various types of DOGs, e.g. mexh, which is dog2, but I'm not entirely sure how to do this neatly. Your thoughts would be appreciated.
One thing that I wasn't sure about was whether I should index by frequency or scale; I opted for scale, but it shouldn't be difficult to change to match with the rest of your code if the rest of the package differs.
I haven't included any plotting functions because I prefer to use plots.jl heatmaps for plotting.
As for tests, I added ones to make sure the size was correct, to check the types are right (always a complex version of whatever is put in), to make sure the parametric ones don't have types of giant size, and to check that nonsense wavelet classes aren't accepted as input. I'm not entirely sure how to perform accuracy tests, since I haven't done inversion (I may get around to it eventually, it isn't as natural an operation as for the orthogonal families), and the implementation is a little different from that of Wavelab. Visually, it has the behavior I would expect on the bump example.
I haven't added anything to the Readme, since I wanted to wait until things weren't changing.