Is it correct to increase the number of voices per octave above 48 when using the wsst function?

2 views (last 30 days)
I am using the wsst( ) function and I need to improve the resolution of my results by increasing the number of voices per octave above 48; which is the maximum allowed. I have checked the code of the function and found that it is only hard-limiting this number on the input, so I would be able to modify it, but I am not aware if there are other processing consequences of this action.
In other words, is this limitation of 48 voices per octave a mere fact of limitations due to resources or it can be increased without any issue?

Answers (1)

praguna manvi
praguna manvi on 10 Sep 2024
Edited: praguna manvi on 10 Sep 2024
As per my understanding, you are aiming to increase the resolution your result using the “wsst” function. Please note that modifying the “wsst” function can have unintended consequences, as it calls the “cwtfilterbank” function, which performs inclusivity checks on the “VoicesPerOctave” parameter. You can find its description in the documentation below under the output arguments and also in the “wsst” function’s code:
According to the documentation, the maximum and minimum scales specified by “VoicesPerOctave” are automatically determined by the energy spread of the wavelet in frequency and time; hence, the range is fixed between [1, 48]:
And it is possible to achieve more resolution by varying the sampling frequency and adjusting the “SamplingFrequency” and “Wavelet” parameters.
Increasing the “VoicesPerOctave” parameter can result in the computation of a large matrix that replicates the 1-D time series data D, over N_s, where N_s is the number of scales in obtained in the output of “wsst”. This leads to an output size of N_s x numel(D), which could be memory-intensive for large time series.
  1 Comment
Marc Heras Puig
Marc Heras Puig on 19 Sep 2024
I appreciate your response, but there are some aspects of it which I am not able to fully understand.
I have checked the code in the wsst.m script and I am not able to find any reference to the "cwtfilterbank" function. In addition to this, shouldn't I receive a warning or an error message from the checks on the VoicesPerOctave parameter if the value I use is not in the desired range?
I removed the limit of 48 voices from the wsst function by creating a new one. I have also compared the results between a regular stft result of the same signals and the ones from the wsst function I used with 256 voices per octave, and they seem to be coherent. Matlab doesn't return any warning or error concerning number of voices.
Can I consider that the values I obtain are correct? Is there any other aspect that could be providing me misleading results which would appear to be correct?

Sign in to comment.

Products


Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!