名为“signalMask”的一个新对象,允许您将感兴趣的区域表序列面具。
您可以使用此区域表转换为一个面具,然后裂缝成更小的序列,序列可用于训练模型。
可在R2020b“signalMask”。请参考这个网站更多的想法:
块信号函数和他们的计划在将来的版本中添加标签。
下面的例子展示了标记信号区域分块训练LSTM网络学习如何分段信号:
有一个脚本块信号和使用“signalMask”标签,和不使用“signalMask”:
%获得数据
负载(“ls_125.mat”)
%转换标签分类(数字不支持)金宝app
regionsTbl = ls.Labels.cessation {1};
regionsTbl。值=分类(cell2mat (regionsTbl.Value));
%的信号采样率
signalTbl = ls.Source {1};
signalVector = signalTbl.Sig;
Fs = 1 /秒(意味着(diff (signalTbl.Time)));
%序列长度
seqLength =身高(ls.Source {1});
% %获得分类序列使用signalMask (20 b)
%的信号掩码基于区域标签
m = signalMask (regionsTbl“SampleRate”Fs);
% roi表掩码转换为一个分类序列长度=信号长度的面具
sequenceMask = catmask (m, seqLength);
不使用signalMask % %获得分类序列
%将地区从秒到样品
regionsMatrix = min (seqLength 1 +轮(regionsTbl {: 1} * Fs));
sequenceMask =分类(字符串(seqLength, 1));
为idx = 1:尺寸(regionsMatrix, 1)
投资回报率= regionsMatrix (idx:);
sequenceMask (roi (1): roi (2), 1) = regionsTbl.Value (idx);
结束
% %的信号块为每个块和该地区的标签
%调整信号和lanel序列基于期望的块长度
chunkLength = 1000;
numChunks =地板(seqLength / chunkLength);
sequenceMask = sequenceMask (1: numChunks * chunkLength);
signalVector = signalVector (1: numChunks * chunkLength);
%的每个块及其下面矩阵对应一个信号
%相应标签掩码
signalChunks =重塑(signalVector chunkLength numChunks);
labelSequenceChunks =重塑(sequenceMask chunkLength numChunks);