ドキュメンテーション

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

labeledSignalSet

ラベル付き信号セットの作成

説明

labeledSignalSet を使用して、ラベル付き信号をラベル定義と共に保存します。signalLabelDefinition を使用して、信号ラベル定義を作成します。

作成

説明

lss = labeledSignalSet は、空のラベル付き信号セットを作成します。セットに信号を追加するには、addMembers を使用します。セットにラベル定義を追加するには、addLabelDefinitions を使用します。

lss = labeledSignalSet(src) は、入力データ ソース src のラベル付き信号セットを作成します。セットにラベル定義を追加するには、addLabelDefinitions を使用します。

lss = labeledSignalSet(src,lbldefs) は、信号ラベル定義 lbldefs を使用して入力データ ソース src のラベル付き信号セットを作成します。信号ラベル定義を作成するには、signalLabelDefinition を使用します。

lss = labeledSignalSet(src,lbldefs,'MemberNames',mnames) は、入力データ ソース src のラベル付き信号セットを作成して、セットのメンバーの名前を指定します。setMemberNames を使用して、メンバー名を変更します。lbldefs はオプションです。

lss = labeledSignalSet(src,lbldefs,Name,Value) は、名前と値のペアを使用してプロパティを設定します。複数の名前と値のペアを指定できます。各プロパティ名を引用符で囲みます。lbldefs はオプションです。

入力引数

すべて展開する

入力データ ソース。行列、timetable、cell 配列、またはオーディオ データストアとして指定します。src は、セットのメンバー数、各メンバーの信号数、および各信号のデータを指定します。

ラベル定義。signalLabelDefinition オブジェクトのベクトルとして指定します。

メンバー名。文字ベクトル、string スカラー、文字ベクトルの cell 配列、または string 配列として指定します。

例: labeledSignalSet({randn(100,1) randn(10,1)},'MemberNames',{'llama' 'alpaca'}) は、2 つのメンバー、'llama' および 'alpaca' をもつランダム信号のセットを指定します。

プロパティ

すべて展開する

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

例: 'Description','Sleep test patients by sex and age'

データ型: char | string

このプロパティは読み取り専用です。

サンプルレート値。正のスカラーまたはベクトルとして指定します。このプロパティは、データ ソースに固有の時間情報が含まれていない場合にのみ有効です。

  • ラベル付きセットのすべての信号に同じサンプルレートを指定するには、SampleRate を正の数値スカラーに設定します。

  • ラベル付きセットの各メンバーが、メンバーごとに異なるサンプルレートでサンプリングされた信号を持つように指定するには、SampleRate をベクトルに設定します。このベクトルの要素数は、セットのメンバー数と等しくなければなりません。セットのメンバーが異なるサンプルレートの信号を持つ場合は、timetable を使用してサンプルレートを指定します。

例: 'SampleRate',[1e2 1e3] は、セットの最初のメンバーの信号が 100 Hz のレートでサンプリングされ、2 番目のメンバーの信号が 1 kHz でサンプリングされることを指定します。

このプロパティは読み取り専用です。

サンプル時間値。正のスカラー、ベクトル、duration スカラー、または duration ベクトルとして指定します。このプロパティは、データ ソースに固有の時間情報が含まれていない場合にのみ有効です。

  • ラベル付きセットのすべての信号に同じサンプル時間を指定するには、SampleTime を数値スカラーまたは duration スカラーに設定します。

  • ラベル付きセットの各メンバーがサンプル間の時間間隔が等しい信号を持ち、メンバーごとに間隔が異なることを指定するには、SampleTime を数値ベクトルまたは duration ベクトルに設定します。このベクトルの要素数は、セットのメンバー数と等しくなければなりません。セットのメンバーが異なるサンプル時間の信号を持つ場合は、timetable を使用してサンプル時間を指定します。

例: 'SampleTime',seconds([1e-2 1e-3]) は、セットの最初のメンバーの信号はサンプル間の間隔が 0.01 秒で、2 番目のメンバーの信号はサンプル間の間隔が 1 ミリ秒であることを指定します。

このプロパティは読み取り専用です。

