Waveform Segmentation Using Deep Learning: Error on getmask

We are implementing it as described in [Waveform Segmentation Using Deep Learning].
I get an error in the following process and cannot proceed.
type getmask.m
trainDs = transform(trainDs, @getmask);
testDs = transform(testDs, @getmask);
The error statement is as follows
Error: nargin
The function getmask does not exist.
Error: matlab.io.datastore.(148)
tFuncArgs = nargin(fun);
Error:matlab.io.datastore.internal.buildTransformedDatastore(line 65)
tds =
matlab.io.datastore.TransformedDatastore(datastores,
fcn, ...
Error: matlab.io.Datastore/transform (line 359)
dsnew =
matlab.io.datastore.internal.buildTransformedDatastore(varargin{:});
Error: segmentation_default (line 30)
trainDs = transform(trainDs, @getmask);

2 个评论

What MATLAB release/version are you running?
The current online documentation is for R2020b, so if you are running an earlier version, it may not apply, and you may not be able to use all the examples in the online documentation. (I am not certain when the Waveform Segmentation Using Deep Learning Example first appeared, so I cannot determine the first release/version that will work with it.)
Dear Star Strider
Thank you for your comment.
The version of Matlab is R2020b.
Also, the required Toolbox version is as follows
Deep Learning Toolbox Ver14.1
Signal Processing Toolbox Ver8.5

请先登录,再进行评论。

 采纳的回答

You need to create it from the code they gave you on the page:
function outputCell = getmask(inputCell)
%GETMASK Convert region labels to a mask of labels of size equal to the
%size of the input ECG signal.
%
% inputCell is a two-element cell array containing an ECG signal vector
% and a table of region labels.
%
% outputCell is a two-element cell array containing the ECG signal vector
% and a categorical label vector mask of the same length as the signal.
% Copyright 2020 The MathWorks, Inc.
sig = inputCell{1};
roiTable = inputCell{2};
L = length(sig);
M = signalMask(roiTable);
% Get categorical mask and give priority to QRS regions when there is overlap
mask = catmask(M,L,'OverlapAction','prioritizeByList','PriorityList',[2 1 3]);
% Set missing values to "n/a"
mask(ismissing(mask)) = "n/a";
outputCell = {sig,mask};
end

2 个评论

Dear Image Analyst
Thank you for your comment.
By creating getmask.m, we were able to get rid of the initial error.
However, I still get the following error, so I'll check it out.
Error: catmask
PriorityList should be an array with 4 elements.
Error: signalMask/catmask (line 403)
PriorityList,{'numeric'},{'vector','positive','numel',obj.pNumCategories},'catmask','PriorityList ');
Error: getmask (line 19)
mask = catmask(M,L, 'OverlapAction', 'prioritizeByList', 'PriorityList',[2 13]);
Error: matlab.io.datastore.TransformedDatastore/applyTransforms (line 619)
data = ds.Transforms{ii}(data);
Error: matlab.io.datastore.TransformedDatastore/read (line 222)
[data, info] = ds.applyTransforms(data, info);
Error: matlab.io.datastore.TransformedDatastore/preview (line 288)
dataFromRead = read(copyds);
Error: segmentation_default (line 30)
transformedData = preview(trainDs)
I solved the problem in the following way
1. completely deleted the data that had been downloaded in the Japanese version (2020a)
2. download the example (2020b) from the Matlab website again and run it
There were problems caused by the mixing of multiple environments.
Thank you for your support.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 AI for Signals 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by