メインコンテンツ

signalLabelDefinition

信号ラベルの定義の作成

説明

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

作成

説明

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

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

入力引数

すべて展開する

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

データ型: char | string

プロパティ

すべて展開する

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

データ型: char | string

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

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

  • "roi" — 時間領域における関心領域での信号特性を定義します。

  • "point" — 時間領域における関心点での信号特性を定義します。

  • "attributeFeature" — 特徴に対応する信号特性を定義します。

  • "roiFeature" — 特徴に対応する関心領域での信号特性を定義します。

  • "roiTimeFrequency" — 時間-周波数領域における関心領域での信号特性を定義します。

データ型: char | string

ラベルのデータ型。"logical""categorical""numeric""string""table"、または "timetable" として指定します。このプロパティを "categorical" に設定する場合は、Categoriesプロパティを使用してカテゴリの配列を指定します。このオブジェクトは、attributeFeature ラベルや roiFeature ラベルの timetable データ型や table データ型をサポートしません。

データ型: char | string

ラベル カテゴリ名。string 配列または文字ベクトルの cell 配列として指定します。配列の要素は一意でなければなりません。このプロパティは、LabelDataType プロパティを "categorical" に設定した場合にのみ適用されます。

例: LabelDataType="categorical",Categories=["apple","orange"]

データ型: char | string

ROI 範囲のデータ型。"double" または "duration" として指定します。このプロパティは、LabelType"roi" または "roiFeature" に設定した場合にのみ適用されます。

LabelType"roiTimeFrequency" に設定した場合、このプロパティを指定しないでください。

データ型: char | string

点の位置のデータ型。"double" または "duration" として指定します。このプロパティは、LabelType"point" に設定した場合にのみ適用されます。

データ型: char | string

検証関数。関数ハンドルとして指定します。このプロパティは、labeledSignalSet オブジェクトでラベル値を設定するときに使用します。指定された関数は、有効な入力値が与えられた場合は true を返し、無効な入力値が与えられた場合は false を返します。このプロパティは、LabelDataType"logical""numeric""table"、または "timetable" に設定した場合にのみ適用されます。

検証関数を指定しない場合、次のようになります。

  • LabelDataType"categorical" に設定されている場合、signalLabelDefinition オブジェクトは、各入力値がCategoriesを使用して指定されたカテゴリのいずれかに属していることをチェックします。

  • それ以外の場合、signalLabelDefinition オブジェクトは、各入力値が正しいデータ型であることのみをチェックします。

例: 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

サブラベルの配列。信号ラベルの定義オブジェクトとして指定します。複数のサブラベルを指定するには、このプロパティを信号ラベルの定義オブジェクトのベクトルに設定します。このプロパティを使用して、親ラベルとその子の関係を作成します。LabelType"attributeFeature" または "roiFeature" に設定されている場合、このプロパティは適用されません。

メモ

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

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

フレーム サイズ。数値スカラーとして指定します。LabelType"roiFeature" に設定されている場合は、FrameSize を指定しなければなりません。

例: FrameSize=50

データ型: double

隣接するフレームのオーバーラップの長さ。数値スカラーとして指定します。このプロパティを有効にするには、LabelType"roiFeature" に設定します。FrameOverlapLengthFrameRate を同時に指定することはできません。FramerOverlapLength を指定しない場合、オブジェクトはオーバーラップの長さをゼロと見なします。

例: FrameSize=50,FrameOverlapLength=5

データ型: double

フレーム レート。数値スカラーとして指定します。このプロパティを有効にするには、LabelType"roiFeature" に設定します。FrameRateFrameOverlapLength を同時に指定することはできません。FrameRate を指定しない場合、オブジェクトはフレーム間にオーバーラップがないと見なします。

例: FrameSize=50,FrameRate=45

データ型: double

R2025a 以降

時間-周波数オプション。labelSpectrogramOptions オブジェクトとして指定します。labelSpectrogramOptions オブジェクトを使用して、時間-周波数領域での信号へのラベル付けに関するスペクトログラム オプションを保存します。

データ型: labelSpectrogramOptions

R2025a 以降

メンバー チャネル。正の整数として指定します。時間-周波数のラベル付けのための時間-周波数マップを計算するときに使用するメンバー チャネルを指定します。

この引数を指定するには、LabelType"roiTimeFrequency" に設定しなければなりません。

データ型: double

オブジェクト関数

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

すべて折りたたむ

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

信号ラベルの定義

