主要内容

cwtfilterbank

连续小波变换滤波器组

描述

使用cwtfilterbank来创建一个连续小波变换(CWT)滤波器组。滤波器组中使用的默认小波是解析莫尔斯(3,60)小波。您可以改变莫尔斯小波的时间带宽和对称参数,以根据需要调整莫尔斯小波。你也可以使用解析的Morlet (Gabor)小波或bump小波。在对多个时频信号进行分析时,为了提高计算效率,可以预先计算一次滤波器,然后将滤波器组作为输入传递给.使用滤波器组,您可以在时间和频率上可视化小波。您还可以创建具有特定频率或周期范围的滤波器组,并测量3 db带宽。您可以确定滤波器组中小波的质量因子。

创建

描述

例子

神奇动物= cwtfilterbank创建一个连续小波变换(CWT)滤波器组神奇动物.滤波器经过标准化处理,使所有通带的峰值幅度近似等于2。默认的滤波器组是为1024个样本的信号设计的。默认滤波器组使用莫尔斯(3,60)分析小波。滤波器组使用默认规模:大约每八度10个小波带通滤波器(每八度10个声音)。最高频率通带的设计使震级下降到奈奎斯特频率峰值的一半。

在实现时,CWT使用L1归一化。L1归一化后,不同尺度上的等幅振荡分量在CWT中大小相等。L1归一化提供了更准确的信号表示。振荡分量的振幅与相应小波系数的振幅一致。看到正弦和小波系数振幅

神奇动物可以作为输入

例子

