解释小波尺度图

信息处理 小波 频谱图 过滤
2022-01-15 16:50:53

我对小波的了解少于 epsilon。忍受我。如果我有两个分离良好的正弦曲线(15 和 48 Hz)加上一些随机噪声的信号,我可以在频谱图中清楚地辨认出两者(我图片中的两条条纹);

t=0:0.002:1;   % fs = 500 Hz
x=4*sin(2*pi*15*t)+2*cos(2*pi*48*t);
xn = x + randn(size(x));
figure(1);
plot(xn);
figure(2);
spectrogram(xn, 64, 60, [], 500);

在此处输入图像描述 在此处输入图像描述

但是,使用“wscalogram”,我不能说我可以区分组件:

    coefs = cwt(xn,1:64,'db8','scalCNT');
    wscalogram('image',coefs,'scales',1:64,'ydata',xn);

在此处输入图像描述

有没有办法从尺度图中读取有 2 个不同的正弦曲线,如果是这样,我如何使用小波分解和滤波将它们分开?我认为也许我选择的小波('db8')不是最佳选择,但我看不出使用其他类型和更大(或更小)比例的差异。显然,我错过了关于何时何地应用小波的内容。

谢谢

2个回答

小波是本地化事件的理想选择。傅里叶变换将函数表示为正弦和余弦之和,两者都不是局部的。频谱图确实保留了一些时间信息,但以牺牲频率分辨率为代价

在您的情况下,信号根本没有本地化。频谱图将您的 15 Hz 频带涂抹在几个 Hz 上,因为它捕获了一些时间信息,并且刻度图完全失败了。

是的,您遗漏了一些东西 :) 尽管您尝试了不同的小波系列,但您应该使用GaborWavelet. 我在 中写了这个Mathematica,但你可以在任何你想要的环境中进行。

cwd = ContinuousWaveletTransform[Table[4 Sin[2 Pi 15 t] + 2 Cos[2 Pi 48 t] +   
               RandomReal[{-.5, .5}], {t, 0, 5 \[Pi], .01}], GaborWavelet[]]

WaveletScalogram[cwd, ColorFunction -> "RoseColors"]

数学图形