signalLabelDefinition

Создайте определение метки сигнала

Описание

Используйте signalLabelDefinition, чтобы создать определения метки сигнала для наборов данных. Метки могут соответствовать атрибутам, областям или интересным местам. Используйте вектор объектов signalLabelDefinition создать labeledSignalSet.

Создание

Синтаксис

sld = signalLabelDefinition(name)
sld = signalLabelDefinition(name,Name,Value)

Описание

sld = signalLabelDefinition(name) создает объект определения метки сигнала, sld, с набором свойств Имени к name и другим набором свойств к значениям по умолчанию.

пример

sld = signalLabelDefinition(name,Name,Value) Свойства наборов с помощью пар "имя-значение". Можно задать несколько пар "имя-значение". Заключите каждое имя свойства в кавычки.

Входные параметры

развернуть все

Маркируйте имя, заданное как вектор символов, или представьте скаляр в виде строки.

Типы данных: char | string

Свойства

развернуть все

Имя метки, заданной как вектор символов или скаляр строки.

Типы данных: char | string

Тип метки, заданной как одно из следующего:

  • 'attribute' — Задайте характеристики сигнала.

  • 'roi' — Задайте характеристики сигнала по видимым областям.

  • 'point' — Задайте характеристики сигнала по интересным местам.

Типы данных: char | string

Тип данных метки, заданной как 'logical', 'categorical', 'numeric', 'string', 'table' или 'timetable'. Используйте свойство Categories задать массив категорий, когда это свойство будет установлено в 'categorical'.

Типы данных: char | string

Маркируйте названия категории, заданные как массив строк или массив ячеек из символьных векторов. Массив должен иметь уникальные элементы. Это свойство применяется только, когда свойство LabelDataType установлено в 'categorical'.

Пример: 'LabelDataType','categorical','Categories',["apple","orange"]

Типы данных: char | string

Тип данных пределов ROI, заданных или как 'double' или как 'duration'. Это свойство применяется только, когда LabelType установлен в 'roi'.

Типы данных: char | string

Тип данных местоположений точки, заданных или как 'double' или как 'duration'. Это свойство применяется только, когда LabelType установлен в 'point'.

Типы данных: char | string

Функция валидации, заданная как указатель на функцию и используемая при устанавливании значений метки в объекте labeledSignalSet. Это свойство применяется только, когда LabelDataType установлен в 'categorical', 'logical', 'numeric', 'table' или 'timetable'. Если не заданный, функция проверяет только, что ее входные значения имеют правильный тип данных. Если LabelDataType установлен в 'categorical', функция проверяет, что вход является одним из значений, заданных с помощью Категорий. Функция берет входное значение и возвращает true, если значение допустимо и false, если значение недопустимо.

Пример: 'LabelDataType','numeric','DefaultValue',1,'ValidationFunction',@(x)x<2

Типы данных: function_handle

Значение по умолчанию метки, заданной как значение типа, заданного с помощью LabelDataType. Если LabelDataType установлен в 'categorical', то DefaultValue должен быть одним из значений, заданных с помощью Категорий.

Пример: 'LabelDataType','categorical','Categories',["apple","orange"],'DefaultValue',"apple"

Типы данных: char | double | logical | string | table

Маркируйте описание, заданное как вектор символов, или представьте скаляр в виде строки.

Пример: 'Description','Patient is asleep'

Типы данных: char | string

Идентификатор тега label, заданный как вектор символов или скаляр строки. Используйте это свойство идентифицировать ту же метку в большей схеме маркировки или общедоступном наборе маркировки.

Пример: 'Tag','Peak1'

Типы данных: char | string

Массив подметок, заданных как объект определения метки сигнала. Чтобы задать больше чем одну подметку, установите это свойство на вектор объектов определения метки сигнала. Используйте это свойство создать отношение между родительской меткой и ее дочерними элементами.

Примечание

Подметки не могут иметь подметок.

Пример: 'Sublabels',[signalLabelDefinition("negative"),signalLabelDefinition("positive")]

Функции объекта

