How to plot the average wavelet magnitude over range of frequencies

2 vues (au cours des 30 derniers jours)
Emma Vande-Wouwer
Emma Vande-Wouwer le 16 Juin 2022
Réponse apportée : Jonas le 4 Juil 2022
Hi !
I was wondering if it's possible these kinds of plots of wavelot transforms in matlab:
A is the wavelet transform amplitude accross frequency and times then B is the average wavelet for the range of frequencies.
I found that the wavelet toolbox has the timeSpectrum and scaleSpectrum function but both these functions give the average wavelet amplitude over time and scale and I would like to have it over frequencies like figure b:
Is there a parameter for these function to do this or is there another spectrum function that gives the average wavelet amplitude over frequencies ?
Thank you in advance!

Réponse acceptée

Jonas
Jonas le 4 Juil 2022
why not use the output of the cwt function? you can average it yourself:
load mtlb
t=(0:numel(mtlb)-1)/Fs;
[wt,f,coi]=cwt(mtlb,Fs);
ca=subplot(2,1,1);
surf(t,f,abs(wt))
shading flat;
axis tight;
set(ca,'YScale','log')
xlabel('time (s)');
ylabel("Frequency (Hz)")
zlabel('magnitude');
view([-79 50])
subplot(2,1,2);
[sortF,idx]=sort(f);
wt=wt(idx,:);
semilogx(f,mean(abs(wt),2));
xlabel("frequency (Hz)")
ylabel('mean amplitude');

Plus de réponses (0)

Catégories

En savoir plus sur Continuous Wavelet Transforms dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by