Можно использовать 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® или от любого тулбокса, установленного в системе.
Для получения дополнительной информации смотрите, Маркируют QRS Complexes и R Peaks of ECG Signals Using Deep Network и Label Spoken Words in Audio Signals Using External API.
Эта функция вычисляет среднее значение RMS сигнала и помечает сигнал значением как числовой атрибут.
function [labelVals,labelLocs] = meanRMS(x,t,parentLabelVal,parentLabelLoc,varargin) % Label signal with its mean RMS value as attribute if iscell(x) q = cellfun(@rms,r,'UniformOutput',false); labelVals = cell2mat(q)'; else labelVals = mean(rms(x)); end labelLocs = []; end
a
и b
, даже при том, что a
матрица и b
массив ячеек вектор-столбцов.fs = 1000; t = 0:1/fs:14-1/fs; a = [chirp(t-1,0.1,17,2,'quadratic',1).*sin(2*pi*t/5); chirp(t-2,2,2,2.1,'quadratic',100).*exp(-(t-6.5).^2/20).*sin(2*pi*t*2); 0.85*besselj(0,5*(sin(2*pi*(t+1.5).^2/20).^2)).*sin(2*pi*t/9)]'; b = labeledSignalSet({a});
Эта функция находит нулевые пересечения сигнала и помечает их как "rising"
для положительно идущих переходов и "falling"
для отрицательно идущих переходов.
function [labelVals,labelLocs] = transitions(x,t,parentLabelVal,parentLabelLoc,varargin) % Label zero crossings as "rising" or "falling" [~,ltup,utup] = risetime(x,t,'StateLevels',0.1*[-1 1]); ups = (utup+ltup)/2; upc = repmat("rising",length(ups),1); [~,ltdn,utdn] = falltime(x,t,'StateLevels',0.1*[-1 1]); dns = (utdn+ltdn)/2; dnc = repmat("falling",length(dns),1); labelLocs = [ups;dns]; labelVals = categorical(string([upc;dnc]),["rising" "falling"]); end
Эта логическая функция помечает как верную те области многоканального сигнала где:
Амплитуда первого канала отрицательна.
Амплитуда третьего канала больше, чем пользовательское заданное значение, это принимает значение по умолчанию к 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(:,3); idx = find(xx >= mx & xr < 0); fir = [true;diff(idx)~=1]; ide = [idx(fir) idx(fir([2:end 1]))]; labelLocs = tt(ide); labelVals = true(size(ide,1),1); labelVals = logical(labelVals); 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. Если вы хотите изменить описание в файле, который содержит функцию, необходимо отредактировать файл.