labelDefinitionsHierarchyПолучите иерархический список метки и подмаркируйте имена
labelDefinitionsSummaryПолучите сводную таблицу определений метки сигнала

Примеры

свернуть все

Рассмотрите набор аудиозаписей кита. Записанные звуки кита состоят из трелей и стонов. Вы хотите посмотреть на каждый сигнал и маркировать его, чтобы идентифицировать тип кита, области трели и области стона. Для каждой области трели вы также хотите маркировать peaks сигнала выше, чем определенный порог.

Определения метки сигнала

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

dWhaleType = signalLabelDefinition('WhaleType',...
   'LabelType','attribute',...
   'LabelDataType','categorical',...
   'Categories', ["blue" "humpback" "white"],...
   'Description','Whale type'); 

Задайте метку видимой области (ROI), чтобы получить области стона. Задайте другую метку ROI, чтобы получить области трели.

dMoans = signalLabelDefinition('MoanRegions',...
   'LabelType','roi',...
   'LabelDataType','logical',...
   'Description','Regions where moans occur');

dTrills = signalLabelDefinition('TrillRegions',...
   'LabelType','roi',...
   'LabelDataType','logical',...
   'Description','Regions where trills occur');        

Наконец, задайте метку точки, чтобы получить peaks трели. Установите эту метку как подметку определения dTrills.

dTrillPeaks = signalLabelDefinition('TrillPeaks',...
   'LabelType','point',...
   'LabelDataType','numeric',...
   'Description','Trill peaks');

dTrills.Sublabels = dTrillPeaks;

Маркированный набор сигнала

Создайте labeledSignalSet с сигналами кита и определениями метки. Добавьте значения метки, чтобы идентифицировать тип кита, стон и области трели и peaks трелей.

load labelwhalesignals
lbldefs = [dWhaleType dMoans dTrills];

lss = labeledSignalSet({whale1 whale2},lbldefs,...
   'SampleRate',Fs,'Description','Characterize wave song regions');     

Визуализируйте иерархию метки и маркируйте свойства с помощью labelDefinitionsHierarchy и labelDefinitionsSummary.

labelDefinitionsHierarchy(lss)
ans = 
    'WhaleType
       Sublabels: []
     MoanRegions
       Sublabels: []
     TrillRegions
       Sublabels: TrillPeaks
     '

labelDefinitionsSummary(lss)
ans=3×9 table
      LabelName        LabelType     LabelDataType     Categories     ValidationFunction    DefaultValue             Sublabels             Tag            Description         
    ______________    ___________    _____________    ____________    __________________    ____________    ___________________________    ___    ____________________________

    "WhaleType"       "attribute"    "categorical"    [3x1 string]         ["N/A"]               []         []                             ""     "Whale type"                
    "MoanRegions"     "roi"          "logical"        ["N/A"     ]         []                    []         []                             ""     "Regions where moans occur" 
    "TrillRegions"    "roi"          "logical"        ["N/A"     ]         []                    []         [1x1 signalLabelDefinition]    ""     "Regions where trills occur"

Сигналы в загруженных данных соответствуют песням двух голубых китов. Установите значения 'WhaleType' для обоих сигналов.

setLabelValue(lss,1,'WhaleType','blue');
setLabelValue(lss,2,'WhaleType','blue');

Визуализируйте свойство 'Labels'. Таблица имеет недавно добавленные значения 'WhaleType' для обоих сигналов.

lss.Labels      
ans=2×3 table
                 WhaleType    MoanRegions    TrillRegions
                 _________    ___________    ____________

    Member{1}      blue       [0x2 table]    [0x3 table] 
    Member{2}      blue       [0x2 table]    [0x3 table] 

Визуализируйте области и точки

Визуализируйте песни кита, чтобы идентифицировать области стона и трель.

subplot(2,1,1)
plot((0:length(whale1)-1)/Fs,whale1)
ylabel('Whale 1')
hold on

subplot(2,1,2)
plot((0:length(whale2)-1)/Fs,whale2)
ylabel('Whale 2')
hold on

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

