labeledSignalSet

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

Описание

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

Создание

Синтаксис

lss = labeledSignalSet
lss = labeledSignalSet(src)
lss = labeledSignalSet(src,lbldefs)
lss = labeledSignalSet(src,lbldefs,'MemberNames',mnames)
lss = labeledSignalSet(src,lbldefs,Name,Value)

Описание

lss = labeledSignalSet создает пустой маркированный набор сигнала. Используйте addMembers, чтобы добавить сигналы в набор. Используйте addLabelDefinitions, чтобы добавить определения метки набору.

lss = labeledSignalSet(src) создает маркированный набор сигнала для источника входных данных src. Используйте addLabelDefinitions, чтобы добавить определения метки набору.

lss = labeledSignalSet(src,lbldefs) создает маркированный набор сигнала для источника входных данных src с помощью определений метки сигнала lbldefs. Используйте signalLabelDefinition, чтобы создать определения метки сигнала.

lss = labeledSignalSet(src,lbldefs,'MemberNames',mnames) создает маркированный набор сигнала для источника входных данных src и задает имена для членов набора. Используйте setMemberNames, чтобы изменить имена элемента. lbldefs является дополнительным.

пример

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

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

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

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

Маркируйте определения, заданные как вектор объектов signalLabelDefinition.

Имена элемента, заданные как вектор символов, скаляр строки, массив ячеек из символьных векторов или массив строк.

Пример: labeledSignalSet({randn(100,1) randn(10,1)},'MemberNames',{'llama' 'alpaca'}) задает набор случайных сигналов с двумя участниками, 'llama' и 'alpaca'.

Свойства

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

Маркированное описание набора сигнала, заданное как вектор символов или скаляр строки.

Пример: 'Description','Sleep test patients by sex and age'

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

Это свойство доступно только для чтения.

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

  • Установите SampleRate на положительный числовой скаляр задавать ту же частоту дискретизации для всех сигналов в маркированном наборе.

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

Пример: 'SampleRate',[1e2 1e3] указывает, что сигналы в первом члене набора выбираются на уровне 100 Гц, и сигналы во втором участнике выбираются на уровне 1 кГц.

Это свойство доступно только для чтения.

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

  • Установите SampleTime на числовой скаляр или скаляр duration задавать тот же шаг расчета для всех сигналов в маркированном наборе.

  • Установите SampleTime на числовой вектор или вектор duration указывать, что у каждого члена маркированного набора есть сигналы с тем же временным интервалом между выборками, но интервалы отличаются от участника участнику. Вектор должен иметь много элементов, равных числу членов набора. Если у члена набора есть сигналы с различными шагами расчета, то задайте шаги расчета с помощью расписаний.

Пример: 'SampleTime',seconds([1e-2 1e-3]) указывает, что сигналы в первом члене набора имеют 0,01 секунды между выборками, и сигналы во втором участнике имеют 1 миллисекунду между выборками.

Это свойство доступно только для чтения.

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

  • Установите TimeValues на числовой вектор или вектор duration задавать те же временные стоимости для всех сигналов в маркированном наборе. Вектор должен иметь ту же длину как все сигналы в наборе.

  • Установите TimeValues на числовую матрицу или матрицу duration или массив ячеек указывать, что у каждого члена маркированного набора есть сигналы с теми же временными стоимостями, но временные стоимости отличаются от участника участнику.

    • Если TimeValues является матрицей, то он должен иметь много столбцов, равных числу членов набора. Все сигналы в наборе должны иметь длину, равную количеству строк матрицы.

    • Если TimeValues является массивом ячеек, то он должен содержать много векторов, равных числу членов набора. Все сигналы в участнике должны иметь длину, равную числу элементов соответствующего вектора в массиве ячеек.

Если у члена набора есть сигналы с различными временными стоимостями, то задайте временные стоимости с помощью расписаний.

Пример: 'TimeValues',[1:1000;0:1/500:2-1/500]' указывает, что сигналы в первом члене набора выбираются 1 Гц в течение 1 000 секунд. Сигналы во втором участнике выбираются на уровне 500 Гц в течение 2 секунд.

