Автоматически пометьте сигналы

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

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

Чтобы добавить пользовательскую функцию автомаркировки, кликните по стреле рядом с галереей Automate Value и затем выберите Add Custom Function. В диалоговом окне задайте эти поля:

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

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

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

    Примечание

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

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

Пользовательские функции автомаркировки имеют обязательные и дополнительные аргументы:

  • Первый входной параметр, 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
Функция вычисляет значение RMS каждого участника отдельно. Если у участника есть больше чем один канал, функция вычисляет значение RMS каждого канала и составляет в среднем значения. Выход является тем же самым для двух сигналов с тремя каналами 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});

Пример: Эта логическая функция помечает как верную те области многоканального сигнала где:

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

  • Амплитуда третьего канала больше, чем пользовательское заданное значение, это принимает значение по умолчанию к 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

Пример: Эта функция находит нулевые пересечения сигнала и помечает их как "rising" для положительно идущих переходов и "falling" для отрицательно идущих переходов.

function [labelVals,labelLocs] = transitions(x,t,parentLabelVal,parentLabelLoc,varargin)
% Label zero crossings as "rising" or "falling"

if isempty(t)
    t = 0:length(x)-1;
end

fs = 1/(t(2)-t(1));

[~,ltup,utup] = risetime(x,fs,'StateLevels',0.1*[-1 1]);

ups = (utup+ltup)/2;
upc = repmat("rising",length(ups),1);

[~,ltdn,utdn] = falltime(x,fs,'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

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

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

Примечание

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

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

Чтобы автопометить сигналы с помощью пользовательской функции, запустите путем выбора или создания определения метки сигнала, которое вы хотите применить. Галерея Automate Value показывает автоматизированные функции маркировки, что можно использовать с определением. Выберите функцию из галереи и нажмите кнопку Auto-Label. Signal Labeler предлагает вам выбирать участников, которых вы хотите пометить и задать любые дополнительные входные параметры.

Примечание

Смотрите Добавляет Пользовательский Functions Маркировки для примеров.

Примечание

Можно отменить последнюю автоматизированную пользовательскую маркировку, вы выполнили. Однако вы теряете эту способность, если вы добавляете, изменяете, или удаляете любые метки или помечаете определения.

Автоматически пометьте Peaks сигнала Используя пиковую этикетировочную машину

Чтобы автопометить peaks сигналов с помощью Peak Labeler, запустите путем выбора или создания числового определения метки точки. В галерее Automate Value выберите Peak Labeler и нажмите кнопку Auto-Label. Signal Labeler использует функции MATLAB islocalmax и islocalmin найти и пометить локальные максимумы и минимумы. Peak Labeler возвращает местоположение каждого пика и числовое значение его амплитуды.

Примечание

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

Примечание

Можно отменить последний автоматизированный пик, маркирующий вас выполняемый. Однако вы теряете эту способность, если вы добавляете, изменяете, или удаляете любые метки или помечаете определения.

  • Можно принять решение пометить весь peaks или овраги в выбранном сигнале, которые удовлетворяют заданным условиям. В качестве альтернативы можно пометить определенное количество peaks или оврагов, которые удовлетворяют заданным условиям, отсортированным в порядке убывающего prominence. Смотрите Выдающееся положение для получения дополнительной информации о пиковом выдающемся положении. Значением по умолчанию являются три peaks.

  • Если локальное максимальное или минимальное значение повторяется последовательно, пик или овраг принадлежат flat region. Для сигнала с плоскими областями пика или оврага можно принять решение пометить центр области, первую точку области, последнюю точку области или все точки в области.

  • Можно принять решение пометить только тот peaks или овраги с выдающимся положением больше, чем заданное значение. Можно также задать ширину окна, сосредоточенного на пике или овраге, который используется, чтобы измерить его выдающееся положение.

    • Если вы не задаете ширину окна, алгоритм использует целый сигнал в качестве окна.

    • Для плоской области пика или оврага окно сосредоточено в средней точке области.

  • Можно выбрать, чтобы пометить только тот peaks разделенным заданным расстоянием. Алгоритм:

    1. Выбирает самый видный пик в сигнале и игнорирует весь peaks на заданном расстоянии.

    2. Повторяет процедуру для самого видного остающегося пика.

    3. Выполняет итерации, пока это не исчерпывает peaks, чтобы рассмотреть.

Совет

Если вы помечаете peaks в сигнале с помощью Peak Labeler и затем перемещаете одну из меток, Signal Labeler все еще показывает амплитудное значение, возвращенное Peak Labeler. Обновить амплитуду:

  1. Считайте новое значение на Data Cursor, вы раньше перемещали метку точки.

  2. На браузере Labeled Signal Set щелкните правой кнопкой по метке, которую вы переместили, и выберите Edit.

  3. Введите новое значение в поле Value диалогового окна, которое появляется.

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

Приложения

Функции

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

Больше о