类
连续一维小波变换
语法
描述
的连续小波变换(CWT)wt
=类(x
)x
.CWT是用带对称参数的解析莫尔斯小波得到的。<年代pan class="inlineequation">
),等于3,时间-带宽乘积等于60。类
每八度使用10个声音。根据小波在频率和时间上的能量分布自动确定最小和最大尺度。
的类
函数使用L1归一化。通过L1归一化,如果你在不同尺度的数据中有等幅振荡分量,它们在CWT中就会有相等的幅值。使用L1归一化可以更准确地表示信号。看到CWT的L1范数而且两个复指数的连续小波变换.
[<年代pan class="argument_placeholder">___
,细胞色素氧化酶
,神奇动物
= cwt(<年代pan class="argument_placeholder">___)返回CWT中使用的滤波器组。看到cwtfilterbank
.
[<年代pan class="argument_placeholder">___
,神奇动物
,scalingcfs
= cwt(<年代pan class="argument_placeholder">___)返回小波变换的比例系数。
[<年代pan class="argument_placeholder">___
= cwt(<年代pan class="argument_placeholder">___,名称=值
)指定一个或多个附加的名称-值参数。例如,wt = cwt(x,TimeBandwidth=40,VoicesPerOctave=20)
指定每八度40和20个声音的时间-带宽乘积。
类(<年代pan class="argument_placeholder">___
)在没有输出参数的情况下绘制CWT标量图。标量图是CWT作为时间和频率的函数绘制的绝对值。频率以对数刻度绘制。还绘制了显示边缘效应变得显著的影响锥。白虚线外的灰色区域描绘了边缘效应显著的区域。如果输入信号是复值的,则正分量(逆时针方向)和负分量(顺时针方向)在单独的标量图中绘制。
如果不指定采样频率或采样周期,则频率以每个样本的周期为单位绘制。如果你指定一个采样频率,频率单位是赫兹。如果指定采样周期,则标量图将作为时间和周期的函数绘制。如果输入信号是时间表,则将标量图绘制为时间和频率的函数(以赫兹为单位),并使用RowTimes作为时间轴的基础。
若要查看标量图点的时间、频率和大小,请在图轴工具栏中启用数据提示,并单击标量图中的所需点。
请注意
在策划之前,类
清除(clf
)目前的数字。若要在子图中绘制标量图,请使用绘图函数。看到在Subplot中绘制CWT标量图.
例子
连续小波变换使用默认值
使用指定小波的连续小波变换
加载一个演讲样本。
负载<年代pan style="color:#A020F0">mtlb
加载文件mtlb.mat
带来语音信号,mtlb
,样本率,Fs
,进入工作区。显示使用凹凸小波得到的语音样本的标量图。
负载<年代pan style="color:#A020F0">mtlb类(mtlb<年代pan style="color:#A020F0">“撞”Fs)
与使用默认莫尔斯小波获得的标量图进行比较。
类(mtlb Fs)
地震数据的连续小波变换
获得神户地震资料的CWT。数据为1995年1月16日20时56分51秒(格林尼治标准时间)在澳大利亚霍巴特塔斯马尼亚大学记录的地震仪(垂直加速度,纳米/平方秒)测量数据,持续51分钟。采样频率为1hz。
负载<年代pan style="color:#A020F0">科比
绘制地震数据。
阴谋(1:元素个数(科比)。/ 60,科比)包含(<年代pan style="color:#A020F0">“时间(分钟)”) ylabel (<年代pan style="color:#A020F0">垂直加速度(nm/s^2))标题(<年代pan style="color:#A020F0">《神户地震资料》网格)<年代pan style="color:#A020F0">在轴<年代pan style="color:#A020F0">紧
获得CWT、频率和影响锥。
[wt,f,coi] = cwt(神户,1);
查看范围图,包括影响锥。
类(科比,1)
通过指定采样周期而不是采样频率,可以获得CWT、时间段和影响锥。
[wt,周期,coi] = cwt(科比,分钟(1/60));
查看指定采样周期时生成的标量图。
类(科比、分钟(1/60))
两个复指数的连续小波变换
创建两个不同振幅的复指数,频率分别为32和64 Hz。数据采样频率为1000hz。两个复指数在时间上有不相交的支持。金宝app
Fs = 1e3;t = 0:1/Fs:1;z = exp(1 * 2 *π* 32 * t)。* (t > = 0.1 & t < 0.3) + 2 * exp(1 * 2 *π* 64 * t)。* (t > 0.7);
添加标准偏差为0.05的复高斯白噪声。
wgnNoise = 0.05 /√(2)* randn(大小(t)) + 1 * 0.05 /√(2)* randn(大小(t));z = z+wgnNoise;
使用莫尔斯小波获得并绘制cwt。
类(z, Fs)
请注意,颜色条中复指数分量的大小本质上是它们的振幅,尽管它们在不同的尺度上。这是L1归一化的直接结果。您可以通过执行此脚本并使用数据游标查看每个子图来验证这一点。
正弦和小波系数振幅
这个例子表明,信号中振荡分量的振幅与相应小波系数的振幅一致。
在时间上创建一个由两个不相交的正弦信号组成的信号。金宝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)+<年代pan style="color:#0000FF">...Amp2 *sin(2*pi*frq2*t).*(t>0.6 & t<0.9);情节(t, x)网格<年代pan style="color:#A020F0">在包含(<年代pan style="color:#A020F0">“时间(sec)”) ylabel (<年代pan style="color:#A020F0">“振幅”)标题(<年代pan style="color:#A020F0">“信号”)
创建一个可应用于信号的CWT滤波器组。由于信号分量频率是已知的,所以将滤波器组的频率限制设置为包括已知频率的狭窄范围。为了确定范围,绘制滤波器组的幅值频率响应。
fb = cwtfilterbank(SignalLength= nummel (x),SamplingFrequency=Fs,<年代pan style="color:#0000FF">...FrequencyLimits = [100]);freqz(神奇动物)
使用类
和滤波器组来绘制信号的标量图。
类(x, FilterBank = fb)
使用数据游标来确认小波系数的振幅本质上等于正弦分量的振幅。您的结果应该与下图中的结果类似。
多时间序列CWT滤波器组的应用
这个例子展示了在计算多个时间序列的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
.显示运行时间。
抽搐<年代pan style="color:#0000FF">为K =1:10 res(K,:,:) = cwt(x(K,:));<年代pan style="color:#0000FF">结束toc
运行时间为0.928160秒。
现在使用wt
的对象函数取每一行的CWTx
.显示运行时间。
抽搐<年代pan style="color:#0000FF">为K =1:10 res(K,:,:) = wt(fb,x(K,:));<年代pan style="color:#0000FF">结束toc
运行时间为0.393524秒。
来自CWT的CUDA代码
这个例子展示了如何使用生成的CUDA代码生成一个MEX文件来执行连续小波变换(CWT)。
首先,确保您有一个支持cuda的GPU和NVCC编译器。看到图形处理器环境检查和设置应用程序(GPU编码器)确保你有正确的配置。
创建GPU编码器配置对象。
cfg = code . gpuconfig (<年代pan style="color:#A020F0">“墨西哥人”);
生成1000hz下100,000个样本的信号。信号由两个时间支持不相交的余弦波组成。金宝app
T = 0:.001:(1e5*0.001)-0.001;X = cos(2* *32*t)*(t > 10 & t<=50)+<年代pan style="color:#0000FF">...因为(2 *π* 64 * t)。*(t >= 60 & t < 90)+<年代pan style="color:#0000FF">...0.2 * randn(大小(t));
使用单精度铸造信号。GPU计算通常在单精度下更有效。如果你的NVIDIA GPU支持,你也可以生成双倍精度的代码。金宝app
X =单(X);
生成GPU MEX文件和代码生成报告。为了允许生成MEX文件,您必须指定三个输入参数的属性(类、大小和复杂度):
coder.typeof(单(0)1 e5 [1])
指定长度为100,000的包含实数的行向量单
值。编码器。typeof('c',[1 inf])
指定任意长度的字符数组。coder.typeof (0)
指定一个实数双
价值。
Sig = code .typeof(single(0),[1 1e5]);Wav = code .typeof(<年代pan style="color:#A020F0">“c”[1正]);SFRQ = code .typeof(0);codegen<年代pan style="color:#A020F0">类配置cfgarg游戏{团体,wav, sfrq}报告
代码生成成功:查看报告
-report标志是可选的。使用报告
生成代码生成报告。在<年代tr在g class="emphasis bold">总结在报表的TAB中,可以找到<年代tr在g class="emphasis bold">GPU代码度量链接,它提供了详细的信息,如生成的CUDA内核的数量和分配了多少内存。
在数据上运行MEX文件并绘制标量图。确认图与两个不相交的余弦波一致。
[cfs,f] = cwt_mex(x,<年代pan style="color:#A020F0">“莫尔斯”1 e3);图像(<年代pan style="color:#A020F0">“XData”t<年代pan style="color:#A020F0">“YData”f<年代pan style="color:#A020F0">“CData”、abs (cfs)、<年代pan style="color:#A020F0">“CDataMapping”,<年代pan style="color:#A020F0">“缩放”甘氨胆酸)组(,<年代pan style="color:#A020F0">“YScale”,<年代pan style="color:#A020F0">“日志”)轴<年代pan style="color:#A020F0">紧包含(<年代pan style="color:#A020F0">“时间(秒)”) ylabel (<年代pan style="color:#A020F0">“频率(赫兹)”)标题(<年代pan style="color:#A020F0">《双音信号的标量图》)
运行上面的CWT命令,但不附加_
墨西哥人
.确认MATLAB和GPU的MEX标度图一致。
[cfs2,f2] = cwt(x,<年代pan style="color:#A020F0">“莫尔斯”1 e3);马克斯(abs (cfs2 (:) cfs (:)))
ans =<年代pan class="emphasis">单7.3380 e-07
更改默认频率轴标签
这个例子展示了当您获得一个没有输出参数的图时,如何更改CWT的默认频率轴标签。
创建两个频率为32和64赫兹的正弦波。数据采样频率为1000hz。两个正弦波在时间上有不相交的支撑。金宝app添加标准偏差为0.05的高斯白噪声。使用默认的莫尔斯小波获取并绘制CWT。
Fs = 1e3;t = 0:1/Fs:1;x = cos(2 *π* 32 * t) * (t > = 0.1 & t < 0.3) +罪(2 *π* 64 * t) * (t > 0.7);wgnNoise = 0.05*randn(size(t));x = x+wgnNoise;类(x, 1000)
该图使用对数频率轴,因为CWT中的频率是对数的。在MATLAB中,对数轴以10(几十)的幂为单位。你可以使用cwtfreqbounds
确定给定信号长度、采样频率和小波的最小和最大小波带通频率。
[minf,maxf] = cwtfreqbounds(数字(x),1000);
你可以看到MATLAB默认将频率刻度设置为10和100因为这是最小频率和最大频率之间10的幂。如果您希望添加更多的频率轴刻度,您可以使用以下方法获得最小频率和最大频率之间的对数间隔频率集。
Numfreq = 10;Freq = logspace(log10(minf),log10(maxf),numfreq);
接下来,获取当前轴的句柄,并将频率轴刻度和标签替换为以下内容。
AX = gca;斧子。YTickLabelMode =<年代pan style="color:#A020F0">“汽车”;斧子。YTick =频率;
在CWT中,频率以2的幂计算。要以2的幂创建频率刻度和刻度标签,可以执行以下操作。
newplot cwt(x,1000) AX = gca;频率= 2.^(round(log2(minf)):round(log2(maxf)));斧子。YTickLabelMode =<年代pan style="color:#A020F0">“汽车”;斧子。YTick =频率;
改变尺度图的颜色
这个例子展示了如何在每个层次上按最大绝对值缩放标量图值。
加载一个信号并显示默认的标量图。将颜色映射更改为粉色(240)
.
负载<年代pan style="color:#A020F0">noisdopp类(noisdopp) colormap(粉红色(240))
取信号的CWT,得到小波系数和频率。
[cfs,frq] = cwt(噪声分量);
为了有效地找到每个频率(水平)系数的最大值,首先转置系数的绝对值。求每一层的最小值。在每个级别上,减去级别的最小值。
Tmp1 = abs(cfs);T1 = size(tmp1,2);Tmp1 = Tmp1 ';Minv = min(tmp1);Tmp1 = (Tmp1 -minv(ones(1,t1),:));
求的每一层的最大值tmp1
.对于每个级别,将每个值除以该级别的最大值。将结果乘以色图中的颜色数量。设等于1个全部为0的元素。转置结果。
Maxv = max(tmp1);maxvArray = maxv(ones(1,t1),:);指数= maxvArray
显示结果。标量图值现在按每个级别的最大绝对值进行缩放。频率以线性比例显示。
T = 0:length(noisdopp)-1;pcolor (t frq tmp2)阴影<年代pan style="color:#A020F0">插值函数包含(<年代pan style="color:#A020F0">“时间”(样本)) ylabel (<年代pan style="color:#A020F0">归一化频率(周期/样本))标题(<年代pan style="color:#A020F0">“按等级缩放的尺度图”(粉红色(240))颜色条
改变时间带宽乘积
这个例子说明了增加时间-带宽乘积<年代pan class="inlineequation"> 莫尔斯小波的变化会产生一个在包络线下有更多振荡的小波。增加<年代pan class="inlineequation"> 缩小小波的频率。
创建两个过滤器组。一个过滤器组具有默认值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))网格<年代pan style="color:#A020F0">在持有<年代pan style="color:#A020F0">在Plot (t,real(m60)) Plot (t,imag(m60))保留<年代pan style="color:#A020F0">从Xlim ([-30 30])<年代pan style="color:#A020F0">“abs (m60)”,<年代pan style="color:#A020F0">“真正的(m60)”,<年代pan style="color:#A020F0">“图像放大(m60)”)标题(<年代pan style="color:#A020F0">"TimeBandwidth = 60") subplot(2,1,2) plot(t,abs(m10))网格<年代pan style="color:#A020F0">在持有<年代pan style="color:#A020F0">在Plot (t,real(m10)) Plot (t,imag(m10))保留<年代pan style="color:#A020F0">从Xlim ([-30 30])<年代pan style="color:#A020F0">“abs (m10)”,<年代pan style="color:#A020F0">“真正的(m10)”,<年代pan style="color:#A020F0">“图像放大(m10)”)标题(<年代pan style="color:#A020F0">"TimeBandwidth = 10")
的顶点对齐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)).']<年代pan style="color:#A020F0">在传奇(<年代pan style="color:#A020F0">"时间-带宽= 60",<年代pan style="color:#A020F0">"时间-带宽= 10")标题(<年代pan style="color:#A020F0">“幅度频率响应”)
在Subplot中绘制CWT标量图
此示例显示如何在图形子图中绘制CWT标量图。
加载演讲样本。数据采样频率为7418hz。绘制默认的CWT标量图。
负载<年代pan style="color:#A020F0">mtlb类(mtlb Fs)
得到信号的连续小波变换,以及CWT的频率。
[cfs,frq] = cwt(mtlb,Fs);
的类
函数设置标量图中的时间轴和频率轴。创建一个表示采样时间的向量。
tms =(0:数字(mtlb)-1)/Fs;
在一个新的图形中,在上面的子图中绘制原始信号,在下面的子图中绘制标量图。在对数刻度上画出频率。
图subplot(2,1,1) plot(tms,mtlb)轴<年代pan style="color:#A020F0">紧标题(<年代pan style="color:#A020F0">“信号与尺度图”)包含(<年代pan style="color:#A020F0">“时间(s)”) ylabel (<年代pan style="color:#A020F0">“振幅”)子图(2,1,2)面(tms,frq,abs(cfs))轴<年代pan style="color:#A020F0">紧阴影<年代pan style="color:#A020F0">平包含(<年代pan style="color:#A020F0">“时间(s)”) ylabel (<年代pan style="color:#A020F0">“频率(赫兹)”甘氨胆酸)组(,<年代pan style="color:#A020F0">“yscale”,<年代pan style="color:#A020F0">“日志”)
输入参数
x
- - - - - -<年代pan itemprop="purpose">输入信号
实值或复值向量|<年代pan itemprop="inputvalue">时间表|<年代pan itemprop="inputvalue">gpuArray
输入信号,指定为实值或复值向量,或单变量定期采样时间表。输入x
必须至少有四个样本。
的类
函数也接受GPU阵列输入。有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
数据类型:单
|双
复数支持:金宝app是的
wname
- - - - - -<年代pan itemprop="purpose">分析小波
“莫尔斯”
(默认)|<年代pan itemprop="inputvalue">“埃莫”
|<年代pan itemprop="inputvalue">“撞”
分析小波用于计算CWT。有效的选项wname
是“莫尔斯”
,“埃莫”
,“撞”
,分别指定Morse、Morlet (Gabor)和bump小波。
默认的莫尔斯小波具有对称参数gamma (<年代pan class="inlineequation"> )等于3,时间-带宽乘积等于60。
数据类型:字符
|字符串
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
例子:wt = cwt(x,"bump",VoicesPerOctave=10)
的CWTx
使用凹凸小波,每八度10个声音。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:wt = cwt(x,"ExtendedSignal",true,"FrequencyLimits",[0.1 0.2])
对称扩展输入信号,并指定每个周期0.1到0.2个样本的频率限制。
ExtendSignal
- - - - - -<年代pan itemprop="purpose">对称扩展输入信号
真正的
或1
(默认)|<年代pan itemprop="inputvalue">假
或0
通过反射对称扩展输入信号的选项,指定为下列之一:
1
(真正的
) -对称扩展0
(假
) -不对称扩展
如果ExtendSignal
是假
时,信号周期性扩展。对称扩展信号可以缓解边界效应。
请注意
如果你想反转CWT使用icwt
与缩放系数和近似合成滤波器,设置ExtendSignal
来假
.
数据类型:逻辑
FrequencyLimits
- - - - - -<年代pan itemprop="purpose">频率的限制
二元标量向量
CWT中使用的频率限制,指定为具有严格递增项的两元向量。第一个元素指定最小峰值通带频率,必须大于或等于小波峰值频率(以赫兹为单位)和两个时间标准差除以信号长度的乘积。第二个元素指定最高峰值通带频率,必须小于或等于奈奎斯特频率。频率上限之比的以2为底的对数,freqMax
,到低频极限,freqMin
,必须大于或等于1 / NV
,在那里NV
是每八度音的声数:
日志<年代ub>2(freqMax/freqMin)≥1/NV
.
如果你指定的频率限制超出了允许范围,类
将限制截断为最小有效值和最大值。使用cwtfreqbounds
以确定CWT不同参数化的频率限制。对于复值信号,(-1)×flimits
用于反解析部分,在哪里flimits
向量是由FrequencyLimits
.
例子:wt = cwt(x,1000,VoicesPerOctave=10,FrequencyLimits=[80 90])
数据类型:双
PeriodLimits
- - - - - -<年代pan itemprop="purpose">时间限制
二元持续时间数组
在CWT中使用的周期限制,指定为严格增加正条目的双元素持续时间数组。第一个元素必须大于或等于2 ×ts
在哪里ts
是采样周期。最大周期不能超过信号长度除以小波的两个时间标准差与小波峰值频率的乘积。最小周期之比的对数以2为底,minP
,到最大周期,maxP
,必须小于或等于1 / NV
,在那里NV
是每八度音的声数:
日志<年代ub>2(pMin/pMax)≤-1/NV
.
如果你指定的时间段超出了允许的范围,类
将限制截断为最小有效值和最大值。使用cwtfreqbounds
确定小波变换不同参数化的周期限制。对于复值信号,(-1)×plimits
用于反解析部分,在哪里plimits
向量是由PeriodLimits
.
例子:wt = cwt(x,seconds(0.1),VoicesPerOctave=10,PeriodLimits=[seconds(0.2) seconds(3)])
数据类型:持续时间
VoicesPerOctave
- - - - - -<年代pan itemprop="purpose">每八度音的声数
10
(默认)|<年代pan itemprop="inputvalue">1 ~ 48之间的整数
用于CWT的每八度的声音数,指定为1到48之间的整数。CWT音阶使用每八度指定的声音数进行离散化。小波在频率和时间上的能量分布自动决定了小波的最小和最大尺度。
TimeBandwidth
- - - - - -<年代pan itemprop="purpose">莫尔斯小波的时间-带宽乘积
60
(默认)|<年代pan itemprop="inputvalue">大于等于3且小于等于120的标量
莫尔斯小波的时间带宽积,指定为大于或等于3和小于或等于120的标量。对称参数,gamma (<年代pan class="inlineequation">
)的值固定为3。具有较大时频乘积的小波在时间上的扩展较大,而在频率上的扩展较窄。下载188bet金宝搏摩尔斯小波在时间上的标准差约为√TimeBandwidth / 2)
.摩尔斯小波在频率上的标准差约为1/2 ×根号(2/TimeBandwidth)
.
如果你指定TimeBandwidth
,你不能指定WaveletParameters
.要指定对称性和时间-带宽积,请使用WaveletParameters
代替。
用符号表示莫尔斯小波,TimeBandwidth
是P2.
WaveletParameters
- - - - - -<年代pan itemprop="purpose">莫尔斯小波的对称性和时间带宽积
(3、60)
(默认)|<年代pan itemprop="inputvalue">标量的两元向量
莫尔斯小波的对称性和时间带宽的乘积,指定为标量的两元向量。第一个元素是对称性,<年代pan class="inlineequation"> ,必须大于或等于1。第二个元素是时间-带宽乘积,它必须大于或等于<年代pan class="inlineequation"> .时间-带宽乘积与<年代pan class="inlineequation"> 不能超过40。
当<年代pan class="inlineequation"> = 3时,莫尔斯小波在频域完全对称,偏度为0。当<年代pan class="inlineequation"> 大于3,偏度为正。当<年代pan class="inlineequation"> 小于3,偏度为负。
有关更多信息,请参见莫尔斯小波.
如果你指定WaveletParameters
,你不能指定TimeBandwidth
.
FilterBank
- - - - - -<年代pan itemprop="purpose">CWT滤波器组
cwtfilterbank
对象
用于计算CWT的CWT滤波器组,指定为cwtfilterbank
对象。如果你设置FilterBank
,不能指定其他选项。计算CWT的所有选项都定义为滤波器组的属性。有关更多信息,请参见cwtfilterbank
.
如果x
是否有时间表,采样频率或采样周期神奇动物
必须与所确定的采样频率或采样周期一致RowTimes
时间表。
例子:wt = cwt(x,FilterBank=cfb)
输出参数
神奇动物
- CWT滤波器组
cwtfilterbank
对象
在CWT中使用的CWT滤波器组,返回为cwtfilterbank
对象。看到cwtfilterbank
.
scalingcfs
-缩放系数
实值或复值向量
CWT的缩放系数,作为实值或复值向量返回。的长度scalingcfs
等于输入的长度x
.
更多关于
分析小波
分析小波是复值小波,其傅里叶变换在负频率时消失。当用CWT进行时频分析时,分析小波是一个很好的选择。由于小波系数是复值的,这些系数提供了被分析信号的相位和幅值信息。分析小波非常适合于研究现实世界中非平稳信号的频率内容是如何随时间变化的。
解析小波几乎完全基于速降函数。如果<年代pan class="inlineequation"> 是一个解析速降函数,那么它的傅里叶变换<年代pan class="inlineequation"> 在频率上是一个速降函数,在某个区间外是小的<年代pan class="inlineequation"> 在哪里<年代pan class="inlineequation"> .正交小波和双正交小波通常被设计成具有紧凑的时间支持。金宝app在时间上支持紧密的小波相对于在时间上支持迅速金宝app衰减的小波在频率上的能量集中相对较差。大多数正交小波和双正交小波在傅里叶域中是不对称的。
如果您的目标是获得信号的联合时频表示,我们建议您使用类
或cwtfilterbank
.两个函数都支持以下解析小波:金宝app
莫尔斯小波族(默认)
解析Morlet (Gabor)小波
撞
如果你想用正交或双正交小波做时频分析,我们推荐modwpt
.
当使用小波进行时频分析时,通常将尺度转换为频率或周期以解释结果。类
而且cwtfilterbank
进行转换。可以通过。获取对应的量表尺度
关于可选选项类
输出参数神奇动物
.
提示
旧的语法
类
函数继续工作,但不再推荐使用。的当前版本类
.旧版本和当前版本都使用相同的函数名。函数的输入自动决定使用哪个版本。看到CWT函数语法已经改变.当执行多个cwt时,例如在for循环中,建议的工作流是首先创建一个
cwtfilterbank
对象,然后使用wt
对象的功能。这个工作流最小化了开销并最大化了性能。看到多时间序列CWT滤波器组的应用.
算法
最小规模
要确定最小尺度,请找到峰值频率<年代pan class="inlineequation"> 基小波的。对于莫尔斯小波,扩大小波,使小波的傅里叶变换<年代pan class="inlineequation"> 弧度等于峰值频率的10%最小的尺度出现在最大的频率上:
因此,最小的尺度是(2,<年代pan class="inlineequation"> ).对于莫尔斯小波,最小的尺度通常是<年代pan class="inlineequation"> .Morlet小波的最小尺度通常为2。
最大的规模
基于小波在频率和时间上的能量分布,自动确定CWT的最小和最大尺度。为了确定最大尺度,CWT使用以下算法。
摩尔斯小波在时间上的标准差,<年代pan class="inlineequation"> ,约为<年代pan class="inlineequation"> ,在那里<年代pan class="inlineequation"> 是时间-带宽乘积。频率的标准差,<年代pan class="inlineequation"> ,约为<年代pan class="inlineequation"> .如果你把小波缩放一些<年代pan class="inlineequation"> 时,持续时间变为<年代pan class="inlineequation"> ,这是小波被拉伸到等于全长(N样本)的输入。你不能平移这个小波或者在不引起它缠绕的情况下进一步拉伸它,所以最大的尺度是<年代pan class="inlineequation"> .
小波变换尺度为2的幂,表示为<年代pan class="inlineequation"> .NV每八度的声音数,和j取值范围为0到最大。对于一个特定的小范围,<年代pan class="inlineequation"> :
转换为log2:
因此,最大尺度为
CWT的L1范数
在积分形式下,CWT保存能量。然而,当你在数值上实现CWT时,能量并没有被保留。在这种情况下,不管你使用什么归一化,CWT都不是一个标准正交变换。的类
函数使用L1归一化。
小波变换通常使用L2归一化的小波。对于L2范数,将信号膨胀1/年代,在那里年代大于0,定义如下:
现在的能量是年代乘以原始能量。当包含在傅里叶变换中,乘以<年代pan class="inlineequation"> 在不同的尺度上施加不同的权重,使高频的峰值比低频的峰值减少更多。
在许多应用中,L1归一化更好。L1范数定义不包括该值的平方,因此保留因子为1/年代而不是<年代pan class="inlineequation"> .对于L1归一化,所有频率振幅都归一化为相同的值,而不是像L2范数那样降低高频振幅。因此,使用L1范数可以更准确地表示信号。看例子两个复指数的连续小波变换.
参考文献
莉莉,J. M.和S. C.奥尔赫德。广义莫尔斯小波作为解析小波的超族IEEE信号处理汇刊60,不。11(2012年11月):6036-6041。https://doi.org/10.1109/TSP.2012.2210890。
莉莉,j.m.和S.C.奥尔赫德。解析小波的高阶性质IEEE信号处理汇刊57岁的没有。1(2009年1月):146-160https://doi.org/10.1109/TSP.2008.2007607。
莉莉,j.m.。jLab: Matlab的数据分析包,版本1.6.2。2016.http://www.jmlilly.net/jmlsoft.html。
[4] Lilly, Jonathan M.《元素分析:基于小波的分析有噪声时间序列中时间局部化事件的方法》皇家学会学报A:数学,物理和工程科学473年,没有。2200(2017年4月30日):20160776。https://doi.org/10.1098/rspa.2016.0776。
扩展功能
GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。
使用注意事项和限制:
支持单、双精度输入信号。金宝app精度必须在编译时设置。
不支持时间表输入信号。金宝app
只有解析型摩尔斯(
“莫尔斯”
)及莫雷(“爱”
)支持小波。金宝app不支持以下输入参数:采样周期(金宝app
ts
),PeriodLimits
名称-值对,NumOctave
名值对,和FilterBank
名称-值对。不支持缩放系数输出和滤波器组输出。金宝app
不支持绘图。金宝app
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
本功能完全支持GPU阵列。金宝app有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
在R2016b中引入R2018a:<年代pan class="remove_bold">“NumOctaves”
名称-值参数将被删除
的NumOctaves
名称-值参数将在未来的版本中删除。使用:
名称-值参数
FrequencyLimits
修改CWT的频率范围。名称-值参数
PeriodLimits
,修改CWT的周期范围。
看到cwtfreqbounds
获取更多信息。
R2016b:<年代pan class="remove_bold">类
函数语法已经改变
该版本提供了连续小波变换的更新版本,类
.使用新的简化语法,您可以轻松地选择最适合连续小波分析的小波、频率或周期范围以及每八度音阶的声音。提供了小波和缩放的默认值,因此不需要指定。
旧的语法类
函数继续工作,但不再推荐使用。的更新版本类
.旧版本和更新版本都使用相同的函数名。函数的输入自动决定使用哪个版本。
功能 | 用这个代替 | 兼容性的考虑 |
---|---|---|
老类 |
更新类 |
更新的所有实例 |
另请参阅
应用程序
功能
cwtfilterbank
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">icwt
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">cwtfreqbounds
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。