Increasing Frequency Resolution of CWT

9 visualizaciones (últimos 30 días)
Kevin
Kevin el 13 de Jul. de 2011
Comentada: Naveen Kumar Pothapakula el 14 de Nov. de 2023
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 comentario
Kevin
Kevin el 14 de Jul. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

Kevin
Kevin el 15 de Jul. de 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 comentario
Naveen Kumar Pothapakula
Naveen Kumar Pothapakula el 14 de Nov. de 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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Continuous Wavelet Transforms en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by