Алгоритм сравнения пиков: они в фазе или нет?

Я разрабатываю алгоритм для сравнения двух списков чисел. Списки представляют пики, обнаруживаемые в сигнале с использованием надежного метода обнаружения пиков. Я хотел бы придумать какой-нибудь способ определить, находятся ли пики в фазе, в противофазе или ни в одном (не может быть определено). Например:

Эти массивы будут рассматриваться поэтапно:

[ 94 185 278 373 469], [ 89 180 277 369 466]

Но эти массивы будут не в фазе:

[51 146 242 349], [99 200 304 401]

Не требуется, чтобы массивы были одинаковой длины. Я рассмотрел периодичность измерения, однако в этом случае я могу предположить, что сигнал уже является периодическим.

У меня была еще одна идея - разделить все элементы массива по их индексу (или их индексу +1), чтобы посмотреть, сгущаются ли они вокруг одной или двух точек, но это не является надежным и дает сбой, если отсутствует один пик.

Какие подходы могут быть полезны при решении этой проблемы?

2 ответа

Решение

Один из подходов состоит в том, чтобы найти среднее расстояние от каждого пика в первом списке до пика во втором списке.

Если вы поделите это расстояние на среднее расстояние между пиками в первом списке, вы получите дробь, где 0 означает фазу, а 0,5 - фазу.

Например:

[ 94 185 278 373 469], [ 89 180 277 369 466]
94->89 = 5
185->180 = 5
278->277 = 1
373->369 = 4
469->466 = 5

Score = median(5,5,1,4,5) / median distance between peaks
      = 5 / 96 = 5.2% => in phase


[51 146 242 349], [99 200 304 401]
51->99 = 48
146->99 = 47
242->200 = 42
349->304 = 45
score = median(48,47,42,45) / median distance between peaks
      = 46 / 95.5
      = 48% => out of phase

Я бы вписал местоположения пиков, используя их в качестве местоположений индексов, в гораздо больший массив (лучше всего, если длина массива близка к целочисленному кратному расстоянию периодичности ваших пиков), а затем выполнил бы сложный фильтр Гертцеля (если вы знаете частоту), или выполните DFT или FFT (если вы не знаете частоту) массива. Затем используйте atan2() для комплексного результата (на пиковой амплитуде частоты для БПФ), чтобы измерить фазу относительно начала массива. Затем сравните развернутые фазы, используя некоторый порог разницы.

Другие вопросы по тегам