What is this algorithm for computation of the convolution integral in continuous wavelet transform?
4 次查看(过去 30 天)
显示 更早的评论
Looking into demo of continous wavelet transform by waveletAnalyzer (Wavelet toolbox) I came across an unknown numerical method for computation of the convolution integral. It is specifed as numALG = 1 in the file cw1dmnr.m lines 537-576:
switch numALG
case 1
[psi,psi_xval] = intwave(wav_Name,precis);
psi_xval = psi_xval-psi_xval(1);
dxval = psi_xval(2);
xmax = psi_xval(length(psi_xval));
ind = 1;
for a = scales
msg = {' ',getWavMSG('Wavelet:divGUIRF:Str_CompSca',num2str(a,'%5.3f'))};
set(txt_msg,'String',msg);
drawnow
j = 1+floor((0:a*xmax)/(a*dxval));
if length(j)==1 , j = [1 1]; end
f = fliplr(psi(j));
varargout{1}(ind,:) = -sqrt(a)*wkeep1(diff(conv(sig_Anal,f)),len);
ind = ind+1;
end
case 2
switch wtype
case {1,3} , [~,psi,psi_xval] = wavefun(wav_Name,precis);
case 2 , [~,psi,~,~,psi_xval] = wavefun(wav_Name,precis);
case {4,5} , [psi,psi_xval] = wavefun(wav_Name,precis);
end
% if wtype==5 , psi = conj(psi); end
psi_xval = psi_xval-psi_xval(1);
dxval = psi_xval(2);
xmax = psi_xval(end);
ind = 1;
for a = scales
msg = {' ',getWavMSG('Wavelet:divGUIRF:Str_CompSca',num2str(a,'%5.3f'))};
set(txt_msg,'String',msg);
drawnow
j = 1 + floor((0:a*xmax)/(a*dxval));
if length(j)==1 , j = [1 1]; end
f = fliplr(psi(j));
varargout{1}(ind,:) = wkeep1(conv(sig_Anal,f),len);
ind = ind+1;
end
end
The second algorithm (case numALG == 2) straightforwardly computes the inner products between signal and translated wavelets by usual convolution:
psi = wavefun(wav_Name, precis)
out = conv(signal, fliplr(psi), 'same')
But I struggle to understand the first one, where signal is convolved with the integral of the wavelet and the result is differentiated:
integ_psi = intwave(wav_Name, precis)
out = diff(conv(signal,fliplr(integ_psi)))
Any insights into what is this method based on?
0 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Continuous Wavelet Transforms 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!