Пользовательские функции маркировки

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

Automate Value gallery

Создайте пользовательские функции маркировки

Первая линия в каждой пользовательской функции автометки состоит из оператора определения формы

function [labelVals,labelLocs] = fx(x,t,parentLabelVal,parentLabelLoc,varargin)
Оператор definition содержит имя функции и набор обязательных и необязательных аргументов:

  • Первый входной параметр, x, является входным сигналом. При написании функции ожидайте x является матрицей, где каждый столбец содержит данные, соответствующие каналу. Если каналы имеют разную длину, ожидайте x быть массивом ячеек с векторами-столбцами.

  • Второй входной параметр, t, сохраняет значения времени. При написании функции ожидайте t является матрицей, где каждый столбец содержит информацию о времени, соответствующую каналу. Если каналы имеют разную длину, ожидайте t быть массивом ячеек с векторами-столбцами.

    Примечание

    • Для одноканальных представителей пользовательские функции автомаркировки получают данные и значения времени как векторы двойной точности.

    • Для многоканальных представителей пользовательские функции автометки получают данные и значения времени в виде матриц или массивов ячеек.

    • Пользовательские функции автоматической маркировки получают все каналы представителя в качестве входных данных, но они не должны работать со всеми. Можно выбрать каналы, с которыми должна работать функция.

  • Третий входной параметр, parentLabelVal, является родительским значением метки, сопоставленным с выходной подметкой и содержащим числовой, логический или строковый скаляр. Этот аргумент передается только для функций, которые автоматизируют маркировку подметок. Если функция предназначена для родительской метки, ожидайте parentLabelVal быть пустым.

  • Четвертый входной параметр, parentLabelLoc, содержит:

    • Пустой вектор, когда родительская метка является атрибутом

    • Двухэлементный числовой вектор-строка видимой области (ROI) пределов, когда родительская метка является информацией только для чтения

    • Числовой скаляр, представляющий положение точки, когда родительская метка является точкой

    Этот аргумент передается только для функций, которые автоматизируют маркировку подметок. Если функция предназначена для родительской метки, ожидайте parentLabelLoc быть пустым.

    Примечание

    • Для родительских меток функция автоматической маркировки действует на каждом выбранном представителе.

    • Для подметок функция автоматической маркировки действует на одном родительском образце метки за раз для каждого выбранного представителя.

  • Использовать varargin для задания дополнительных входных параметров. Если у вас нет дополнительных входных параметров, можно опустить varargin. Введите дополнительные аргументы в виде упорядоченного списка, разделенного запятыми, в диалоговом окне, которое появляется при нажатии кнопки Auto-Label.

  • Первый выходной аргумент, labelVals, содержит значения меток. labelVals должны быть:

    • Числовой, логический или строковый скаляр, когда выходные метки являются атрибутами

    • Вектор-столбец с числовыми, логическими или строковыми значениями, когда выходными метками являются ROI или точки

  • Второй выходной аргумент, labelLocs, содержит местоположения меток. labelLocs должны быть:

    • Пустой вектор, когда выходные метки являются атрибутами

    • Двухколоночная матрица пределов информация только для чтения, когда выходные метки являются ROI

    • Набор вектора-столбца точек, когда метки выхода являются точками

  • Чтобы реализовать свой алгоритм, можно использовать любую функцию из MATLAB® или из любого тулбокса, установленного в вашей системе.

Для получения дополнительной информации смотрите Метку QRS Complexes и R Peaks сигналов ECG, использующих Нейронную сеть для глубокого обучения и Метку разговорные слова в аудиосигналах, использующих внешний API.

Пример: Среднее значение RMS

Эта функция вычисляет среднее значение RMS сигнала и помечает сигнал значением как числовым атрибутом. Если у представителя больше одного канала, функция вычисляет значение RMS каждого канала и усредняет значения. Каналы могут иметь разную длину.

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

Пример: Многоканальная маркировка

Эта логическая функция помечает как true те области многоканального сигнала, где:

  • Амплитуда первого канала отрицательная.

  • Амплитуда третьего канала больше заданного пользователем значения, 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 - Задайте имя функции, которую вы хотите добавить.

  • Description - добавьте краткое описание того, что функция делает и опционально опишите входные параметры.

  • Label Type - Задайте тип метки, которую генерирует функция. Выберите Attribute (по умолчанию), ROI, или Point.

    Примечание

    На основе заданных Label Type Signal Labeler помещает функцию в соответствующую категорию в Automate Value галерее. При выборе определения метки галерея включает только те функции, которые могут использоваться с этим типом определения.

Если вы уже написали функцию, а функция находится в текущей папке или в пути MATLAB, Signal Labeler включает ее в галерею. Если вы еще не написали функцию, Signal Labeler открывает пустой шаблон в редактор.

Управление пользовательскими функциями маркировки в галерее

В любой момент можно отредактировать функции, отредактировать описания функций или удалить функции с помощью опции Manage Custom Functions в галерее Automate Value.

Примечание

При помощи опции Manage Custom Functions изменяются только описания функций, отображаемые в галерее Automate Value. Если вы хотите изменить описание в файле, который содержит функцию, вы должны отредактировать файл.

См. также

Приложения

Функции

Похожие примеры

Подробнее о