Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

catmask

categorical シーケンス マスクの取得

説明

seq = catmask(msk) は、msk のソースとプロパティに基づいて、categorical シーケンス マスク seq を返します。

seq = catmask(msk,len) は、seq の長さを指定します。

seq = catmask(___,'OverlapAction',action) は、異なるカテゴリ値をもちオーバーラップする領域を signalMask がどのように処理するかを指定します。

seq = catmask(___,'OverlapAction','prioritizeByList','PriorityList',idxlist) は、異なるカテゴリ値をもつ領域がオーバーラップするときの msk カテゴリの優先順位を指定します。

[seq,numroi,cats] = catmask(___) は、cats にリストされた各カテゴリで見つかった領域の数が格納されたベクトル numroi も返します。

すべて折りたたむ

2 ~ 30 の番号が付けられたサンプルを含む 4 つの関心領域をもつ関心領域 (ROI) table のマスクについて考えます。カテゴリ ラベルを A および B として指定します。このマスクを使用して、signalMask オブジェクトを作成します。

roiTbl = table([2 5; 7 10; 15 25; 28 30],["A","B","B","A"]');

m = signalMask(roiTbl);

シーケンス長に 35 を指定し、このオブジェクトから categorical マスクを抽出します。30 番目より先のサンプルは、<undefined> として返されます。

catSeq = catmask(m,35);

catSeq(max(roiTbl.Var1(end)):end)
ans = 6x1 categorical
     A 
     <undefined> 
     <undefined> 
     <undefined> 
     <undefined> 
     <undefined> 

categorical マスクを再度抽出します。ただし、今度はシーケンス長に 8 を指定します。8 番目より先のサンプルは削除されます。

catSeq = catmask(m,8)
catSeq = 8x1 categorical
     <undefined> 
     A 
     A 
     A 
     A 
     <undefined> 
     B 
     B 

バイナリ シーケンスの 18 行 2 列のマスクについて考えます。このマスクを使用して、signalMask オブジェクトを作成します。カテゴリに AB のラベルをこの順序で付けます。

binSeqs = logical([ ...
    0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1;
    1 1 0 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0]');

m = signalMask(binSeqs);
m.Categories = ["A" "B"];

このオブジェクトから categorical マスクを抽出します。カテゴリ間のオーバーラップを処理するために、2 つのカテゴリで共有されているサンプルをリスト内の最初のカテゴリである A に割り当てます。

seqA = catmask(m,'OverlapAction','PrioritizeByList');
seqA(binSeqs(:,1) & binSeqs(:,2))
ans = 4x1 categorical
     A 
     A 
     A 
     A 

categorical マスクを再度抽出します。ただし、今度は共有されているサンプルを明示的な優先度リストに基づいて B に割り当て、カテゴリ間のオーバーラップを処理します。

seqB = catmask(m,'OverlapAction','PrioritizeByList', ...
    'PriorityList',[2 1]);
seqB(binSeqs(:,1) & binSeqs(:,2))
ans = 4x1 categorical
     B 
     B 
     B 
     B 

サンプルが 3 個未満の領域を削除してオーバーラップを処理します。その結果として変更されたバイナリシーケンス マスクを表示します。

m.MinLength = 3;
binmask(m)'
ans = 2x18 logical array

   0   0   1   1   1   0   0   0   0   0   0   0   1   1   1   1   0   0
   0   0   0   0   0   1   1   1   1   0   0   0   0   0   0   0   0   0

以前に共有されていたサンプルは、残りの領域のカテゴリに割り当てられます。

seqM = catmask(m);
seqM(binSeqs(:,1) & binSeqs(:,2))
ans = 4x1 categorical
     B 
     B 
     A 
     A 

入力引数

すべて折りたたむ

信号マスク。signalMask オブジェクトとして指定します。

例: signalMask(table([2 4;6 7],["male" "female"]')) は、3 つのサンプルをもつ領域 male と 2 つのサンプルをもつ領域 female を使用して信号マスクを指定します。

例: signalMask(categorical(["" "male" "male" "male" "" "female" "female" ""]',["male" "female"])) は、3 つのサンプルをもつ領域 male と 2 つのサンプルをもつ領域 female を使用して信号マスクを指定します。

例: signalMask([0 1 1 1 0 0 0 0;0 0 0 0 0 1 1 0]','Categories',["male" "female"]) は、3 つのサンプルをもつ領域 male と 2 つのサンプルをもつ領域 female を使用して信号マスクを指定します。

出力シーケンス長。整数値スカラーとして指定します。len を超える領域は無視されます。次の場合、出力 categorical シーケンス seq<missing> の値でパディングされます。

  • SourceType'categoricalSequence' または 'binarySequences' で、len がソース シーケンスの長さより大きい。

  • SourceType'roiTable' で、len が領域の最大インデックスより大きい。

RightExtension が非ゼロで、SourceType'categoricalSequence' または 'binarySequences' の場合、catmask によって領域が拡張され (シーケンス長を超えて拡張される場合があります)、LeftExtensionLeftShorteningRightShorteningMergeDistanceMinLength に基づいて他のすべての変更が適用されてから、元のシーケンス長または len で指定された長さになるように変更適用後のシーケンスが打ち切られます。

最後に、引数 'OverlapAction' が指定されている場合、この引数に設定された値に基づいて、catmask がオーバーラップを処理します。

出力の長さの詳細については、領域範囲の変更を参照してください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

オーバーラップを処理する方法。'error' または 'prioritizeByList' として指定します。

  • 'error' — 異なるカテゴリをもつ領域がオーバーラップしている場合、catmask がエラーをスローします。

  • 'prioritizeByList'catmask は、idxlist で指定された優先順位のリストを使用し、異なるカテゴリをもつ領域のオーバーラップを処理します。リストの先頭にあるカテゴリの優先順位が最も高く、オーバーラップが存在する場合、そのカテゴリのサンプルはすべて保持されます。リスト内の 2 番目のカテゴリはその次に優先順位が高く、オーバーラップが存在する場合、そのカテゴリのサンプルのうち解決済みでないサンプルが保持されます。

    idxlist が指定されていない場合、catmask は、mskCategories プロパティに表れるのと同じ順序でカテゴリの優先順位を決定します。

データ型: char | string

オーバーラップが存在する場合の優先順位。整数のベクトルとして指定します。idxlist のインデックスは、mskCategories のエントリに対応し、異なるカテゴリ値をもつ領域がオーバーラップする場合には、それらのエントリを処理する優先度の順に並べられます。idxlist には、Categories のすべての要素に対するインデックスが含まれていなければなりません。リストの先頭にあるカテゴリの優先順位が最も高くなります。これは、異なるカテゴリをもつ領域がオーバーラップする場合、優先順位が最も高いカテゴリの値がすべて保持されることを意味します。続いて、オーバーラップしていない残りのサンプルのうち、次に優先順位の高い値が保持され、以下同様に処理されます。

idxlist が指定されていない場合、catmask は、mskCategories プロパティに表れるのと同じ順序でカテゴリの優先順位を決定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

出力引数

すべて折りたたむ

categorical シーケンス マスク。categorical 配列として返されます。関心領域に属さず、ラベル値をもたない seq のサンプルは、欠損値を表す categorical 値に設定され、<undefined> と表示されます。詳細については、categorical を参照してください。

  • SourceType'categoricalSequence' または 'binarySequences' で、len が指定されていない場合、seqs はソース マスク シーケンスと同じ長さになります。

  • SourceType'roiTable' の場合、len を指定しなければなりません。

msk のプロパティが seqs の長さに及ぼす影響の詳細については、領域範囲の変更を参照してください。

cats の各カテゴリで見つかった領域の数。整数のベクトルとして返されます。

カテゴリ リスト。string のベクトルとして返されます。

バージョン履歴

R2020b で導入