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

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

Automate Value gallery

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

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

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

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

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

    Примечание

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

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

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

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

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

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

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

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

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

    Примечание

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

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

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

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

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

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

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

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

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

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

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

Для получения дополнительной информации смотрите, Автоматизируют Маркировку Сигнала Пользовательскими Функциями и Маркируют Spoken Words in Audio Signals Using External 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

    [rate,count,indices] = zerocrossrate(x,TransitionEdge="rising");
    rloc = tt(indices == 1);
    rval = repmat("rising",length(rloc),1);
    
    [rate,count,indices] = zerocrossrate(x,TransitionEdge="falling");
    floc = tt(indices == 1);
    fval = repmat("falling",length(floc),1);
    
    labelLocs{kj} = [rloc;floc];
    labelVals{kj} = [rval;fval];

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. В диалоговом окне задайте эти поля:

  • Имя Задайте имя функции, которое вы хотите добавить.

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

  • 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. Если вы хотите изменить описание в файле, который содержит функцию, необходимо отредактировать файл.

Смотрите также

Приложения

Функции

Связанные примеры

Больше о