Increasing Frequency Resolution of CWT

8 visualizzazioni (ultimi 30 giorni)
I am using the cwt function in MATLAB's wavelet toolbox to compute the power spectrum of a signal. I am using the complex Morlet wavelet ('cmor') and my scales are 15:45. The results I currently get have excellent temporal resolution, but poor frequency resolution. I would like to sacrifice some temporal resolution to improve the frequency resolution. As I understand it, the way to do this is to use a wider wavelet, corresponding to an increased sigma, or standard deviation, value of the wavelet. Is there any way to adjust the sigma value used for the transform?
  1 Commento
Kevin
Kevin il 14 Lug 2011
To elaborate, I've determined that the wavefun.m is the function within the toolbox that generates the wavelet:
[out1,out2] = feval(fname,lb,ub,np,wname);
The 5 input arguments are defined earlier in the function as follows:
fname = morlet
lb = -8
ub = 8
np = 1024
wname = morl
However, I don't know how the feval command works to generate the 1024 wavelet coefficients, or how to modify it to increase the sigma value. The feval command is used to execute a function within another m-file, but the 5 arguments are all variables. There is no function called.

Accedi per commentare.

Risposta accettata

Kevin
Kevin il 15 Lug 2011
The problem was solved by creating a new wavelet and adding it to the package of wavelets in the toolbox. The original Morlet wavelet is coded in the toolbox as out1 = exp(-(out2.^2)/2) .* cos(5*out2); where out2 is the domain of points at which to evaluate the wavelet between the upper and lower bounds, and out1 is a vector of wavelet y values. The number of oscillations of the wavelet, controlled by the standard deviation, can be changed by adding a scaling factor to out2. A scaling factor >1 will produce a taller wavelet with the same number of oscillations, while a factor <1 will produce a wavelet with more oscillations, thereby decreasing temporal resolution of the wavelet transform and increasing frequency resolution. For example, out1 = exp(-((out2*0.2).^2)/2) .* cos(5*out2) produces a wavelet with many more oscillations than the original Morlet wavelet, shown by plotting out1 vs. out2.
This new wavelet can be added to the toolbox using wavemngr: wavemngr('add',FN,FSN,WT,NUMS,FILE,B)
See the wavemngr documentation for further instruction on adding the new wavelet.
  1 Commento
Naveen Kumar Pothapakula
Naveen Kumar Pothapakula il 14 Nov 2023
Hello Kevin, Can you elaborate on the process of modifying the existing morlet wavelet function and adding it as new wavelet to the tool box.? is it possible to increase the frequency resolution by sacrificing the time resolution completely? I was thinking, what does the time support UB and LB indicates and can we increase it?
Thanks in Advance

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by