クジラの種類を格納する属性ラベルを定義します。使用するカテゴリは、blue whale、humpback whale、および white whale です。

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, ...
    MemberNames=["Whale1" "Whale2"], ...
   SampleRate=Fs,Description="Characterize whale 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"    {3×1 string}       {["N/A"   ]}       {0×0 double}    {0×0 double               }    ""     "Whale type"                
    "MoanRegions"     "roi"          "logical"        {["N/A"   ]}       {0×0 double}       {0×0 double}    {0×0 double               }    ""     "Regions where moans occur" 
    "TrillRegions"    "roi"          "logical"        {["N/A"   ]}       {0×0 double}       {0×0 double}    {1×1 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
              _________    ___________    ____________

    Whale1      blue       {0×2 table}    {0×3 table} 
    Whale2      blue       {0×2 table}    {0×3 table} 

領域ラベルの可視化

クジラの歌を可視化して、ふるえ声とうめき声の領域を特定します。

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

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

Figure contains 2 axes objects. Axes object 1 with ylabel Whale 1 contains an object of type line. Axes object 2 with ylabel Whale 2 contains an object of type line.

うめき声の領域は持続した低周波数のうめき声です。

  • whale1 には約 7 秒、12 秒、17 秒で中央揃えされたうめき声があります。

  • whale2 には約 3 秒、7 秒、16 秒で中央揃えされたうめき声があります。

ラベル付きセットにうめき声の領域を追加します。秒単位の ROI 範囲とラベル値を指定します。

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

moanRegionsWhale2 = [2.5 3.5; 5.8 8; 15.4 16.7];
mrsz2 = [size(moanRegionsWhale2,1) 1];
setLabelValue(lss,2,"MoanRegions",moanRegionsWhale2,true(mrsz2));

ふるえ声の領域にはサイレンスで区切られた異なるバーストの音声があります。

  • whale1 には約 2 秒で中央揃えされたふるえ声があります。

  • whale2 には約 12 秒で中央揃えされたふるえ声があります。

ラベル付きセットにふるえ声の領域を追加します。

trillRegionWhale1 = [1.4 3.1];
trsz1 = [size(trillRegionWhale1,1) 1];
setLabelValue(lss,1,"TrillRegions",trillRegionWhale1,true(trsz1));

trillRegionWhale2 = [11.1 13];
trsz2 = [size(trillRegionWhale1,1) 1];
setLabelValue(lss,2,"TrillRegions",trillRegionWhale2,true(trsz2));

各クジラの歌についてsignalMaskオブジェクトを作成し、それを使用してさまざまな領域を可視化してラベルを付けます。より見やすくなるように、ラベル値を logical から categorical に変更します。

mr1 = getLabelValues(lss,1,"MoanRegions");
mr1.Value = categorical(repmat("moan",mrsz1));
tr1 = getLabelValues(lss,1,"TrillRegions");
tr1.Value = categorical(repmat("trill",trsz1));

msk1 = signalMask([mr1;tr1],"SampleRate",Fs);

subplot(2,1,1)
plotsigroi(msk1,whale1)
ylabel("Whale 1")
hold on

mr2 = getLabelValues(lss,2,"MoanRegions");
mr2.Value = categorical(repmat("moan",mrsz2));
tr2 = getLabelValues(lss,2,"TrillRegions");
tr2.Value = categorical(repmat("trill",trsz2));

msk2 = signalMask([mr2;tr2],"SampleRate",Fs);

subplot(2,1,2)
plotsigroi(msk2,whale2)
ylabel("Whale 2")
hold on

Figure contains 2 axes objects. Axes object 1 with xlabel Seconds, ylabel Whale 1 contains 3 objects of type line. Axes object 2 with xlabel Seconds, ylabel Whale 2 contains 3 objects of type line.

点ラベルの可視化

ふるえ声の各領域の 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

Figure contains 2 axes objects. Axes object 1 with xlabel Seconds, ylabel Whale 1 contains 4 objects of type line. One or more of the lines displays its values using only markers Axes object 2 with xlabel Seconds, ylabel Whale 2 contains 4 objects of type line. One or more of the lines displays its values using only markers

ラベル値の確認

getLabelValues を使用してラベル値を確認します。

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

    Whale1      blue       {3×2 table}    {1×3 table} 
    Whale2      blue       {3×2 table}    {1×3 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]}    {3×2 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]}

MATLAB® に MAT ファイルとして含まれているオーディオ信号セットへのパスを指定します。各ファイルには、信号変数とサンプル レートが格納されています。ファイル名をリストします。

folder = fullfile(matlabroot,"toolbox","matlab","audiovideo");
lst = dir(append(folder,"/*.mat"));
nms = {lst(:).name}'
nms = 7×1 cell
    {'chirp.mat'   }
    {'gong.mat'    }
    {'handel.mat'  }
    {'laughter.mat'}
    {'mtlb.mat'    }
    {'splat.mat'   }
    {'train.mat'   }

