这个例子展示了连续小波变换的可变时频分辨率如何帮助您获得清晰的时频表示。
连续小波变换(CWT)是一种时频变换,是分析非平稳信号的理想方法。信号非平稳意味着它的频域表示随时间变化。许多信号是非平稳的,如心电图、音频信号、地震数据和气候数据。
加载一个有两个双曲啁啾的信号。数据采样频率为2048hz。第一个啁啾活跃在0.1到0.68秒之间,第二个啁啾活跃在0.1到0.75秒之间。第一次啁啾的瞬时频率(以赫兹为单位) 是 .第二次啁啾时刻的瞬时频率 是 .画出信号。
负载hychirp情节(t, hychirp)网格在标题(“信号”)轴紧包含(“时间(s)”) ylabel (“振幅”)
傅里叶变换(FT)非常擅长识别信号中出现的频率成分。然而,FT并没有识别频率成分何时出现。
画出信号的幅值谱。放大0到200hz之间的区域。
sigLen =数字(hychirp);Fchirp = fft(hychirp);fr = Fs*(0:1/Fs:1-1/Fs);情节(fr (1: sigLen / 2)、abs (fchirp (1: sigLen / 2)),“x -”)包含(的频率(赫兹)) ylabel (“振幅”)轴紧网格在xlim (200 [0])
傅里叶变换不提供时间信息。为了确定频率何时发生变化,短时傅里叶变换(STFT)方法将信号分割成不同的块,并对每个块执行FT。时频平面上的STFT平铺如图所示。
STFT提供了有关信号事件发生的时间和频率的一些信息。然而,选择窗口(段)大小是关键。对于使用STFT的时频分析,选择较短的窗口大小有助于以牺牲频率分辨率为代价获得较好的时间分辨率。相反,选择较大的窗口有助于以牺牲时间分辨率为代价获得良好的频率分辨率。
一旦选择了窗口大小,整个分析过程中它将保持固定。如果您可以估计信号中预期的频率成分,那么您可以使用该信息来选择用于分析的窗口大小。
两种啁啾在初始时间点的瞬时频率约为5hz和15hz。使用helper函数helperPlotSpectrogram
绘制时间窗口大小为200毫秒的信号频谱图。的源代码helperPlotSpectrogram
在附录中列出。辅助函数将频谱图上的瞬时频率绘制为黑色虚线段。瞬时频率在信号早期被分解,但在之后就不一样了。
helperPlotSpectrogram (hychirp t Fs, 200)
现在使用helperPlotSpectrogram
绘制时间窗口大小为50毫秒的频谱图。信号中较晚出现的较高频率现在被分解了,但信号开始时的较低频率则没有。
helperPlotSpectrogram (hychirp t、Fs、50)
对于非平稳信号,如双曲啁啾,使用STFT是有问题的。没有一个单一的窗口大小可以解析这种信号的全部频率内容。
连续小波变换(CWT)被创建来克服STFT固有的分辨率问题。时间-频率平面上的CWT平铺如图所示。
平面的CWT平铺是有用的,因为许多现实世界的信号具有长尺度上缓慢振荡的内容,而高频事件往往是突然或瞬态的。然而,如果高频事件持续时间长是自然的,那么使用CWT就不合适了。如果没有时间分辨率,频率分辨率就会变差。但事实往往并非如此。人类的听觉系统就是这样工作的;我们在低频有更好的频率定位,在高频有更好的时间定位。
绘制CWT的尺度图。标量图是CWT作为时间和频率的函数绘制的绝对值。该图使用对数频率轴,因为CWT中的频率是对数的。从标量图中可以清楚地看到信号中存在两个双曲啁啾。使用CWT,您可以准确地估计整个信号持续时间内的瞬时频率,而无需担心选择段长度。
类(hychirp Fs)
白色虚线标记了所谓的影响范围.影响锥显示尺度图中可能受边界效应影响的区域。有关更多信息,请参见边界效应和影响锥.
为了了解小波系数的大小增长有多快,可以使用辅助函数helperPlotScalogram3d
将尺度图绘制成三维曲面。的源代码helperPlotScalogram3d
在附录中列出。
helperPlotScalogram3d (hychirp Fs)
使用helper函数helperPlotScalogram
绘制信号和瞬时频率的标量图。的源代码helperPlotScalogram
在附录中列出。瞬时频率与尺度图特征吻合良好。
helperPlotScalogram (hychirp Fs)
helperPlotSpectrogram
函数helperPlotSpectrogram (sig, t, Fs,计时器)此函数仅用于支持此小波示例。金宝app它可能会在未来的版本中被更改或删除。。[px,fx,tx] = pspectrum(sig,Fs,的谱图,“TimeResolution”定时器/ 1000);HP = pcolor(tx,fx,20*log10(abs(px)));惠普。EdgeAlpha = 0;ylim = hp.Parent.YLim;yticks = hp.Parent.YTick;Cl = colorbar;cl.Label.String =“权力(dB)”;轴紧持有在标题([“时间分辨率:”num2str(定时器),“女士”])包含(“时间(s)”) ylabel (“赫兹”);dt = 1/Fs;Idxbegin = round(0.1/dt);Idxend1 = round(0.68/dt);Idxend2 = round(0.75/dt);Instfreq1 = abs((15*pi)./(0.8-t).^2)./(2*pi);Instfreq2 = abs((5*pi)./(0.8-t).^2)./(2*pi);情节(t (idxbegin: idxend1), (instfreq1 (idxbegin: idxend1)),“k——”);持有在;情节(t (idxbegin: idxend2), (instfreq2 (idxbegin: idxend2)),“k——”);ylim (ylims);hp.Parent.YTick = yticks;hp.Parent.YTickLabels = yticks;持有从结束
helperPlotScalogram
函数Fs helperPlotScalogram(团体)此函数仅用于支持此小波示例。金宝app它可能会在未来的版本中被更改或删除。。[cfs,f] = cwt(sig,Fs);sigLen =数字(sig);t = (0:sigLen-1)/Fs;HP = pcolor(t,log2(f),abs(cfs));惠普。EdgeAlpha = 0;ylim = hp.Parent.YLim;yticks = hp.Parent.YTick;Cl = colorbar;cl.Label.String =“级”;轴紧持有在标题(“尺度图与瞬时频率”)包含(“秒”);ylabel (“赫兹”);Dt = 1/2048;Idxbegin = round(0.1/dt);Idxend1 = round(0.68/dt);Idxend2 = round(0.75/dt);Instfreq1 = abs((15*pi)./(0.8-t).^2)./(2*pi);Instfreq2 = abs((5*pi)./(0.8-t).^2)./(2*pi);情节(t (idxbegin: idxend1) log2 (instfreq1 (idxbegin: idxend1)),“k——”);持有在;情节(t (idxbegin: idxend2) log2 (instfreq2 (idxbegin: idxend2)),“k——”);ylim (ylims);hp.Parent.YTick = yticks;hp.Parent.YTickLabels = 2.^yticks;结束
helperPlotScalogram3d
函数Fs helperPlotScalogram3d(团体)此函数仅用于支持此小波示例。金宝app它可能会在未来的版本中被更改或删除。。figure [cfs,f] = cwt(sig,Fs);sigLen =数字(sig);t = (0:sigLen-1)/Fs;表面(t、f、abs (cfs));包含(“时间(s)”) ylabel (的频率(赫兹)) zlabel (“级”)标题(“三维尺度图”甘氨胆酸)组(,“yscale”,“日志”)阴影插值函数视图([-40]30日)结束
类
|cwtfilterbank
|waveletScattering
|waveletScattering2