How to properly multiply the Wavelet transform of a signal by a function of frequency and then reconstruct the signal?
1 次查看(过去 30 天)
显示 更早的评论
Hi everyone! So, I have been struggling with this for a few days.. I am not an expert on signal processing, but I am using it as a tool for an analysis, so I'm a bit unsure.
I have a signal x(t) and a function t(f), where f are the frequencies present in my spectrum. I need to multiply y(f) for the amplitudes of x(t) corresponding to f for each time stamp I have. So I have tried a few things:
% a. Obtain CWT of signal;
% fs = sampling frequency
[wt, f] = cwt(x,fs,'amor');
% b. Obtain the value of t(f) for each f from my spectrogram
for i = 1:length(f);
y(i) = Y*f;
end
% c. Multiply t(f) for wt for each time stamp
y = y';
wt_2 = [];
for i = 1:length(wt)
wt_2(:,i) = y.*wt(:,i);
end
% d. Reconstruct the multiplied transform wt_2
x_2 = icwt(wt_2,'amor','SignalMean',nanmean(x));
However, this ends up giving me an underestimated result. Should I make any changes to t(f) when performing step c? I have tried
abs(t(f))^2
but that underestimates my results even more as t(f) < 1.
2.
% a. Obtain CWT of signal;
% fs = sampling frequency
[wt, f] = cwt(x,fs,'amor');
% b. Obtain the value of t(f) for each f from my spectrogram
for i = 1:length(f);
y(i) = Y*f;
end
% c. Multiply t(f) for wt for each time stamp
y = y';
wt_2 = [];
for i = 1:length(wt)
wt_2(:,i) = y.*wt(:,i);
end
% d. Sum the real part of the transform for all the frequency bands in each time stamp.
x_2 = nansum(real(wt_2));
This second method gives me more reasonable results. However, I am not sure this is mathematically correct. I feel like this ignores scaling, but I am not sure how to overcome this.
When I plot cwt(x,fs,'amor');, the magnitude that shows up is not the amplitude of my signal at that given frequency, right? It is the transform coefficients?
Many thanks! :)
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!