Для выполнения задач автоматической маркировки можно использовать Signal Labeler. Помимо Peak Labeler, галерея Automate Value на вкладке Label содержит функции, которые можно использовать для автоматической маркировки сигналов.

Первая строка в каждой пользовательской функции автомаркировки состоит из оператора определения формы
function [labelVals,labelLocs] = fx(x,t,parentLabelVal,parentLabelLoc,varargin)Первый входной аргумент, x, - входной сигнал. При записи функции ожидайте x является матрицей, где каждый столбец содержит данные, соответствующие каналу. Если каналы имеют различную длину, то ожидайте x является массивом ячеек векторов столбцов.
Второй входной аргумент, t, сохраняет значения времени. При записи функции ожидайте t является матрицей, где каждый столбец содержит временную информацию, соответствующую каналу. Если каналы имеют различную длину, то ожидайте t является массивом ячеек векторов столбцов.
Примечание
Для одноканальных элементов пользовательские функции автомаркировки получают значения данных и времени в виде векторов двойной точности.
Для многоканальных элементов пользовательские функции автомаркировки получают значения данных и времени в виде матриц или массивов ячеек.
Пользовательские функции автомаркировки получают все каналы элемента в качестве входных данных, но они не должны работать со всеми. Можно выбрать каналы для работы с функцией.
Третий входной аргумент, parentLabelVal, - это родительское значение метки, связанное с выходной субабляцией и содержащее числовой, логический или строковый скаляр. Этот аргумент передается только для функций, автоматизирующих маркировку суббнаков. Если функция предназначена для родительской метки, ожидайте parentLabelVal быть пустым.
Четвертый входной аргумент, parentLabelLoc, содержит:
Пустой вектор, если родительская метка является атрибутом
Двухэлементный числовой вектор строки области интересов (ROI) ограничивает, когда родительская метка является ROI
Числовой скаляр, представляющий расположение точки, когда родительская метка является точкой
Этот аргумент передается только для функций, автоматизирующих маркировку суббнаков. Если функция предназначена для родительской метки, ожидайте parentLabelLoc быть пустым.
Примечание
Для родительских меток функция автомаркировки работает для каждого выбранного элемента.
Для подмаркировок функция автомаркировки работает на одном экземпляре родительской метки одновременно для каждого выбранного элемента.
Использовать varargin для указания дополнительных входных аргументов. Если у вас нет дополнительных входных аргументов, вы можете опустить varargin. Введите дополнительные аргументы в виде упорядоченного списка, разделенного запятыми, в диалоговом окне, которое появляется при нажатии кнопки «Автоматическая метка».
Первый выходной аргумент, labelVals, содержит значения меток. labelVals должно быть:
Числовой, логический или строковый скаляр, если выходные метки являются атрибутами
Вектор столбца с числовыми, логическими или строковыми значениями, если выходные метки представляют собой ROI или точки
Второй выходной аргумент, labelLocs, содержит расположения меток. labelLocs должно быть:
Пустой вектор, если выходные метки являются атрибутами
Матрица с двумя столбцами пределов ROI, когда выходные метки являются ROI
Вектор столбца расположения точек, когда выходные метки являются точками
Для реализации алгоритма можно использовать любую функцию из MATLAB ® или из любой панели инструментов, установленной в системе.
Для получения дополнительной информации см. Маркировка комплексов QRS и пиков R сигналов ЭКГ с использованием сети глубокого обучения и маркировка произносимых слов в аудиосигналах с использованием внешнего API.
Эта функция вычисляет среднее среднеквадратичное значение сигнала и помечает сигнал как числовой атрибут. Если элемент имеет более одного канала, функция вычисляет среднеквадратичное значение каждого канала и усредняет значения. Каналы могут иметь различную длину.
function [labelVals,labelLocs] = meanRMS(x,t,parentLabelVal,parentLabelLoc,varargin) % Label signal with its mean RMS value as attribute if iscell(x) labelVals = mean(cellfun(@rms,x)) else labelVals = mean(rms(x)); end labelLocs = []; end
Эта функция находит нулевые пересечения сигнала и помечает их как "rising" для позитивных переходов и "falling" для отрицательных переходов.
function [labelVals,labelLocs] = transitions(x,t,parentLabelVal,parentLabelLoc,varargin) % Label zero crossings as "rising" or "falling" nchan = size(x,2); tt = t(:,1); labelVals = cell(nchan,1); labelLocs = cell(nchan,1); for kj = 1:nchan [~,ltup,utup] = risetime(x(:,kj),tt,'StateLevels',0.1*[-1 1]); ups = (utup+ltup)/2; upc = repmat("rising",length(ups),1); [~,ltdn,utdn] = falltime(x(:,kj),tt,'StateLevels',0.1*[-1 1]); dns = (utdn+ltdn)/2; dnc = repmat("falling",length(dns),1); labelVals{kj} = [upc;dnc]; labelLocs{kj} = [ups;dns]; end labelVals = cat(1,labelVals{:}); labelLocs = cell2mat(labelLocs); end
Эта логическая функция помечает как истинные те области многоканального сигнала, где:
Амплитуда первого канала отрицательная.
Амплитуда третьего канала больше заданного пользователем значения, mx. Если не указано, mx по умолчанию - 0,1.
function [labelVals,labelLocs] = greaterThan(x,t,parentLabelVal,parentLabelLoc,varargin) % Label regions with negative first channel and third channel larger than a given value if nargin<5 mx = 0.1; else mx = varargin{1}; end xr = x(:,1); xx = x(:,3); tt = t(:,1); ss = signalMask(xr < 0 & xx >= mx); x = roimask(ss); labelLocs = tt(x.ROILimits); labelVals = logical(double(x.Value)); end
Чтобы добавить пользовательскую функцию автоматической маркировки, щелкните стрелку рядом с галереей Автоматизировать значение (Automate Value) и выберите Добавить пользовательскую функцию (Add Custom Function). В диалоговом окне укажите следующие поля:
Имя (Name) - укажите имя добавляемой функции.
Описание - добавьте краткое описание действий функции и опишите необязательные входные аргументы.
Тип метки - укажите тип метки, которую генерирует функция. Выбрать Attribute (по умолчанию), ROI, или Point.
Примечание
На основе указанного типа метки Signal Labeler помещает функцию в соответствующую категорию галереи Automate Value. При выборе определения метки галерея включает только те функции, которые можно использовать с этим типом определения.
Если функция уже записана, и она находится в текущей папке или в пути MATLAB, Signal Labeler включает ее в галерею. Если функция еще не записана, Signal Labeler открывает пустой шаблон в редакторе.
В любое время можно править функции, редактировать описания функций или удалять функции с помощью опции Управление пользовательскими функциями (Manage Custom Functions) в коллекции Автоматизировать значение (Automate Value).
Примечание
С помощью опции Управление пользовательскими функциями (Manage Custom Functions) изменяются только описания функций, отображаемые в галерее Автоматизировать значение (Automate Value). Если требуется изменить описание в файле, содержащем функцию, необходимо отредактировать файл.