Можно использовать 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
. Введите дополнительные аргументы как упорядоченный список, разделенный запятыми в диалоговом окне, которое появляется, когда вы нажимаете кнопку Auto-Label.
Первый выходной аргумент, labelVals
, содержит значения метки. labelVals
должен быть:
Числовое, логическое, или строковый скаляр, когда выходные метки являются атрибутами
Вектор-столбец с числовым, логическим, или значения строки, когда выходные метки являются ROI или точками
Второй выходной аргумент, labelLocs
, содержит местоположения метки. labelLocs
должен быть:
Пустой вектор, когда выходные метки являются атрибутами
Матрица 2D столбца ROI ограничивает, когда выходные метки являются ROI
Вектор-столбец местоположений точки, когда выходные метки являются точками
Чтобы реализовать ваш алгоритм, можно использовать любую функцию из MATLAB® или от любого тулбокса установлен в вашей системе.
Для получения дополнительной информации смотрите, Автоматизируют Маркировку Сигнала Пользовательскими Функциями и Маркируют Spoken Words in Audio Signals Using External API.
Эта функция вычисляет среднее значение 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. Если вы хотите изменить описание в файле, который содержит функцию, необходимо отредактировать файл.