Increasing Frequency Resolution of CWT

9 ビュー (過去 30 日間)
Kevin
Kevin 2011 年 7 月 13 日
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 件のコメント
Kevin
Kevin 2011 年 7 月 14 日
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.

サインインしてコメントする。

採用された回答

Kevin
Kevin 2011 年 7 月 15 日
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 件のコメント
Naveen Kumar Pothapakula
Naveen Kumar Pothapakula 2023 年 11 月 14 日
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

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeContinuous Wavelet Transforms についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by