modwtLayer
最大重叠离散小波变换(MODWT)层
描述
MODWT层计算输入的MODWT和MODWT多分辨率分析(MRA)。使用这一层需要深度学习工具箱™。
创建
描述
属性
MODWT
小波
- - - - - -正交小波
“sym4”
(默认)|特征向量|字符串标量
此属性是只读的。
MODWT中使用的正交小波的名称,指定为字符向量或字符串标量。
在小波管理器中,将正交小波指定为第1类小波。有效的内建正交小波族开始于“哈雾”
,的数据库N'
,的颗N'
,“头巾N'
,的提单N'
,“汉老.LP'
,“信谊N'
,“乌”
,或“beyl”
.使用waveinfo
使用小波族短名称查看任何数字后缀的支持值以及如何解释这些值。例如,waveinfo(汉族)
.
小波由wname,相关的低通和高通滤波器罗
而且嗨
分别是(~, ~,嗨)= wfilters (wname)
.
数据类型:字符
|字符串
LowpassFilter, HighPassFilter
- - - - - -初始小波滤波器对
就是实值向量
此属性是只读的。
初始小波滤波器对,指定为一对偶长实值向量。向量的长度必须相等。LowpassFilter
而且HighpassFilter
必须分别对应低通和高通滤波器,与正交小波相关联。您可以使用isorthwfb
确定正交性。
(~, ~,嗨)= wfilters (“db2”);[tf,检查]= isorthwfb (Lo,嗨);
[]
而且modwtLayer
使用小波
以确定MODWT中使用的滤波器。
不能同时指定小波名称和小波过滤器对。
例子:层= modwtLayer(‘LowpassFilter’,‘HighpassFilter’,嗨)
数据类型:单
|双
水平
- - - - - -变换水平
5
(默认)|正整数
此属性是只读的。
转换级别以计算MODWT,指定为小于或等于的正整数地板(log2 (N))
,在那里N是在时间维度中输入的层的大小。
数据类型:单
|双
边界
- - - - - -边界条件
“周期”
(默认)|“反射”
此属性是只读的。
用于MODWT计算的边界条件,指定为以下之一:
“周期”
-信号沿时间维度周期性地扩展。小波系数的个数等于信号在时间维度上的大小。“反射”
—在计算MODWT之前,信号在终端端沿时间维对称反射。返回的小波系数的数量是输入信号长度的两倍。
SelectedLevels
- - - - - -选定的水平
1:水平
(默认)|向量
水平
此属性是只读的。
选定的水平modwtLayer
输出,指定为小于或等于的正整数的向量水平
.
数据类型:单
|双
IncludeLowpass
- - - - - -包括低通滤波器系数
真正的
或1
(默认)|假
或0
此属性是只读的。
包括低通系数,指定为数字或逻辑1
(真正的
)或0
(假
).如果指定为真正的
, MODWT层包括水平
MODWT中的第th级低通(缩放)系数,或水平
MODWTMRA中第th级平滑。
数据类型:逻辑
AggregateLevels
- - - - - -总选择水平
假
或0
(默认)|真正的
或1
此属性是只读的。
聚合选定的级别,指定为数字或逻辑级别1
(真正的
)或0
(假
).如果指定为真正的
, MODWT层聚合所选级别和低通级别(如果IncludeLowpass
是真正的
),以求和的方式计算每个输入通道。如果AggregateLevels
是真正的
,在空间维度上的输出大小为1
.有关更多信息,比较modwtLayer Output与modwt和modwtmra Output.
数据类型:逻辑
算法
- - - - - -算法
“MODWTMRA”
(默认)|“MODWT”
此属性是只读的。
算法modwtLayer
用于计算输出,指定为以下之一:
“MODWTMRA”
-计算基于多分辨率分析的最大重叠离散小波变换。“MODWT”
-计算最大重叠离散小波变换的小波系数。
有关更多信息,请参见比较MODWT和MODWTMRA.
层
WeightLearnRateFactor
- - - - - -用于权重学习率的乘数
0
(默认)|负的标量
用于权重学习率的乘数,指定为非负标量。如果未指定,此属性默认为零,导致权重不随训练而更新。方法设置此属性setLearnRateFactor
(深度学习工具箱)函数。
可学的参数“重量”
在modwtLayer
是当前滤波器对的两行矩阵。第一行是低通滤波器,第二行是高通滤波器。默认情况下,权重是与默认小波相关的低通和高通滤波器,并且不更新。
数据类型:单
|双
的名字
- - - - - -层的名字
”
(默认)|特征向量|字符串标量
层名,指定为字符向量或字符串标量。为层
数组输入,trainNetwork
,assembleNetwork
,layerGraph
,dlnetwork
函数自动为具有此名称的层分配名称”
.
数据类型:字符
|字符串
NumInputs
- - - - - -输入数量
1
(默认)
此属性是只读的。
层的输入数。该层只接受单个输入。
数据类型:双
InputNames
- - - - - -输入名字
{'在'}
(默认)
此属性是只读的。
输入图层名称。该层只接受单个输入。
数据类型:细胞
NumOutputs
- - - - - -数量的输出
1
(默认)
此属性是只读的。
层的输出数量。这个层只有一个输出。
数据类型:双
OutputNames
- - - - - -输出的名字
{“出”}
(默认)
此属性是只读的。
输出层的名称。这个层只有一个输出。
数据类型:细胞
例子
使用modwtLayer
深度学习网络
创建一个MODWT层来计算输入信号的多分辨率分析。使用5阶的coiflet小波。将转换级别设置为8。只保留级别3、5和7的细节和近似。
层= modwtLayer(小波=“coif5”= 8级,...SelectedLevels =(3、5、7)Name =“MODWT”);
创建一个dlnetwork
对象,包含序列输入层、MODWT层和LSTM层。对于8级分解,将最小序列长度设置为2^8个样本。为了使用LSTM层,在LSTM层之前还需要一个flatten层,以将空间维度折叠为通道维度。
mLength = 2 ^ 8;sqLayer = sequenceInputLayer (Name =“输入”最小长度= mLength);layers = [sqLayer layer扁平化层lstmLayer(10,Name= .“LSTM”));dlnet = dlnetwork(层);
运行一批10个随机单通道信号通过dlnetwork
对象。检查输出的尺寸和尺寸。扁平的层塌了空间维度。
dataout = dlnet.forward (dlarray (randn (1, 2000,“单一”),“认知行为治疗”));大小(dataout)
ans =1×310 2000
dim (dataout)
ans =“认知行为治疗”
比较modwtLayer
输出与modwt
而且modwtmra
输出
加载Espiga3脑电图(EEG)数据集。数据由23路200 Hz采样的脑电图组成。每个通道有995个样本。将多信号保存为dlarray
,按顺序指定尺寸。dlarray
对象的数组尺寸排列“认知行为治疗”
深度学习网络所期望的形状。
负载Espiga3(N, nch) = (Espiga3)大小;x = dlarray (Espiga3“TCB”);
使用modwt
而且modwtmra
得到6级以下多信号的MODWT和MRA。默认情况下,modwt
而且modwtmra
使用sym4
小波。
列弗= 6;wt = modwt (Espiga3,列弗);mra = modwtmra (wt);
与modwt
创建一个可用于数据的MODWT层。将转换级别设置为6。指定使用MODWT计算输出的层。默认情况下,该层使用sym4
小波。
mlayer = = modwtLayer(水平=列弗,算法“MODWT”);
创建一个两层的dlnetwork
对象包含序列输入层和刚刚创建的MODWT层。把每个频道看作一个特色。对于第6级分解,将最小序列长度设置为2^6。
mLength = mlayer.Level;sqInput = sequenceInputLayer (nch最小长度= 2 ^ mLength);layers = [sqInput mlayer];dlnet = dlnetwork(层);
把脑电图数据通过向前
网络的方法。
向前dataout = (dlnet x);
的modwt
而且modwtmra
函数返回多通道信号的MODWT和MRA作为一个三维阵列。数组的第一、第二和第三维分别对应小波分解级别、信号长度和通道。将网络输出转换为数字数组。排列网络输出的维度以匹配函数输出。的网络输出与modwt
输出。
q = extractdata (dataout);Q = permute(Q,[1 4 2 3]);马克斯(abs (q (:) wt (:)))
ans = 8.4402 e-05
选择MODWT结果modwtLayer
.与脑电图数据中相应通道进行比较。每一层的平面图modwtLayer
输出。不同的电平包含不同频率范围内的信号信息。由于该层使用了MODWT算法,所以这些电平不是与原始信号时间对齐的。
频道= 10;t = 100:400;次要情节(lev + 2 1 1)情节(t, Espiga3 (t,频道))ylabel (“原始脑电图”)为K =2:lev+1 subplot(lev+2,1, K) plot(t,q(K -1,t,channel)) ylabel([“水平”k - 1,“MODWT”])结束次要情节(lev + 2 1列弗+ 2)情节(t, q (lev + 1 t频道))ylabel ([“缩放”,“系数”,“MODWT”set(gcf,Position=[0 0 500 700])
与modwtmra
创建第二个类似于第一个网络的网络,只不过这次指定它modwtLayer
使用MODWTMRA算法并聚合第四、第五和第六层。不要在聚合中包含低通级别。
sLevels = [4 5 6];=列弗mlayer = modwtLayer(水平,...SelectedLevels = sLevels,...IncludeLowpass = 0,...AggregateLevels = 1);layers = [sqInput mlayer];dlnet2 = dlnetwork(层);
把脑电图数据通过向前
网络的方法。将网络输出转换为数字数组。如前面所做的那样排列维度。
向前dataout = (dlnet2 x);q = extractdata (dataout);Q = permute(Q,[1 4 3 2]);
聚合MRA的第四、第五和第六层。与网络输出比较。
mraAggregate =总和(mra (sLevels,:,:));马克斯(abs (q (:) -mraAggregate (:)))
ans = 2.1036 e-04
检查该层的MODWTMRA结果。与脑电图数据中相应通道进行比较。通过只选择第四、第五和六层,而不包括低通组件,该层从信号中删除了几个高频和低频组件。变换后的信号比原始信号更平滑,并且去掉了低频分量,使得偏移量更接近于0。输出与原始信号时间对齐,因为该层使用默认的MODWTMRA算法。根据你的目标,保持时间的一致性是有用的。
频道= 10;t = 100:400;图保存在plot(t, Espiga3(t,通道))plot(t,q(1,t,1,通道))保持从传奇([“原始脑电图”,“层输出”),...位置=“西北”)
比较MODWT和MODWTMRA
这个例子演示了MODWT和MODWTMRA之间的区别。MODWT通过细节系数和缩放系数划分信号的能量。MODWTMRA将信号投射到小波子空间和缩放子空间上。
选择sym6
小波。加载并绘制心电图信号。心电信号的采样频率为180赫兹。数据取自Percival和Walden(2000),第125页(数据最初由华盛顿大学William Constantine和Per Reinhall提供)。
负载wecgt =(0:元素个数(wecg) 1) / 180;西弗吉尼亚州=“sym6”;情节(t, wecg)网格在标题(['信号长度= 'num2str(元素个数(wecg))))包含(“时间(s)”) ylabel (“振幅”)
取信号的MODWT。
西弗吉尼亚州wtecg = modwt (wecg);
输入数据是函数的样本
评估在
时间点。该函数可以表示为缩放函数的线性组合
和小波
在不同的尺度和翻译上:
在哪里
而且
是小波分解的层数。第一个和是信号的粗尺度近似,而
是在连续的尺度上的细节。MODWT返回
系数
和
细节系数
的扩张。在每一行wtecg
包含不同尺度下的系数。
当取长度信号的MODWT时
有
默认情况下的分解级别。每一级产生细节系数。只返回最后一级的缩放系数。在这个例子中,
,
的行数wtecg
是
.
MODWT在不同的尺度和比例系数上划分能量: 在哪里 是输入数据, 细节系数是成比例的吗 , 为最终级标度系数。
计算每个刻度的能量,并计算它们的和。
energy_by_scales = (wtecg。^ 2,2)总和;水平= {“D1”;“D2”;“D3”;“D4”;“D5”;“D6”;...“D7”;D8的;“D9”;“D10”;“这里”;“A11”};energy_table =表(水平,energy_by_scales);disp (energy_table)
水平energy_by_scales _______ ________________ {' D1} 14.063 20.612{“D2”}{D3的}37.716 25.123 {D4的}{}“D5”17.437 {D6的}8.9852 1.2906 {D7的}{D8的}4.7278 {D9的}12.205 76.428 {D10的}{‘这里’}76.268 3.4192{“A11”}
energy_total = varfun (@sum energy_table (:, 2))
energy_total =表格sum_energy_by_scales ____________________ 298.28
通过计算信号的能量,并将其与所有尺度上的能量之和进行比较,确认MODWT是节能的。
energy_ecg =总和(wecg。^ 2);马克斯(abs (energy_total.sum_energy_by_scales-energy_ecg))
ans = 7.4402平台以及
取信号的MODWTMRA。
西弗吉尼亚州mraecg = modwtmra (wtecg);
MODWTMRA返回函数的投影
到各个小波子空间和最终的缩放空间上。也就是说,MODWTMRA返回
和
许多
评估在
时间点。在每一行mraecg
是一个投影
在不同的子空间上。这意味着原始信号可以通过添加所有的投影来恢复。在MODWT的情况下不是这样的。将系数相加wtecg
不会恢复原来的信号。
选择一个时间点,加上投影 在该时间点进行评估,并与原始信号进行比较。
time_point = 1000;abs(总和(mraecg (:, time_point)) -wecg (time_point))
ans = 3.0846 e-13
确认,与MODWT不同,MODWTMRA不是一个能量守恒变换。
energy_ecg =总和(wecg。^ 2);energy_mra_scales = (mraecg。^ 2,2)总和;energy_mra =总和(energy_mra_scales);马克斯(abs (energy_mra-energy_ecg))
ans = 115.7053
MODWTMRA是信号的零相位滤波。功能将与时间一致。通过绘制原始信号和它的一个投影来显示这一点。为了更好地说明对齐,放大。
情节(t, wecg“b”)举行在:情节(t, mraecg (4),“- - -”)举行从网格在传说xlim (8 [4]) (“信号”,“投影”,“位置”,“西北”)包含(“时间(s)”) ylabel (“振幅”)
用相同尺度下的MODWT系数做一个相似的图。功能将不会与时间一致。MODWT不是输入的零相位滤波。
情节(t, wecg“b”)举行在:情节(t, wtecg (4),“- - -”)举行从网格在传说xlim (8 [4]) (“信号”,“系数”,“位置”,“西北”)包含(“时间(s)”) ylabel (“振幅”)
更多关于
层输出格式
modwtLayer
将输出格式化为“SCBT”
,一个一维图像序列,其中图像高度对应小波变换的级别,第二次元对应通道,第三次元对应批次,第四维对应时间。的kth行,k≤水平
,包含了k信号的细节级别。的(
第Th行包含水平
+ 1)水平
信号的平滑程度。
你可以输入输出
modwtLayer
当你想沿着水平(“S”
)维度。有关更多信息,请参见convolution1dLayer
(深度学习工具箱).供给…的输出
modwtLayer
当你想要沿时间(“T”
)尺寸,你必须在modwtLayer
.有关更多信息,请参见flattenLayer
(深度学习工具箱).你可以输入输出
modwtLayer
当你想沿着水平(“S”
)和时间(“T”
)维度。有关更多信息,请参见convolution2dLayer
(深度学习工具箱).使用
modwtLayer
作为循环神经网络的一部分,你必须在modwtLayer
.有关更多信息,请参见lstmLayer
(深度学习工具箱)而且gruLayer
(深度学习工具箱).使用…的输出
modwtLayer
将完全连接的层作为分类工作流的一部分,您必须减少时间(“T”
)的尺寸,因此它的大小为1。为了减少输出的时间维度,在完全连接层之前放置一个全局池化层。有关更多信息,请参见globalAveragePooling2dLayer
(深度学习工具箱)而且fullyConnectedLayer
(深度学习工具箱).
版本历史
介绍了R2022b
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。