MATLAB Answers

Jakub
1

Why is wcoher function not reccomended?

Asked by Jakub
on 24 Mar 2016
Latest activity Commented on by Thomas Richards on 24 Jan 2018
Why in the new release of Matlab wcoher is not reccomended and wcoherence should be used instead? I did not find explanation anywhere.

  1 Comment

I also find this recent move in the r2016a wavelet toolbox quite frustrating.
The old cwt function also falls under the "not recomended" having been replaced by a function with the same name (cwt) which has less featutes then the old cwt as far as wavelet selection is concerned and also scale selection. But I have a theory about this recent move.
The Mathworks wanted to introduce synchrosqueezed wavelet transform /reassignement which honestly were features the wavelet community has been looking for in the wavelet toolbox. Well, matlab code for synchrosqueezing /reassignement has been around for quite a while using the Torrence et al. matlab code infraestrure.
This code has limitations, namely in the reduced aceptable wavelet families and in the way the scales are inputed to the algorithm using the voices concept, which realy puts off many users. In that regard when, several years ago the wavelet toolbox introduced the cwt (now called "old and not reccomended") the algorithm acepted user selectable scales and many orthogonal and non orthogonal wavelets. A breeze for many developers transitioning from the fourier based time-frequêncy analysis to the wavelet based time-scale analysis.
Many matlab users were expecting synchrosqueezing /reassignement being implemented if not as options in the old cwt function, or separated functions.
Well looks like the mathworks created a new cwt (same name as the old, no less)just recycling the old Torrence code, for which had to remove important features.

Sign in to comment.

1 Answer

Answer by Wayne King
on 13 Oct 2016
Edited by Wayne King
on 13 Oct 2016

Hi Jakub and Paramonte,
Jakub to answer your question, the new wcoherence is much more robust in its estimation of the phase between the two signals and the wavelet coherence than the older algorithm. Specifically, it is critically important in wavelet coherence to smooth the estimates both in time and scale. This is a similar situation to Fourier coherence. That smoothing should be based on the analyzing wavelet. The old wcoher applied the same smoothing regardless of wavelet. You really should write in a separate smoothing for each wavelet. Also, we have had a lot of feedback from users who have no idea how to specify scales correctly. The say, my data is sampled at such and such sampling rate and I want to find phenomena in this frequency range how do I determine which scales to specify. WCOHER provided no defaults in terms of scale. The new WCOHERENCE allows you to simply input a sampling rate, or a sampling interval if you like to think in periods as opposed to frequency.
For Paramonte, there was already CWTFT in the toolbox for a number of releases that used an FFT-based algorithm (that DFT-based approach to the CWT long preceded Torrence and Compo by the way). The new CWT algorithm features Morse wavelets, which have parameters that can be adjusted to give a very large family of analytic wavelets. In fact, most analytic wavelets in use are just special cases of Morse wavelets as was proved by Lilly and Olhede. We have received a lot of feedback from customers that they are confused by having to specify scales and in fact they quite often get the scale concept wrong and use scales that don't allow them to actually find the phenomena they are looking for. The old CWT had absolutely no defaults. The user had the burden of specifying everything. As I mentioned for many non-experts, having to pick a wavelet was daunting, never mind having to construct a meaningful scale vector. Scale for the wavelet transform should be logarithmically spaced for example and the scales should take into account the support of the wavelet. Neither of those things were built into the old CWT.
For time-frequency (time-scale) analysis which is a major use case for continuous wavelet analysis, many of the orthogonal or biorthogonal wavelets which are quite useful for discrete analysis are inappropriate and lead in many instances to people obtaining a misleading analysis of their data. Orthogonal and biorthogonal wavelets are designed for dyadic scales, which are much more widely spaced that the typical scales in continuous wavelet analysis.
Having said all that, if you want to use the old CWT, that interface still works. In fact, the new CWT parses the input and determines if you are using the old syntax. If so, it will give you the older algorithm. Finally to both of you, I would sincerely welcome the opportunity to discuss these things further. For Jakub, I can concretely demonstrate the advantage of WCOHERENCE over WCOHER. Both of you, feel free to contact me through my profile. I will respond. Paramonte, I would very much be interested in any specific use cases where the old CWT allows one to obtain some insight not obtainable with the new CWT. I am always very interested in getting feedback from users on how to make things better.
We never "not recommend" something lightly. That is not to say that somehow we are infallible, but a lot of thought and customer feedback goes into those decisions.
Hope that helps, Wayne

  1 Comment

Are the wavelet transforms used for the wcoherence() function the same as the wavelets generated with the cwt() function? Would the default inputs be the same?

Sign in to comment.