神奇动物= cwtfilterbank (名称=值创建一个CWT滤波器组神奇动物属性使用一个或多个名称-值参数。属性可以按任意顺序指定为Name1 = Value1,…,以=家

请注意

不能更改现有筛选器组的属性值。例如,如果您有一个过滤器组神奇动物与一个SignalLength,则必须创建第二个筛选器组fb2处理一个2001个样本的信号。你不能分配一个不同的SignalLength神奇动物

属性

全部展开

信号的长度,指定为正整数。信号必须至少有四个样本。

例子:fb = cwtfilterbank(SignalLength=1700)

数据类型:

分析小波所使用的滤波器组,指定为“莫尔斯”“埃莫”,或“撞”.这些字符串分别指定分析莫尔斯,Morlet (Gabor)和bump小波。默认的小波是解析莫尔斯(3,60)小波。

默认情况下,对于莫尔斯小波,频率响应衰减到奈奎斯特峰幅度的50%。对于Morlet和bump小波,频率响应衰减到峰值幅度的10%。你可以通过设置滤波器组来改变衰减百分比FrequencyLimits财产。看到cwtfreqbounds

对于莫尔斯小波,你也可以参数化小波使用TimeBandwidthWaveletParameters属性。

例子:fb = cwtfilterbank(SignalLength=1700,wavelet="bump")

用于CWT的每八度的声音数,指定为1到48之间的整数。CWT音阶使用每八度指定的声音数进行离散化。小波在频率和时间上的能量分布自动决定了小波的最小和最大尺度。

你可以使用cwtfreqbounds确定小波滤波器组的频率极限。频率限制取决于诸如小波的能量分布、每八度的声音数、信号长度和采样频率等参数。

数据类型:|

采样频率(以赫兹为单位),表示为正标量。如果未指定,频率以周期/样本为单位,奈奎斯特频率为½。要以周期为单位指定刻度,请使用SamplingPeriod而且PeriodLimits名称-值参数。

属性不能同时指定SamplingFrequency而且SamplingPeriod属性。

例子:fb = cwtfilterbank(SamplingFrequency=5,wavelet="amor")

数据类型:|

小波滤波器组的频率限制,指定为两个元素向量与正严格增加的条目。

  • 第一个元素指定最低峰值通带频率。频率必须大于或等于小波峰值频率(以赫兹为单位)与两个时间标准差除以信号长度的乘积。

  • 第二个元素指定最高峰值通带频率。高频限制必须小于或等于奈奎斯特。

  • 高频极限比值的以2为底的对数,fMax,到低频极限,fMin,必须大于或等于1 / NV,在那里NV是每八度音的声数:

    日志2(fMax/fMin)≥1/NV

如果你指定的频率限制超出了允许范围,cwtfilterbank将限制截断为最小值和最大值。使用cwtfreqbounds确定小波变换不同参数化的频率极限。

如果使用筛选器组中的采样周期,则不能指定FrequencyLimits财产。

例子:如果fb = cwtfilterbank(SignalLength=1000,SamplingFrequency=1000,FrequencyLimits=[90 100]),然后日志2(100/90)≥1/fb。VoicesPerOctave

数据类型:

采样周期,指定为持续时间标量。属性不能同时指定SamplingFrequency而且SamplingPeriod属性。

例子:fb = cwtfilterbank(SamplingPeriod=seconds(0.5))

数据类型:持续时间

小波滤波器组的周期限制,指定为两个元素持续时间元素严格递增为正的数组。

  • 的第一个元素PeriodLimits指定最大峰值通频带频率,并且必须大于或等于该频率的两倍SamplingPeriod

  • 最大周期不能超过信号长度除以小波的两个时间标准差与小波峰值频率的乘积。

  • 最小周期之比的对数以2为底,minP,到最大周期,maxP,必须小于或等于1 / NV,在那里NV是每八度音的声数:

    日志2(minP/maxP)≤-1/NV

如果你指定的时间段超出了允许的范围,cwtfilterbank将限制截断为最小值和最大值。使用cwtfreqbounds确定小波变换不同参数化的周期限制。

如果使用滤波器组中的采样频率,则不能指定PeriodLimits财产。

例子:如果fb = cwtfilterbank(SignalLength=1000,SamplingPeriod=seconds(0.1),PeriodLimits=[seconds(0.2) seconds(3)]),然后日志2(0.2/3)≤-1/fb。VoicesPerOctave

数据类型:持续时间

莫尔斯小波的时间带宽积,指定为大于或等于3且小于或等于120的正标量。摩尔斯小波的对称性(伽马)固定在3。此属性仅在以下情况下有效小波“莫尔斯”

时频乘积越大,小波在时间上越分散,在频率上越窄。摩尔斯小波在时间上的标准差约为√TimeBandwidth / 2).频率的标准偏差约为1/2 ×根号(2/TimeBandwidth).看到广义莫尔斯小波和解析Morlet小波

TimeBandwidth而且WaveletParameters属性不能同时指定。

用符号表示莫尔斯小波TimeBandwidthP2

例子:“TimeBandwidth”,20

数据类型:

莫尔斯小波参数,指定为二元向量。第一个元素是对称参数(gamma),它必须大于或等于1。第二个元素是时间-带宽乘积,它必须大于或等于gamma。时间-带宽乘积与伽马的比值不能超过40。

当等于3时,莫尔斯小波在频域完全对称。偏度等于0。大于3的值为正偏度,小于3的值为负偏度。

有关更多信息,请参见莫尔斯小波

WaveletParameters而且TimeBandwidth不能同时指定名称-值参数。

例子:fb = cwtfilterbank(小波参数=[4,20])

信号的边界扩展,指定为任意一种“反射”“周期”.确定如何在边界处处理数据。

请注意

如果您打算使用双帧或近似合成滤波器反演CWT,请设置边界“周期”

例子:fb = cwtfilterbank(Boundary="periodic")

对象的功能

wt 带滤波器组的连续小波变换
freqz CWT滤波器组频率响应
timeSpectrum 时间平均小波谱
scaleSpectrum 尺度平均小波谱
小波 CWT滤波器组时域小波
尺度 CWT滤波器组比例
wavelet金宝appsupport 支持CWT滤波器组时间金宝app
qfactor CWT滤波器组质量因子
powerbw CWT滤波器组带宽为3db
centerFrequencies CWT滤波器组带通中心频率
centerPeriods CWT滤波器组带通中心周期

