signalMask
説明
signalMask
を使用して、信号の関心領域の位置、および各領域のラベルまたはカテゴリの値を保存します。
signalMask
を使用して次のことができます。
テーブル、categorical シーケンス、またはバイナリ シーケンスの行列として信号マスクを表現。
関心領域の持続時間の拡張または短縮、同じカテゴリの領域で十分に近いもののマージ、長さが十分ではない領域の削除を行って、関心領域を変更。
信号ベクトルから信号の関心領域を抽出。
色分けされた関心領域を使って信号をプロット。
作成
説明
入力引数
src
— 入力データ ソース
table | categorical ベクトル シーケンス | バイナリ シーケンスの行列
入力データ ソース。関心領域 (ROI) table、categorical ベクトル シーケンス、またはバイナリ シーケンスの行列として指定します。
src
が ROI table の場合、2 つの値を含めなければなりません。1 番目の変数は 2 列の行列です。この行列の各行には、信号の関心領域の始点と終点を格納します。
SampleRate
が指定されている場合、signalMask
は、秒単位で表される時間値として範囲を解釈します。SampleRate
が指定されていない場合、signalMask
は、サンプルのインデックスとして範囲を解釈します。行列の要素が整数でない場合、signalMask
は、その要素の値を 0 より大きい最も近い整数に丸めます。
2 番目の変数には、領域のラベルを格納します。このラベルは、categorical 配列または string 配列として指定します。
src
が categorical ベクトル シーケンスである場合、同じ値をもつ隣接するカテゴリ要素のグループは、その特定のカテゴリのラベルが付けられた信号の関心領域を表します。どのカテゴリにも属さない (ラベル値をもたない) 要素は、欠損値を表す categorical 値として指定する必要があります。この要素は<undefined>
と表示されます。詳細については、categorical
を参照してください。src
がバイナリ シーケンスから成る P 列の行列である場合、各列は、P 個の異なる各カテゴリについてtrue
要素で関心領域がマークされ、1 ~ P の整数でラベルが付けられた信号マスクとして解釈されます。Categories
プロパティを使用して、P 個のカテゴリ名が格納されたリストを指定することもできます。
例: 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
を使用して信号マスクを指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| table
| categorical
プロパティ
SourceType
— 入力ソースのタイプ
"roiTable"
| "categoricalSequence"
| "binarySequences"
この プロパティ は読み取り専用です。
入力ソースのタイプ。"roiTable"
、"categoricalSequence"
、または "binarySequences"
として返されます。このプロパティは src
から推定されるもので、ユーザーが設定することはできません。
例: signalMask(table([2 4;6 7],["male" "female"]'))
は、SourceType
を "roiTable"
として返します。
例: signalMask(categorical(["" "male" "male" "male" "" "female" "female" ""]',["male" "female"]))
は、SourceType
を "categoricalSequence"
として返します。
例: signalMask([0 1 1 1 0 0 0 0;0 0 0 0 0 1 1 0]','Categories',["male" "female"])
は、SourceType
を "binarySequences"
として返します。
データ型: string
SampleRate
— サンプル レート値
正の数値スカラー
この プロパティ は読み取り専用です。
サンプル レート値。正の数値スカラーとして返されます。src
が ROI table として指定された場合、signalMask
は、秒単位で表される領域範囲がこのテーブルに格納されていると仮定します。このプロパティを省略すると、このオブジェクトは、すべての領域範囲をサンプルのインデックスとして処理します。
データ型: single
| double
Categories
— カテゴリ名
string ベクトル | 文字ベクトルの cell 配列
カテゴリ名。string ベクトル、または文字ベクトルの cell 配列として指定します。このプロパティは、src
がバイナリ シーケンスの行列である場合のみ設定できます。src
がその他の入力タイプである場合、signalMask
によって src
からカテゴリ名が直接推定され、このプロパティは読み取り専用になります。このベクトルは、src
の列数と同じ数の要素をもち、i 番目のカテゴリは src
の i 番目の列に対応します。src
が P 個の列をもち、このプロパティが指定されていない場合、signalMask
はカテゴリ名を ["1" "2" ... "P"]
に設定します。
データ型: string
| char
SpecifySelectedCategories
— カテゴリのサブセットを選択するオプション
false
(既定値) | true
カテゴリのサブセットを選択するオプション。logical 値として指定します。マスク作成後にこのプロパティを false
に設定すると、Categories
に含まれるすべてのカテゴリが選択されます。SpecifySelectedCategories
は既存のオブジェクトでのみ使用でき、名前と値の引数として指定することはできません。
データ型: logical
SelectedCategories
— 選択したカテゴリのインデックス
整数のインデックス値のベクトル
選択したカテゴリのインデックス。Categories
のカテゴリ要素を指す整数のインデックス値のベクトルとして指定します。このプロパティにリストされていないカテゴリは、signalMask
のオブジェクト関数を呼び出したときにマスク入力からフィルターで除外されます。カテゴリのインデックスは昇順に並べ替えなければなりません。このプロパティは、SpecifySelectedCategories
が true
である場合にのみ適用されます。SelectedCategories
は既存のオブジェクトにのみ使用でき、名前と値の引数として指定することはできません。
例: カテゴリのセット ["woman" "girl" "man" "boy"]
が与えられたとき、SelectedCategories
を [1 2 4]
として指定すると、["woman" "girl" "boy"]
が選択され、他はフィルターで除外されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
LeftExtension
— 領域を左に拡張するサンプルの数
0
(既定値) | 正の整数
領域を左に拡張するサンプルの数。正の整数として指定します。シーケンスの先頭に達した場合は、拡張済みのサンプルの数が打ち切られます。詳細については、領域範囲の変更を参照してください。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
RightExtension
— 領域を右に拡張するサンプルの数
0
(既定値) | 正の整数
領域を右に拡張するサンプルの数。正の整数として指定します。詳細については、領域範囲の変更を参照してください。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
LeftShortening
— 領域を左から短縮するサンプルの数
0
(既定値) | 正の整数
領域を左から短縮するサンプルの数。正の整数として指定します。signalMask
は、領域の長さ以上のサンプルの数だけ短縮された領域を削除します。詳細については、領域範囲の変更を参照してください。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
RightShortening
— 領域を右から短縮するサンプルの数
0
(既定値) | 正の整数
領域を右から短縮するサンプルの数。正の整数として指定します。signalMask
は、領域の長さ以上のサンプルの数だけ短縮された領域を削除します。詳細については、領域範囲の変更を参照してください。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MergeDistance
— マージされる領域間の距離
0
(既定値) | 正の整数
マージされる領域間の距離。正の整数として指定します。このプロパティを指定すると、signalMask
は、指定されたサンプル数以下の間隔がある、同じカテゴリの領域をマージします。詳細については、領域範囲の変更を参照してください。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MinLength
— 保持する領域の最小長
1
(既定値) | 正の整数
保持する領域の最小長。正の整数として指定します。このプロパティを指定すると、signalMask
は、指定されたサンプル数より短い領域を削除します。詳細については、領域範囲の変更を参照してください。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
オブジェクト関数
binmask | バイナリ シーケンス マスクの行列の取得 |
catmask | categorical シーケンス マスクの取得 |
extractsigroi | 信号マスクに基づく関心領域の抽出 |
plotsigroi | 信号マスクに基づく信号領域のプロット |
roimask | ROI table マスクの取得 |
例
オーディオ ファイル内の関心領域
でサンプリングされた音声信号を読み込みます。ファイルには、"MATLAB®" という単語を発声している女性の録音音声が含まれています。
load mtlb
t = (0:length(mtlb)-1)/Fs;
信号の分散が大きく変化している点を検出することによって、単語内の母音と子音を識別します。変化点の数を 5 つに制限します。
q = findchangepts(mtlb,"Statistic","rms","MaxNumChanges",5);
信号をプロットして変化点を表示します。
findchangepts(mtlb,"Statistic","rms","MaxNumChanges",5) axis tight
単語内の各文字に対応する関心領域を定義します。
roitable = t([[1;q] [q;length(mtlb)]]);
順序を維持したまま領域のラベルを割り当てます。
x = ["M" "A" "T" "L" "A" "B"]'; y = unique(x,"stable"); c = categorical(x,y);
関心領域の信号マスクおよび対応するラベルを作成します。領域が隣接するのを防ぐため、各領域を右から 1 サンプルだけ短縮します。関心領域 table のマスクを表示します。
src = table(roitable,c); msk = signalMask(src,"SampleRate",Fs,"RightShortening",1); roimask(msk)
ans=6×2 table
roitable c
___________________ _
0 0.017525 M
0.01766 0.10461 A
0.10475 0.22162 T
0.22176 0.33675 L
0.33688 0.46535 A
0.46549 0.53909 B
信号内で "A"
と発声されている場所にギャップを挿入します。
m = mtlb;
seq = catmask(msk,length(mtlb));
m(seq == "A") = NaN;
自己回帰過程を使用して信号を再構成します。再構成後の信号から各関心領域を抽出します。
p = fillgaps(m); w = extractsigroi(msk,p);
各領域の後に一時停止しながら音声を再生するには、次の行のコメントを解除します。
% for k = 1:length(w) % sound(cell2mat(w{k}),Fs) % pause(0.5) % end
再構成後の信号をプロットし、関心領域を可視化します。
figure plotsigroi(msk,p)
詳細
領域範囲の変更
signalMask
を使用すると、関心領域の持続時間の拡張または短縮、同じカテゴリの領域で十分に近いもののマージ、長さが十分ではない領域の削除を行って、関心領域を変更することができます。
signalMask
は、src
の領域範囲を行列に変換してから、指定されたプロパティに基づいて次の順序で範囲を変更します。
LeftExtension
およびRightExtension
に基づいて、領域を左または右に拡張。LeftShortening
およびRightShortening
に基づいて、領域を左または右から短縮。MergeDistance
に基づいて、十分に近い領域をマージ。signalMask
は、隣接する領域、オーバーラップする領域、繰り返された領域を必ずマージします。これらの領域は、0 または負のサンプル数だけ離れた領域と見なします。MinLength
に基づいて、短い領域を削除。
バージョン履歴
R2020b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)