時間値。ベクトル、duration ベクトル、行列、または cell 配列として指定します。このプロパティは、データ ソースに固有の時間情報が含まれていない場合にのみ有効です。時間値は一意で、増加しなければなりません。

  • ラベル付きセットのすべての信号に同じ時間値を指定するには、TimeValues を数値ベクトルまたは duration ベクトルに設定します。ベクトルはセット内のすべての信号と同じ長さでなければなりません。

  • ラベル付きセットの各メンバーが同じ時間値の信号を持ち、メンバーごとに時間値が異なることを指定するには、TimeValues を数値行列または duration 行列または cell 配列に設定します。

    • TimeValues が行列の場合は、列数がセットのメンバー数と等しくなければなりません。セット内のすべての信号は、長さが行列の行数と等しくなければなりません。

    • TimeValues が cell 配列の場合は、含まれるベクトル数がセットのメンバー数と等しくなければなりません。メンバー内のすべての信号は、長さが cell 配列内の対応するベクトルの要素数と等しくなければなりません。

セットのメンバーが異なる時間値の信号を持つ場合は、timetable を使用して時間値を指定します。

例: 'TimeValues',[1:1000;0:1/500:2-1/500]' は、セットの最初のメンバーの信号が 1 Hz で 1000 秒間サンプリングされることを指定します。2 番目のメンバーの信号は、500 Hz で 2 秒間サンプリングされます。