moanRegionsWhale1 = [6.1 7.7; 11.4 13.1; 16.5 18.1];
setLabelValue(lss,1,'MoanRegions',moanRegionsWhale1,[true true true]);

trillRegionWhale1 = [1.4 3.1];
setLabelValue(lss,1,'TrillRegions',trillRegionWhale1,true);

subplot(2,1,1)
labelIntervals([moanRegionsWhale1;trillRegionWhale1])

moanRegionsWhale2 = [2.5 3.5; 5.8 8; 15.4 16.7];
setLabelValue(lss,2,'MoanRegions',moanRegionsWhale2,[true true true]);

trillRegionWhale2 = [11.1 13];
setLabelValue(lss,2,'TrillRegions',trillRegionWhale2,true);

subplot(2,1,2)
labelIntervals([moanRegionsWhale2;trillRegionWhale2])

Маркируйте три peaks для каждой области трели. Для меток точки вы задаете местоположения точки и значения метки. В этом примере местоположения точки находятся в секундах.

peakLocsWhale1 = [1.553 1.626 1.7];
peakValsWhale1 = [0.211 0.254 0.211];

setLabelValue(lss,1,["TrillRegions" "TrillPeaks"],...
   peakLocsWhale1,peakValsWhale1,'LabelRowIndex',1);

subplot(2,1,1)
plot(peakLocsWhale1,peakValsWhale1,'v')
hold off

peakLocsWhale2 = [11.214 11.288 11.437];
peakValsWhale2 = [0.119 0.14 0.15];

setLabelValue(lss,2,["TrillRegions" "TrillPeaks"],...
   peakLocsWhale2,peakValsWhale2,'LabelRowIndex',1);

subplot(2,1,2)
plot(peakLocsWhale2,peakValsWhale2,'v')
hold off

Исследуйте значения метки

Исследуйте значения метки с помощью getLabelValues.

getLabelValues(lss)
ans=2×3 table
                 WhaleType    MoanRegions    TrillRegions
                 _________    ___________    ____________

    Member{1}      blue       [3x2 table]    [1x3 table] 
    Member{2}      blue       [3x2 table]    [1x3 table] 

Получите области стона для первого члена маркированного набора.

getLabelValues(lss,1,'MoanRegions')
ans=3×2 table
     ROILimits      Value
    ____________    _____

     6.1     7.7     [1] 
    11.4    13.1     [1] 
    16.5    18.1     [1] 

Используйте второй выходной аргумент, чтобы перечислить подметки метки.

[value,valueWithSublabel] = getLabelValues(lss,1,'TrillRegions')
value=1×2 table
    ROILimits     Value
    __________    _____

    1.4    3.1     [1] 

valueWithSublabel=1×3 table
    ROILimits     Value     Sublabels 
                           TrillPeaks 
    __________    _____    ___________

    1.4    3.1     [1]     [3x2 table]

Чтобы получить значения в подметке, выразите имя метки как двухэлементный массив.

getLabelValues(lss,1,["TrillRegions" "TrillPeaks"])
ans=3×2 table
    Location     Value  
    ________    ________

     1.553      [0.2110]
     1.626      [0.2540]
       1.7      [0.2110]

Найдите значение третьего соответствия пика трели второму члену набора.

getLabelValues(lss,2,["TrillRegions" "TrillPeaks"], ...
    'LabelRowIndex',1,'SublabelRowIndex',3)
ans=1×2 table
    Location     Value  
    ________    ________

     11.437     [0.1500]

function labelIntervals(moansTrills)
% Auxiliary function to label moan and trill regions in plots
    [X,Y] = meshgrid(moansTrills,ylim);
    plot(X,Y,'k:')
    topts = {'HorizontalAlignment','center','FontWeight','bold', ...
        'FontSize',12,'Color',[139 69 19]/255};
    text((X(1,1:4)+X(1,5:end))/2,Y(2,5:end)-0.1, ...
        ["moan" "moan" "moan" "trill"],topts{:})
end

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

Введенный в R2018b