指定したフォルダーを示す信号データストアを作成します。サンプル レート変数名を Fs に設定します。これは、すべてのファイルで共通です。ファイル mtlb.mat を除くデータストアのサブセットを生成します。サブセット データストアをlabeledSignalSetオブジェクトのソースとして使用します。

sds = signalDatastore(folder,SampleRateVariableName="Fs");
sds = subset(sds,~strcmp(nms,"mtlb.mat"));
lss = labeledSignalSet(sds);

信号にラベルを付けるために、次の 3 つのラベルの定義を作成します。

  • 人間の声を含む信号を真とする論理属性ラベルを定義。

  • 各信号の最大値の位置と振幅を示す数値ポイント ラベルを定義。

  • 各信号にオーバーラップのない、長さが均一なランダム領域を選択するためのカテゴリカル関心領域 (ROI) ラベルを定義。

この信号ラベルの定義をラベル付き信号セットに追加します。

vc = signalLabelDefinition("Voice",LabelType="attribute", ...
    LabelDataType="logical",DefaultValue=false);
mx = signalLabelDefinition("Maximum",LabelType="point", ...
    LabelDataType="numeric");
rs = signalLabelDefinition("RanROI",LabelType="ROI", ...
    LabelDataType="categorical",Categories=["ROI" "other"]);
addLabelDefinitions(lss,[vc mx rs])

信号にラベルを付けます。

  • 人間の声を含むものとして、'handel.mat''laughter.mat' にラベルを付けます。

  • 関数islocalmaxを使用して、各信号の最大値を求めます。その位置と値にラベルを付けます。

  • 関数 randROI を使用して、領域間の最小間隔が N/6 サンプルの場合に長さ N の信号に収まるだけの長さ N/10 サンプルの領域を生成します。それらの位置にラベルを付け、ROI カテゴリに割り当てます。

点と領域にラベルを付けるときに、サンプル値を時間値に変換します。MATLAB 配列のインデックス付けを考慮して 1 を減算し、サンプル レートで除算します。

kj = 1;
while hasdata(sds)
    
    [sig,info] = read(sds);
    fs = info.SampleRate;

    [~,fn] = fileparts(info.FileName);
    if fn=="handel" || fn=="laughter"
        setLabelValue(lss,kj,"Voice",true)
    end
    
    xm = find(islocalmax(sig,MaxNumExtrema=1));
    setLabelValue(lss,kj,"Maximum",(xm-1)/fs,sig(xm))

    N = length(sig);
    rois = randROI(N,round(N/10),round(N/6));
    setLabelValue(lss,kj,"RanROI",(rois-1)/fs, ...
        repelem("ROI",size(rois,1)))

    kj = kj+1;
    
end

2 つの信号にのみ音声が含まれていることを確認します。

countLabelValues(lss,"Voice")
ans=2×3 table
    Voice    Count    Percent
    _____    _____    _______

    false      4      66.667 
    true       2      33.333 

この 2 つの信号の最大振幅が 1 であることを確認します。

countLabelValues(lss,"Maximum")
ans=5×4 table
           Maximum            Count    Percent    MemberCount
    ______________________    _____    _______    ___________

    0.80000000000000004441      1      16.667          1     
    0.89113331915798421612      1      16.667          1     
    0.94730769230769229505      1      16.667          1     
    1                           2      33.333          2     
    1.0575668990330560071       1      16.667          1     

各信号に、オーバーラップのない 4 つのランダムな関心領域があることを確認します。

countLabelValues(lss,"RanROI")
ans=2×4 table
    RanROI    Count    Percent    MemberCount
    ______    _____    _______    ___________

    ROI        24        100           6     
    other       0          0           0     

ラベル付き信号セットのデータを使用して 2 つのデータストアを作成します。

  • signalDatastoreオブジェクト sd には信号データが格納される。

  • arrayDatastoreオブジェクト ld にはラベル付け情報が格納される。作成したすべてのラベルに対応する情報を含めるように指定します。

[sd,ld] = createDatastores(lss,["Voice" "RanROI" "Maximum"]);

データストアの情報を使用して、信号をプロットし、それらのラベルを表示します。

  • signalMaskオブジェクトを使用して、関心領域を青色で強調表示。

  • 最大値の位置を示すために黄色の線をプロット。

  • 人間の声を含む信号に対して赤色の軸ラベルを追加。

tiledlayout flow

