このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
時間——周波数リッジ
関数は,ペナルティが課された順方向/逆方向の貪欲法を使用して,最大エネルギーリッジを時間——周波数行列から抽出します。アルゴリズムは,各時間点でln一を最小化することによって最大時間——周波数リッジを検索します。ここで,は行列の絶対値です。ln一を最小化することは一の値を最大化することと等価です。アルゴリズムは,オプションで、周波数ビン間の距離に比例するペナルティをもつ周波数のジャンプを制約します。
次の例は,周波数ビン間の距離の2倍のペナルティを使用した時間——周波数リッジのアルゴリズムを示しています。具体的には,要素(j, k)
と(m, n)
間の距離は,(j-m)2
として定義されます。時間——周波数の行列には,3つの周波数ビンと3つのタイムステップがあります。行列の列はタイムステップに対応し,行列の行は周波数ビンに対応します。2つ目の行の値は正弦波を表します。
行列は次のとおりとします。
1 4 4 2 2 2 5 5 4
(1、2)要素の値の更新は次のとおりです。
最初の時間点の値はそのまま変更しません。行列の (1,2) 要素をもつアルゴリズムを開始します。これは、2 つ目の時間点の最初の周波数ビンを表します。ビンの値は 4 です。(1,2) 要素からそれらの距離を基にして最初の列の値にペナルティを課します。最初の列にペナルティを適用して次を作成します。
原值+罚×距离1 + 2 × 0 = 1 2 + 2 × 1 = 4 5 + 2 × 4 = 13
1 4 4 2 13 5
列1の最小値を現在のビンの値4に追加します。(1、2)の更新された値は5になります。これはビン1から派生しています。
列2の残りの要素に対して値を次のように更新します。
2ステップと同じプロセスを使用してペナルティ係数をもつ,元の列1の値を再計算します。ステップ2 bと同じプロセスを使用して残りの2つ目の列の値を取得します。たとえば,(2,2)要素を更新する場合(ビンの値2があります),列にペナルティを適用すると以下が得られます。
原值+罚×距离1 + 2 × 1 = 3 2 + 2 × 0 = 2 5 + 2 × 1 = 7
1 - 5(1)4 2 4(2)2 5 9(2)4
3つ目の列に対して手順2を繰り返します。ただし,ペナルティは更新された2つ目の列に適用されます。たとえば,(1、3)要素を更新すると,ペナルティは次のようになります。
5 + 2 × 0 = 5 4 + 2 × 1 = 6 9 + 2 × 4 = 17
1 - 5(1)9(1)2 4(2)6(2)5个9(2)10(2)
行列の最後の列から始めて,最小値を見つけます。現在のビンから前の時間点のそのビンの原点に移行することによって行列を通じて時間順に戻ります。ビンのインデックスを継続して追跡します。これはリッジを構成するパスを形成します。アルゴリズムは最小値をもつビンの代わりに元のビンを使用して遷移を平滑化します。この例の場合、リッジのインデックスは、2
、2
、2
です。これは,ステップ1で示す行列の行2で正弦波のエネルギーパスと一致します。
複数のリッジを抽出している場合,アルゴリズムは時間——周波数の行列から最初のリッジを削除して,プロセスを繰り返します。