为什么会有这个问题当我跟随波形分割使用深度学习问题文档?

18视图(30天)
我想检测波形是否弧形断层或nuissance错。
对于本文档, //www.tatmou.com/help/signal/ug/waveform-segmentation-using-deep-learning.html 下载并准备数据部分,谈到resizeData函数的文档,我寻找相同的功能,因为我的代码错误,我相信是有原因的。谁能直接向resizeData函数在哪里吗?
在文档中,谈到心电图信号,附加的信号的信号,我努力训练,这是迄今为止我所写的代码。
我主要错误rawNet说,我不知道为什么
%加载数据
datasetFolder = fullfile (“信号培训文件夹”)
sds = signalDatastore (datasetFolder,“SignalVariableNames”,(“faultSignalCondition”,“signalLabels”])
data =预览(sds)
%分成训练数据
{2}(数据)
M = signalMask数据({2});
plotsigroi (M,数据{1}(1:1000))
rng默认的
[trainIdx ~, testIdx] = dividerand(元素个数(sds.Files), 0.7, 0, 0.3);
trainDs =子集(sds、trainIdx);
testDs =子集(sds、testIdx);
类型getmask.m
trainDs =变换(trainDs @getmask);
testDs =变换(testDs @getmask);
transformedData =预览(trainDs)
情节(transformedData {2} (1:1000))
trainDs =变换(trainDs @resizeData);
testDs =变换(testDs @resizeData);
预览(trainDs)
tallTrainSet =高(trainDs);
tallTestSet =高(testDs);
trainData =收集(tallTrainSet);
:trainData (1)
testData =收集(tallTestSet);
信号到LSTM网络
% actionFlag =“列车网络”
%如果actionFlag = =“下载网络”
%的负载(“trainedNetworks.mat”)
%结束
负载LSTM_layers_2.mat
%培训选项
选择= trainingOptions (“亚当”,
“MaxEpochs”10
“MiniBatchSize”,50岁,
“InitialLearnRate”,0.01,
“LearnRateDropPeriod”3,
“LearnRateSchedule”,“分段”,
“GradientThreshold”,1
“阴谋”,“训练进步”,
“洗牌”,“every-epoch”,
“详细”0,
“DispatchInBackground”,真正的);
%火车LSTM网络
trainDataInput = trainData (: 1)
% trainDataInput = trainDataInput {: 1}
% trainDataInput_Curr = trainDataInput (: 1);
% trainDataInput_RSSI = trainDataInput (:, 2);
trainDataOutput = trainData (:, 2);
trainDataOutput = trainDataOutput {1}
% rawNet = trainNetwork (trainDataOutput layers_2,选项);
得到掩模函数
函数outputCell = getmask (inputCell)
% GETMASK区域标签转换为标签的大小等于的面具
%输入心电信号的大小。
%
% inputCell双元素单元阵列是一个包含一个心电图信号向量
%和地区表标签。
%
% outputCell双元素单元阵列是一个包含ECG信号向量
%和分类标签向量长度相同的面具的信号。
sig = inputCell {1};
roiTable = inputCell {2};
L =长度(团体);
M = signalMask (roiTable);
%得到直言面具和优先QRS区域有重叠
掩码= catmask (M, L,“OverlapAction”,“prioritizeByList”,“PriorityList”[1,2]);%我改变,这可能是这个问题
%设置缺失值“n / a”
面具(ismissing(面具))=“n / a”;
outputCell ={团体,面膜};
结束
层,这些是我的,我不能上传任何附件,但这些层的层使用
层= [
sequenceInputLayer (28271)%一个视频关于这个文档中,他们用1,但是我没有,这是问题吗?
lstmLayer (138“OutputMode”,“序列”)
fullyConnectedLayer (4)
softmaxLayer
classificationLayer];
有任何可以帮助调整或一般的问题?我不介意更详细地讨论这个问题。

答案(1)

YANHUI李
YANHUI李 2023年3月28日
函数outputCell = resizeData (inputCell)
% RESIZEDATA输入心电信号和标签掩码分解成段的长度
% 5000。
%
% inputCell是一个包含一个心电图信号和一个双元素单元阵列
%标签掩码。
%
% outputCell是一个两列单元阵列包含尽可能多的5000 -长
%的信号段和标签可以生成的面具
%的输入数据。
% 2019年版权MathWorks公司。
targetLength = 5000;
sig = inputCell {1};
掩码= inputCell {2};
%得到块的数量
numChunks =地板(大小(sig, 1) / targetLength);
%截断信号掩码块的整数
团体=团体(1:numChunks * targetLength);
掩码=面具(1:numChunks * targetLength);
%创建一个包含信号块单元阵列
sigOut =重塑(团体、targetLength numChunks) ';
sigOut = num2cell (sigOut 2);
%创建一个单元阵列包含掩模块
lblOut =重塑(面具,targetLength numChunks) ';
lblOut = num2cell (lblOut 2);
%输出一个两列单元阵列块
outputCell = [sigOut, lblOut];
结束

类别

找到更多的在人工智能的信号帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的