while hasdata(sd)

    [sg,nf] = read(sd);
    
    lbls = read(ld);
    
    nexttile
    
    msk = signalMask(lbls{:}.RanROI{:},SampleRate=nf.SampleRate);
    plotsigroi(msk,sg)
    colorbar off
    xlabel('')
    
    xline(lbls{:}.Maximum{:}.Location, ...
        LineWidth=2,Color="#EDB120")
    
    if lbls{:}.Voice{:}
        ylabel("VOICED",Color="#D95319")
    end

end

Figure contains 6 axes objects. Axes object 1 contains 4 objects of type line, constantline. Axes object 2 contains 4 objects of type line, constantline. Axes object 3 with ylabel VOICED contains 4 objects of type line, constantline. Axes object 4 with ylabel VOICED contains 4 objects of type line, constantline. Axes object 5 contains 4 objects of type line, constantline. Axes object 6 contains 4 objects of type line, constantline.

function roilims = randROI(N,wid,sep)

num = floor((N+sep)/(wid+sep));
hq = histcounts(randi(num+1,1,N-num*wid-(num-1)*sep),(1:num+2)-1/2);
roilims = (1 + (0:num-1)*(wid+sep) + cumsum(hq(1:num)))' + [0 wid-1];

end

R2025a 以降

時間-周波数関心領域 (ROI) ラベルの定義、およびスペクトログラム オプションを使用して、時間-周波数領域でガウス原子にラベルを付けます。

信号の生成とスペクトログラムの可視化

電圧制御発振器と 4 つのガウス原子で構成される信号を生成します。この信号は 14 kHz で 2 秒間サンプリングされます。信号のスペクトログラムをプロットします。

Fs = 14000;
t = (0:1/Fs:2)';
st = 0.01;
gaussFun = @(A,x,mu,f) exp(-(x-mu).^2/(2*st^2)).*sin(2*pi*f.*x)*A';
atomTimeCenters = [0.2 0.5 1 1.75];
atomFreqCenters = [2 6 2 5]*1000;
s = gaussFun([1 1 1 1]/10,t,atomTimeCenters,atomFreqCenters);
x = vco(chirp(t+.1,0,t(end),3).*exp(-2*(t-1).^2),[0.1 0.4]*Fs,Fs);
s = s/10+x;

bt = 0.2;
tr = 0.05;
op = 99;
pspectrum(s,Fs,"spectrogram", ...
    Leakage=bt,TimeResolution=tr,OverlapPercent=op)

Figure contains an axes object. The axes object with title Fres = 64.5333 Hz, Tres = 50 ms, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image.

このスペクトログラムには、ガウス原子に対応する時間-周波数領域の 4 つのパッチが表示されます。すべての原子の時間と周波数を定義します。

atomTimes = atomTimeCenters'+[-st st]*5.5;
atomFreqs = atomFreqCenters'+[-1 1]*200;

時間-周波数領域における信号へのラベル付け

ガウス原子にラベルを付けるため、logical の時間-周波数 ROI ラベルの定義を作成します。漏れ特性をもつスペクトログラム オプションを指定します。

opts = labelSpectrogramOptions("leakage", ...
    Leakage=40*(1-bt),Overlap=op, ...
    TimeResolutionMode="specify",TimeResolution=tr);

lblDef = signalLabelDefinition("Atom", ...
    LabelDataType="logical", ...
    LabelType="roiTimeFrequency",TimeFrequencyOptions=opts);

信号と時間-周波数 ROI ラベルの定義からラベル付き信号セットを作成します。

lss = labeledSignalSet(s,lblDef,SampleRate=Fs);

時間-周波数領域で 4 つの原子にラベルを付けます。ラベルの値を true に設定します。

setLabelValue(lss,1,"Atom",atomTimes,atomFreqs,true(1,4))

時間-周波数イメージとラベル マスクの可視化

時間-周波数 ROI ラベルのラベル付き信号セットからデータストアを作成します。

imSize = [512 768];
[sds,ads] = createDatastores(lss,"Atom", ...
    TimeFrequencyMapFormat="image", ...
    TimeFrequencyImageSize=imSize, ...
    TimeFrequencyLabelFormat="mask", ...
    TimeFrequencyMaskPriority=true);

時間-周波数イメージを読み取って表示します。

imagesc(read(sds))

Figure contains an axes object. The axes object contains an object of type image.

ラベル マスクを読み取り、時間-周波数イメージの上に表示します。

lbl = read(ads);
im = zeros([imSize 3]);
im(:,:,1) = lbl{1};
hold on
imagesc(im,AlphaData=0.5*lbl{1})
hold off

Figure contains an axes object. The axes object contains 2 objects of type image.

バージョン履歴

R2018b で導入

すべて展開する