Частотно-временные гребни
[___] = tfridge(___,'NumRidges', извлекает nr)nr частотно-временные гребни с наибольшей энергией. Этот синтаксис принимает любую комбинацию входных аргументов из предыдущих синтаксисов.
Функция использует пенализированный жадный алгоритм «вперед-назад» для извлечения гребней максимальной энергии из матрицы времени и частоты. Алгоритм находит максимальный частотно-временной гребень, минимизируя -1n A в каждый момент времени, где A - абсолютное значение матрицы. Минимизация -ln A эквивалентна максимизации значения A. Алгоритм дополнительно ограничивает скачки частоты штрафом, пропорциональным расстоянию между частотными ячейками.
Следующий пример иллюстрирует алгоритм частотно-временного гребня с использованием штрафа, который в два раза превышает расстояние между частотными ячейками. В частности, расстояние между элементами (j,k) и (m,n) определяется как (j-m)2. Частотно-временная матрица имеет три частотных ячейки и три временных шага. Столбцы матрицы соответствуют временным шагам, а строки матрицы соответствуют частотным ячейкам. Значения во второй строке представляют синусоидальную волну.
Предположим, что у вас есть матрица:
1 4 4 2 2 2 5 5 4
Обновите значение элемента (1,2) следующим образом.
Оставьте значения в первый момент времени неизменными. Начните алгоритм с (1,2) элемента матрицы, который представляет первый частотный бин во второй момент времени. Значение ячейки равно 4. Штрафовать значения в первом столбце на основе их расстояния от элемента (1,2). Применение штрафа к первому столбцу приводит к
original value + penalty × distance 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 следующим образом.
Пересчитайте исходные значения столбца 1 с коэффициентом штрафа, используя тот же процесс, что и на этапе 2а. Получают оставшиеся значения второго столбца, используя тот же процесс, что и на этапе 2b. Например, при обновлении элемента (2,2), имеющего значение bin 2, применение штрафа к столбцу приводит к
original value + penalty × distance 1 + 2 × 1 = 3 2 + 2 × 0 = 2 5 + 2 × 1 = 7
1 5(1) 4 2 4(2) 2 5 9(2) 4
Повторите шаг 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, который соответствует энергетическому пути синусоидальной волны в строке 2 матрицы, показанной на этапе 1.
При извлечении нескольких гребней алгоритм удаляет первый гребень из частотно-временной матрицы и повторяет процесс.