例子

全部折叠

创建连续小波变换滤波器组。

Fb = cwtfilterbank
fb = cwtfilterbank with properties: VoicesPerOctave: 10 Wavelet: 'Morse' SamplingFrequency: 1 SamplingPeriod: [] PeriodLimits: [] SignalLength: 1024 FrequencyLimits: [] TimeBandwidth: 60 Wavelet parameters: [] Boundary: 'reflection'

画出幅值频率响应。

freqz(神奇动物)

图中包含一个轴对象。标题为CWT Filter Bank的axes对象包含71个类型为line的对象。

创建两个频率为16和64赫兹的正弦波。数据采样频率为1000hz。画出信号。

Fs = 1e3;t = 0:1/Fs:1-1/Fs;X = cos(2* *64*t).*(t>=0.1 & t<0.3)+...Sin (2*pi*16*t).*(t>=0.5 & t<0.9);情节(t, x)标题(“信号”)包含(“时间(s)”) ylabel (“振幅”

图中包含一个轴对象。标题为Signal的axes对象包含一个line类型的对象。

为信号创建一个CWT滤波器组。画出滤波器组中小波的频率响应。

fb = cwtfilterbank(SignalLength=numel(t),SamplingFrequency=Fs);图频率(fb)标题(频率响应-莫尔斯(3,60)小波

图中包含一个轴对象。标题为“频率响应-莫尔斯(3,60)小波”的轴对象包含71个类型行对象。

分析莫尔斯(3,60)小波是滤波器组中的默认小波。小波的时间-带宽积等于60。创建与第一个滤波器组相同的第二个滤波器组,但使用解析莫尔斯(3,5)小波。画出第二滤波器组中小波的频率响应。

fb3x5 = cwtfilterbank(SignalLength= nummel (t),SamplingFrequency=Fs,...TimeBandwidth = 5);图freqz(fb3x5)标题(频率响应-莫尔斯(3,5)小波

图中包含一个轴对象。标题为“频率响应-莫尔斯(3,5)小波”的轴对象包含96个类型行对象。

观察频率响应比第一个滤波器组宽。Morse(3,60)小波比Morse(3,5)小波具有更好的频率局域性。将每个滤波器组应用于信号并绘制得到的标量图。观察到Morse(3,60)小波比Morse(3,5)小波具有更好的频率分辨率。

图cwt(x,FilterBank=fb)“量级尺度图-莫尔斯(3,60)”

图中包含一个轴对象。标题为Magnitude scalalogram - Morse(3,60)的坐标轴对象包含图像、直线和区域类型的3个对象。

图cwt(x,FilterBank=fb3x5)"幅度标量-莫尔斯(3,5)"

图中包含一个轴对象。标题为Magnitude scalalogram - Morse(3,5)的轴对象包含图像、线、区域类型的3个对象。

这个例子表明,信号中振荡分量的振幅与相应小波系数的振幅一致。

在时间上创建一个由两个不相交的正弦信号组成的信号。金宝app一个正弦波的频率为32hz,振幅为1。另一个正弦波的频率为64hz,振幅为2。信号以1000hz的频率采样1秒。画出信号。

Frq1 = 32;Amp1 = 1;Frq2 = 64;Amp2 = 2;Fs = 1e3;t = 0:1/Fs:1;X = amp1*sin(2*pi*frq1*t).*(t>=0.1 & t<0.3)+...Amp2 *sin(2*pi*frq2*t).*(t>0.6 & t<0.9);情节(t, x)网格包含(“时间(sec)”) ylabel (“振幅”)标题(“信号”

图中包含一个轴对象。标题为Signal的axes对象包含一个line类型的对象。

创建一个可应用于信号的CWT滤波器组。由于信号分量频率是已知的,所以将滤波器组的频率限制设置为包括已知频率的狭窄范围。为了确定范围,绘制滤波器组的幅值频率响应。

fb = cwtfilterbank(SignalLength= nummel (x),SamplingFrequency=Fs,...FrequencyLimits = [100]);freqz(神奇动物)

图中包含一个轴对象。标题为CWT Filter Bank的axes对象包含24个类型为line的对象。

使用和滤波器组来绘制信号的标量图。

类(x, FilterBank = fb)

图中包含一个轴对象。标题为Magnitude scalalogram的轴对象包含图像、线、区域类型的3个对象。

使用数据游标来确认小波系数的振幅本质上等于正弦分量的振幅。您的结果应该与下图中的结果类似。

这个例子展示了如何改变广义莫尔斯小波的时间带宽参数来近似解析莫尔特小波。

广义莫尔斯小波是一类精确解析小波。莫尔斯小波有两个参数,对称性和时间-带宽积。你可以改变这些参数来获得具有不同性质和行为的分析小波。有关其他信息,请参见莫尔斯小波以及其中的参考文献。

载入1995年神户地震记录的地震仪数据。数据是1995年1月16日在澳大利亚霍巴特的塔斯马尼亚大学记录的地震仪(垂直加速度,纳米/平方秒)测量数据,从20:56:51(格林尼治标准时间)开始,以1秒为间隔持续51分钟。创建一个具有可应用于数据的默认设置的CWT过滤器组。使用过滤器组生成标量图。

负载科比fb = cwtfilterbank(SignalLength=numel(kobe),SamplingFrequency=1);类(科比,FilterBank = fb)

图中包含一个轴对象。标题为Magnitude scalalogram的轴对象包含图像、线、区域类型的3个对象。

在10mhz ~ 100mhz频率范围内,小波系数的幅度较大。创建一个新的滤波器组,将频率限制设置为这些值。生成标量图。

fb2 = cwtfilterbank(SignalLength= nummel (kobe),SamplingFrequency=1,...FrequencyLimits =[1依照1 e 1]);类(科比,FilterBank = fb2)标题(“默认莫尔斯(3,60)小波”

图中包含一个轴对象。标题为默认莫尔斯(3,60)的轴对象小波包含3个对象类型的图像,线,区域。

默认情况下,cwtfilterbank使用莫尔斯(3,60)小波。使用具有相同频率限制的解析Morlet小波创建一个滤波器组。生成一个标量图,并与莫尔斯(3,60)小波生成的标量图进行比较。

fbMorlet = cwtfilterbank(SignalLength= nummel (kobe),SamplingFrequency=1,...FrequencyLimits =(1)依照1 e 1),...小波=“埃莫”);类(科比,FilterBank = fbMorlet)标题(解析Morlet小波

图中包含一个轴对象。标题为analytical Morlet Wavelet的轴对象包含类型图像、直线、区域3个对象。

Morlet小波在频率上不像(3,60)Morse小波那样局域化。然而,通过改变时间-带宽乘积,您可以创建具有类似Morlet小波属性的Morse小波。

使用时间带宽值为30的莫尔斯小波创建一个滤波器组[2],频率限制如上文所示。生成地震仪数据的尺度图。注意,这里的涂抹频率与Morlet结果几乎相同。

fbMorse = cwtfilterbank(SignalLength= nummel (kobe),SamplingFrequency=1,...FrequencyLimits =(1)依照1 e 1),...TimeBandwidth = 30);类(科比,FilterBank = fbMorse)标题(“莫尔斯(30)”

图中包含一个轴对象。标题为Morse(3,30)的坐标轴对象包含图像、直线和区域类型的3个对象。

现在研究与fbMorlet而且fbMorse滤波器。从两个滤波器组中,得到小波中心频率、滤波器频率响应和时域小波。确认中心频率几乎相同。

cfMorlet =中心频率(fbMorlet);[frMorlet,fMorlet] = freqz(fbMorlet);[wvMorlet,tMorlet] =小波(fbMorlet);cfMorse = centerFrequencies(fbMorse);[frMorse,fMorse] = freqz(fbMorse);[wvMorse,tMorse] =小波(fbMorse);disp ([“中心频率数:”num2str(长度(cfMorlet))));
“中心频率数”:“34”
disp ([“最大差值:”num2str (max (abs (cfMorlet-cfMorse)))));
“最大差值:”“2.7756e-17”

每个滤波器组包含相同数量的小波。选择一个中心频率,并从每个滤波器组中绘制相关滤波器的频率响应。确认答案几乎相同。

Wv = 13;图绘制(fMorlet frMorlet(西弗吉尼亚州,:));持有情节(fMorse frMorse(西弗吉尼亚州,:));网格持有标题(“频率响应”)包含(“频率”) ylabel (“振幅”)传说(“Morlet”“莫尔斯(30)”

图中包含一个轴对象。标题为Frequency Response的axes对象包含2个类型为line的对象。这些物体代表Morlet, Morse(3,30)。

画出与相同中心频率相关的时域小波。确认它们几乎一模一样。

图subplot(2,1,1) plot(tMorlet,real(wvMorlet(wv,:)))保持情节(tMorse,实际(wvMorse(西弗吉尼亚州,:)))网格持有标题(“真正的”)传说(“Morlet”“莫尔斯(30)”) xlim([-100 100]) subplot(2,1,2) plot(tMorlet,imag(wvMorlet(wv,:)))保持情节(tMorse图像放大(wvMorse(西弗吉尼亚州,:)))网格持有标题(“虚”)传说(“Morlet”“莫尔斯(30)”xlim([-100 100])

图中包含2个轴对象。标题为Real的坐标轴对象1包含2个类型为line的对象。这些物体代表Morlet, Morse(3,30)。标题为假想的坐标轴对象2包含2个类型为line的对象。这些物体代表Morlet, Morse(3,30)。

这个例子说明了增加时间-带宽乘积 P 2 莫尔斯小波的变化会产生一个在包络线下有更多振荡的小波。增加 P 2 缩小小波的频率。

创建两个过滤器组。一个过滤器组具有默认值TimeBandwidth值为60。第二个滤波器组有一个TimeBandwidth值为10。的SignalLength两个滤波器组均为4096个样本。

sigLen = 4096;fb60 = cwtfilterbank(SignalLength=sigLen);fb10 = cwtfilterbank(SignalLength=sigLen,TimeBandwidth=10);

得到滤波器组的时域小波。

[psi60,t] =小波(fb60);[psi10,~] =小波(fb10);

使用尺度函数查找每个滤波器组的母小波。

Sca60 =鳞片(fb60);Sca10 = scales(fb10);[~,idx60] = min(abs(sca60-1));[~,idx10] = min(abs(sca10-1));M60 = psi60(idx60,:);M10 = psi10(idx10,:);

的时间带宽乘积更大fb60滤波器组,验证m60小波在它的包络下有更多的振荡m10小波。

Subplot (2,1,1) plot(t,abs(m60))网格持有Plot (t,real(m60)) Plot (t,imag(m60))保留Xlim ([-30 30])“abs (m60)”“真正的(m60)”“图像放大(m60)”)标题("TimeBandwidth = 60") subplot(2,1,2) plot(t,abs(m10))网格持有Plot (t,real(m10)) Plot (t,imag(m10))保留Xlim ([-30 30])“abs (m10)”“真正的(m10)”“图像放大(m10)”)标题("TimeBandwidth = 10"

图中包含2个轴对象。标题TimeBandwidth = 60的Axes对象1包含3个line类型的对象。这些对象分别代表abs(m60), real(m60), imag(m60)。标题TimeBandwidth = 10的Axes对象2包含3个line类型的对象。这些对象分别代表abs(m10), real(m10), imag(m10)。

的顶点对齐m60而且m10幅度频率响应。验证的频率响应m60小波比频响更窄m10小波。

cf60 = centerFrequencies(fb60);cf10 = centerFrequencies(fb10);m60cFreq = cf60(idx60);m10cFreq = cf10(idx10);freqShift = 2*pi*(m60cFreq-m10cFreq);x10 = m10.*exp(1j*freqShift*(-sigLen/2:sigLen/2-1));图绘制([abs (fft (m60))。' abs(fft(x10)).']传奇("时间-带宽= 60""时间-带宽= 10")标题(“幅度频率响应”

图中包含一个轴对象。标题为Magnitude Frequency Responses的axis对象包含2个类型为line的对象。分别表示Time-bandwidth = 60, Time-bandwidth = 10。

这个例子展示了在计算多个时间序列的CWT时,如何使用CWT滤波器组来提高计算效率。

创建一个100 × 1024的矩阵x.创建一个适用于1024个样本信号的CWT滤波器组。

X = randn(100,1024);Fb = cwtfilterbank;

使用以获得1024个样本的信号的CWT。创建一个3d数组,可以包含100个信号的CWT系数,每个信号有1024个样本。

CFS = cwt(x(1,:));Res = 0 (100,size(cfs,1),size(cfs,2));

使用函数,取矩阵每一行的CWTx.显示运行时间。

抽搐K =1:10 res(K,:,:) = cwt(x(K,:));结束toc
运行时间为0.928160秒。

现在使用wt的对象函数取每一行的CWTx.显示运行时间。

抽搐K =1:10 res(K,:,:) = wt(fb,x(K,:));结束toc
运行时间为0.393524秒。

此示例显示如何在图形子图中绘制CWT标量图。

加载演讲样本。数据采样频率为7418hz。绘制默认的CWT标量图。

负载mtlb类(mtlb Fs)

图中包含一个轴对象。标题为Magnitude scalalogram的轴对象包含图像、线、区域类型的3个对象。

得到信号的连续小波变换,以及CWT的频率。

[cfs,frq] = cwt(mtlb,Fs);

函数设置标量图中的时间轴和频率轴。创建一个表示采样时间的向量。

tms =(0:数字(mtlb)-1)/Fs;

在一个新的图形中,在上面的子图中绘制原始信号,在下面的子图中绘制标量图。在对数刻度上画出频率。

图subplot(2,1,1) plot(tms,mtlb)轴标题(“信号与尺度图”)包含(“时间(s)”) ylabel (“振幅”)子图(2,1,2)面(tms,frq,abs(cfs))轴阴影包含(“时间(s)”) ylabel (“频率(赫兹)”甘氨胆酸)组(,“yscale”“日志”

图中包含2个轴对象。标题为Signal和scalalogram的Axes对象1包含一个类型为line的对象。坐标轴对象2包含一个曲面类型的对象。

提示

  • 第一次使用滤波器组取信号的CWT时,小波滤波器被构造为具有与信号相同的数据类型。当您将相同的过滤器组应用于具有不同数据类型的信号时,将生成警告消息。更改数据类型需要重新设计或更改过滤器组的精度。为了获得最佳性能,请使用一致的数据类型。

  • 当执行多个cwt时,例如在for循环中,建议的工作流是首先创建一个cwtfilterbank对象,然后使用wt对象的功能。这个工作流最小化了开销并最大化了性能。看到多时间序列CWT滤波器组的应用

参考文献

莉莉,J. M.和S. C.奥尔赫德。广义莫尔斯小波作为解析小波的超族IEEE信号处理汇刊.Vol. 60 No. 11, 2012, pp. 6036-6041。

莉莉,J. M.和S. C.奥尔赫德。解析小波的高阶性质IEEE信号处理汇刊.第57卷第1期,2009年,第146-160页。

莉莉,j.m.。jLab: Matlab的数据分析包,版本1.6.2。2016.http://www.jmlilly.net/jmlsoft.html。

[4] Lilly J. M.“元素分析:一种基于小波的方法,用于分析有噪声时间序列中的时间局部事件。”英国皇家学会学报A。卷473:20160776,2017,第1-28页。dx.doi.org/10.1098/rspa.2016.0776。

扩展功能

版本历史

在R2018a中引入

全部展开