Пример: 'TimeValues',seconds([1:1000;0:1/500:2-1/500]') указывает, что сигналы в первом члене набора выбираются 1 Гц в течение 1 000 секунд. Сигналы во втором участнике выбираются на уровне 500 Гц в течение 2 секунд.

Пример: 'TimeValues',{1:1000,0:1/500:2-1/500} указывает, что сигналы в первом члене набора выбираются 1 Гц в течение 1 000 секунд. Сигналы во втором участнике выбираются на уровне 500 Гц в течение 2 секунд.

Пример: 'TimeValues',{seconds(1:1000),seconds(0:1/500:2-1/500)} указывает, что сигналы в первом члене набора выбираются 1 Гц в течение 1 000 секунд. Сигналы во втором участнике выбираются на уровне 500 Гц в течение 2 секунд.

Это свойство доступно только для чтения.

Число членов в наборе, заданном как положительное целое число.

Это свойство доступно только для чтения.

Таблица меток, заданная как таблица MATLAB®. Каждая переменная Labels соответствует метке, заданной для набора. Каждая строка Labels соответствует члену источника данных. Имена строки Labels являются именами элемента.

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

Информация времени источника, заданного как одно из следующего:

  • 'none' У сигналов в источнике нет времени информация.

  • 'SampleRate' — Сигналы в источнике выбираются на заданном уровне.

  • 'SampleTime' Сигналы в источнике имеют интервал требуемого времени между выборками.

  • 'TimeValues — Сигналы в источнике имеют временную стоимость, соответствующую каждой выборке.

  • 'Inherent' — Сигналы в источнике содержат свойственную информацию времени. Расписания MATLAB являются примером таких сигналов.

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

Это свойство доступно только для чтения.

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

  • Если Source является числовой матрицей, то маркированный набор сигнала имеет одного участника, который содержит много сигналов, равных количеству столбцов матрицы.

    Пример: labeledSignalSet(randn(10,3)) имеет одного участника, который содержит три сигнала с 10 выборками.

  • Если Source является массивом ячеек матриц, то маркированный набор сигнала имеет много участников, равных количеству матриц в массиве ячеек. Каждый участник содержит много сигналов, равных количеству столбцов соответствующей матрицы.

    Пример: labeledSignalSet({randn(10,3),randn(17,9)}) имеет двух участников. Первый участник содержит три сигнала с 10 выборками. Второй участник содержит девять сигналов с 17 выборками.

  • Если Source является массивом ячеек, и каждый элемент массива ячеек является массивом ячеек числовых векторов, то маркированный набор сигнала имеет много участников, равных количеству элементов массива ячеек. Каждый сигнал в участнике может иметь любую длину.

    Пример: labeledSignalSet({{randn(10,1)},{randn(17,1),randn(27,1)}}) имеет двух участников. Первый участник содержит один сигнал с 10 выборками. Второй участник содержит сигнал с 17 выборками и сигнал с 27 выборками.

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

    Пример: labeledSignalSet(timetable(seconds(1:10)',randn(10,3))) имеет одного участника, который содержит три сигнала, выбранные на уровне 1 Гц в течение 10 секунд.

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

    Пример: labeledSignalSet({timetable(seconds(1:10)',randn(10,3)),timetable(seconds(1:5)',randn(5,13))}) имеет двух участников. Первый участник содержит три сигнала, выбранные на уровне 1 Гц в течение 10 секунд. Второй участник содержит 13 сигналов, выбранных на уровне 1 Гц в течение 5 секунд.

  • Если Source является массивом ячеек, и каждый элемент массива ячеек является массивом ячеек расписаний, то маркированный набор сигнала имеет много участников, равных количеству элементов массива ячеек. У каждого участника может быть любое количество расписаний, и каждое расписание в участнике может иметь любое количество переменных.

    Пример: labeledSignalSet({{timetable(seconds(1:10)',randn(10,3)),timetable(seconds(1:7)',randn(7,2))},{timetable(seconds(1:3)',randn(3,1))}}) имеет двух участников. Первый участник содержит три сигнала, выбранные на уровне 1 Гц в течение 10 секунд и двух сигналов, выбранных на уровне 1 Гц в течение 7 секунд. Второй участник содержит один сигнал, выбранный на уровне 1 Гц в течение 3 секунд.

  • Если источник входных данных, src, является аудио datastore, то маркированный набор сигнала имеет много участников, равных количеству файлов, на которые указывает datastore. Свойство Source содержит массив ячеек из символьных векторов с именами файлов. Каждый участник содержит все сигналы, возвращенные чтением соответствующего файла datastore.

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

addLabelDefinitionsДобавьте определения метки маркированному набору сигнала
addMembersДобавьте участников в маркированный набор сигнала
concatenateКонкатенация двух или больше маркированных наборов сигнала
editLabelDefinitionОтредактируйте свойства определения метки
getLabelDefinitionsПолучите определения метки в маркированном наборе сигнала
getLabeledSignalПолучите маркированные сигналы от маркированного набора сигнала
getLabelNamesПолучите имена метки в маркированном наборе сигнала
getLabelValuesПолучите значения метки от маркированного набора сигнала
getMemberNamesПолучите имена элемента в маркированном наборе сигнала
getSignalПолучите сигналы от маркированного набора сигнала
headПолучите верхние строки таблицы меток
labelDefinitionsHierarchyПолучите иерархический список метки и подмаркируйте имена
labelDefinitionsSummaryПолучите сводную таблицу определений метки сигнала
removeLabelDefinitionУдалите определение метки из маркированного набора сигнала
removeMembersУдалите участников из маркированного набора сигнала
removePointValueУдалите строку из метки точки
removeRegionValueУдалите строку из метки ROI
resetLabelValuesСбросьте метки к значениям по умолчанию
setLabelValueУстановите значение метки в маркированном наборе сигнала
setMemberNamesЭлемент множества называет в маркированном наборе сигнала
subsetПолучите новый маркированный набор сигнала с подмножеством участников

Примеры

свернуть все

Рассмотрите набор аудиозаписей кита. Записанные звуки кита состоят из трелей и стонов. Вы хотите посмотреть на каждый сигнал и маркировать его, чтобы идентифицировать тип кита, области трели и области стона. Для каждой области трели вы также хотите маркировать 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