最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

signalLabelDefinition

信号ラベル定義の作成

説明

データセットの信号ラベル定義を作成するには、signalLabelDefinition を使用します。ラベルは、属性、領域、または関心点に対応させることができます。signalLabelDefinition オブジェクトのベクトルを使用して labeledSignalSet を作成します。

作成

説明

sld = signalLabelDefinition(name) は、Nameプロパティが name に設定され、他のプロパティが既定値に設定された信号ラベル定義オブジェクト sld を作成します。

sld = signalLabelDefinition(name,Name,Value) は、名前と値のペアを使用してプロパティを設定します。複数の名前と値のペアを指定できます。各プロパティ名を引用符で囲みます。

入力引数

すべて展開する

ラベル名。文字ベクトルまたは string スカラーとして指定します。

データ型: char | string

プロパティ

すべて展開する

ラベルの名前。文字ベクトルまたは string スカラーとして指定します。

データ型: char | string

ラベルのタイプ。次のいずれかを指定します。

  • 'attribute' — 信号特性を定義します。

  • 'roi' — 関心領域での信号特性を定義します。

  • 'point' — 関心点での信号特性を定義します。

データ型: char | string

ラベルのデータ型。'logical''categorical''numeric''string''table'、または 'timetable' として指定します。このプロパティが 'categorical' に設定されている場合にカテゴリの配列を指定するには、Categoriesプロパティを使用します。

データ型: char | string

ラベル カテゴリ名。string 配列または文字ベクトルの cell 配列として指定します。配列の要素は一意でなければなりません。このプロパティは、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' に設定されている場合、関数は入力がCategoriesを使用して指定された値のいずれかであることをチェックします。関数は入力値を受け入れて、値が有効な場合は true を返します。値が無効な場合は false を返します。

例: 'LabelDataType','numeric','DefaultValue',1,'ValidationFunction',@(x)x<2

データ型: function_handle

ラベルの既定値。LabelDataTypeを使用して指定された型の値として指定します。LabelDataType'categorical' に設定されている場合、DefaultValueCategoriesを使用して指定された値のいずれかでなければなりません。

例: 'LabelDataType','categorical','Categories',["apple","orange"],'DefaultValue',"apple"

データ型: char | double | logical | string | table

ラベルの説明。文字ベクトルまたは string スカラーとして指定します。

例: 'Description','Patient is asleep'

データ型: char | string

ラベル タグ識別子。文字ベクトルまたは string スカラーとして指定します。このプロパティを使用して、より大きなラベル付けスキームまたはパブリック ラベル付けセットで同じラベルを識別します。

例: 'Tag','Peak1'

データ型: char | string

サブラベルの配列。信号ラベル定義オブジェクトとして指定します。複数のサブラベルを指定するには、このプロパティを信号ラベル定義オブジェクトのベクトルに設定します。このプロパティを使用して、親ラベルとその子の関係を作成します。

メモ

サブラベルにサブラベルをもたせることはできません。

例: 'Sublabels',[signalLabelDefinition("negative"),signalLabelDefinition("positive")]

オブジェクト関数

labelDefinitionsHierarchyラベル名とサブラベル名の階層リストの取得
labelDefinitionsSummary信号ラベル定義の概要テーブルの取得

すべて折りたたむ

クジラの声の録音のセットについて考えてみましょう。録音されたクジラの声は、ふるえ声とうめき声で構成されています。各信号を確認してラベルを付けて、クジラの種類、ふるえ声の領域、およびうめき声の領域を識別します。また、ふるえ声の各領域では、特定のしきい値よりも高い信号ピークにラベルを付けます。

信号ラベル定義

クジラの種類を格納する属性ラベルを定義します。使用するカテゴリは、シロナガスクジラ、ザトウクジラ、およびシロイルカです。

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');        

最後に、ふるえ声のピークを取得するための点ラベルを定義します。このラベルは、dTrills 定義のサブラベルとして設定します。

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

dTrills.Sublabels = dTrillPeaks;

ラベル付き信号セット

クジラの信号とラベル定義を使用して、labeledSignalSet を作成します。クジラの種類、うめき声とふるえ声の領域、およびふるえ声のピークを識別するためのラベル値を追加します。

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"   ]}       {0x0 double}    {0x0 double               }    ""     "Whale type"                
    "MoanRegions"     "roi"          "logical"        {["N/A"   ]}       {0x0 double}       {0x0 double}    {0x0 double               }    ""     "Regions where moans occur" 
    "TrillRegions"    "roi"          "logical"        {["N/A"   ]}       {0x0 double}       {0x0 double}    {1x1 signalLabelDefinition}    ""     "Regions where trills occur"

読み込まれたデータの信号は、2 匹のシロナガスクジラの歌に対応しています。両方の信号に 'WhaleType' 値を設定します。

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

'Labels' プロパティを可視化します。この table には、両方の信号に新しく追加された '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])

ふるえ声の各領域の 3 つのピークにラベルを付けます。点ラベルでは、点の位置とラベル値を指定します。この例では、点の位置は秒単位です。

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]}

2 番目の出力引数を使用して、ラベルのサブラベルを一覧表示します。

[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}

サブラベル内の値を取得するには、ラベル名を 2 要素の配列として表します。

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

     1.553      {[0.2110]}
     1.626      {[0.2540]}
       1.7      {[0.2110]}

セットの 2 番目のメンバーに対応する、3 番目のふるえ声のピークの値を検索します。

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 で導入