例: 'TimeValues',seconds([1:1000;0:1/500:2-1/500]') は、セットの最初のメンバーの信号が 1 Hz で 1000 秒間サンプリングされることを指定します。2 番目のメンバーの信号は、500 Hz で 2 秒間サンプリングされます。

例: 'TimeValues',{1:1000,0:1/500:2-1/500} は、セットの最初のメンバーの信号が 1 Hz で 1000 秒間サンプリングされることを指定します。2 番目のメンバーの信号は、500 Hz で 2 秒間サンプリングされます。

例: 'TimeValues',{seconds(1:1000),seconds(0:1/500:2-1/500)} は、セットの最初のメンバーの信号が 1 Hz で 1000 秒間サンプリングされることを指定します。2 番目のメンバーの信号は、500 Hz で 2 秒間サンプリングされます。

このプロパティは読み取り専用です。

セット内のメンバー数。正の整数として指定します。

このプロパティは読み取り専用です。

ラベル テーブル。MATLAB® の table として指定します。Labels の各変数は、セットに定義されたラベルに対応しています。Labels の各行は、データ ソースのメンバーに対応しています。Labels の行名は、メンバー名です。

データ型: テーブル

ソースの時間情報。次のいずれかに指定します。

  • 'None' — ソース内の信号に時間情報がありません。

  • 'SampleRate' — ソース内の信号は、指定されたレートでサンプリングされます。

  • 'SampleTime' — ソース内の信号は、指定されたサンプル間の時間間隔を持ちます。

  • 'TimeValues — ソース内の信号は、各サンプルに対応する時間値を持ちます。

  • 'Inherent' — ソース内の信号に、固有の時間情報が含まれます。このような信号の例には、MATLAB の timetable があります。

データ型: char | string

このプロパティは読み取り専用です。

ラベル付き信号セットのデータ ソース。行列、timetable、cell 配列、またはオーディオ データストアとして指定します。

  • Source が数値行列の場合、ラベル付き信号セットには、行列の列数に等しい信号数を含む 1 つのメンバーがあります。

    例: labeledSignalSet(randn(10,3)) では、10 サンプルの信号を 3 つ含む 1 つのメンバーがあります。

  • Source が行列の cell 配列の場合、ラベル付き信号セットのメンバー数は、cell 配列内の行列数と等しくなります。各メンバーには、対応する行列の列数に等しい信号数が含まれます。

    例: labeledSignalSet({randn(10,3),randn(17,9)}) には、2 つのメンバーがあります。最初のメンバーには、10 サンプルの信号が 3 つ含まれています。2 番目のメンバーには、17 サンプルの信号が 9 つ含まれています。

  • Source が cell 配列で、cell 配列の各要素が数値ベクトルの cell 配列である場合、ラベル付き信号セットのメンバー数は、cell 配列の要素数と等しくなります。メンバー内の各信号は、任意の長さを持つことができます。

    例: labeledSignalSet({{randn(10,1)},{randn(17,1),randn(27,1)}}) には、2 つのメンバーがあります。最初のメンバーには、10 サンプルの信号が 1 つ含まれています。2 番目のメンバーには、17 サンプルの信号が 1 つと、27 サンプルの信号が 1 つ含まれています。

  • Source が数値を含む変数を持つ timetable の場合、ラベル付き信号セットには、変数の数に等しい信号数を含む 1 つのメンバーがあります。timetable の時間値は、型が duration で、一意であり、増加しなければなりません。

    例: labeledSignalSet(timetable(seconds(1:10)',randn(10,3))) では、1 Hz で 10 秒間サンプリングされた信号を 3 つ含む 1 つのメンバーがあります。

  • Source が timetable の cell 配列で、各 timetable が任意の数の数値を持つ変数を持つ場合、ラベル付き信号セットのメンバー数は、timetable の数と等しくなります。各メンバーには、対応する timetable の変数の数に等しい信号数が含まれます。

    例: labeledSignalSet({timetable(seconds(1:10)',randn(10,3)),timetable(seconds(1:5)',randn(5,13))}) には、2 つのメンバーがあります。最初のメンバーには、1 Hz で 10 秒間サンプリングされた信号が 3 つ含まれています。2 番目のメンバーには、1 Hz で 5 秒間サンプリングされた信号が 13 個含まれています。

  • Source が cell 配列で、cell 配列の各要素が timetable の cell 配列である場合、ラベル付き信号セットのメンバー数は、cell 配列の要素数と等しくなります。各メンバーは任意の数の timetable を持つことができ、メンバー内の各 timetable は任意の数の変数を持てます。

    例: labeledSignalSet({{timetable(seconds(1:10)',randn(10,3)),timetable(seconds(1:7)',randn(7,2))},{timetable(seconds(1:3)',randn(3,1))}}) には、2 つのメンバーがあります。最初のメンバーには、1 Hz で 10 秒間サンプリングされた信号が 3 つと、1 Hz で 7 秒間サンプリングされた信号が 2 つ含まれています。2 番目のメンバーには、1 Hz で 3 秒間サンプリングされた信号が 1 つ含まれています。

  • 入力データ ソース src がオーディオ データストアの場合、ラベル付き信号セットのメンバー数は、データストアが示すファイルの数と等しくなります。Source プロパティには、ファイル名を持つ文字ベクトルの cell 配列が含まれます。各メンバーには、対応するデータストア ファイルの読み取りによって返されたすべての信号が含まれます。

オブジェクト関数

addLabelDefinitionsラベル付き信号セットへのラベル定義の追加
addMembersラベル付き信号セットへのメンバーの追加
concatenate2 つ以上のラベル付き信号セットの連結
editLabelDefinitionラベル定義のプロパティの編集
getLabelDefinitionsラベル付き信号セットのラベル定義の取得
getLabeledSignalラベル付き信号セットからのラベル付き信号の取得
getLabelNamesラベル付き信号セットのラベル名の取得
getLabelValuesラベル付き信号セットからのラベル値の取得
getMemberNamesラベル付き信号セットのメンバー名の取得
getSignalラベル付き信号セットからの信号の取得
headラベル テーブルの先頭の行の取得
labelDefinitionsHierarchyラベル名とサブラベル名の階層リストの取得
labelDefinitionsSummary信号ラベル定義の概要テーブルの取得
removeLabelDefinitionラベル付き信号セットからのラベル定義の削除
removeMembersラベル付き信号セットからのメンバーの削除
removePointValue点ラベルからの行の削除
removeRegionValueROI ラベルからの行の削除
resetLabelValues既定値へのラベルのリセット
setLabelValueラベル付き信号セットのラベル値の設定
setMemberNamesラベル付き信号セットのメンバー名の設定
subsetメンバーのサブセットを持つ新しいラベル付き信号セットの取得

すべて折りたたむ

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

信号ラベル定義

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

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"]               []         []                             ""     "Whale type"                
    "MoanRegions"     "roi"          "logical"        ["N/A"     ]         []                    []         []                             ""     "Regions where moans occur" 
    "TrillRegions"    "roi"          "logical"        ["N/A"     ]         []                    []         [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 で導入