Рассмотрим 4 следующих сигнала формы волны:
signal1 = [4.1880 11.5270 55.8612 110.6730 146.2967 145.4113 104.1815 60.1679 14.3949 -53.7558 -72.6384 -88.0250 -98.4607]
signal2 = [ -39.6966 44.8127 95.0896 145.4097 144.5878 95.5007 61.0545 47.2886 28.1277 -40.9720 -53.6246 -63.4821 -72.3029 -74.8313 -77.8124]
signal3 = [-225.5691 -192.8458 -145.6628 151.0867 172.0412 172.5784 164.2109 160.3817 164.5383 171.8134 178.3905 180.8994 172.1375 149.2719 -51.9629 -148.1348 -150.4799 -149.6639]
signal4 = [ -218.5187 -211.5729 -181.9739 -144.8084 127.3846 162.9755 162.6934 150.8078 145.8774 156.9846 175.2362 188.0448 189.4951 175.9540 147.4631 -89.9513 -154.1579 -151.0851]
Мы замечаем, что сигналы 1 и 2 выглядят одинаково, а сигналы 3 и 4 выглядят одинаково.
Я ищу алгоритм, который принимает в качестве входных сигналов n и делит их на m групп, где сигналы в каждой группе похожи.
Первым шагом в таком алгоритме обычно будет вычисление вектора признаков для каждого сигнала: .
В качестве примера мы можем определить вектор объекта следующим образом: [ширина, макс, макс-мин]. В этом случае мы бы получили следующие векторы функций:
Важным моментом при выборе вектора признаков является то, что аналогичные сигналы получают векторы признаков, которые расположены близко друг к другу, а разнородные сигналы - векторы признаков, которые находятся далеко друг от друга.
В приведенном выше примере мы получаем:
Таким образом, можно сделать вывод, что сигнал 2 намного больше похож на сигнал 1, чем сигнал 3.
В качестве векторного признака я мог бы также использовать термины из дискретного косинусного преобразования сигнала. На рисунке ниже показаны сигналы вместе с аппроксимацией сигналов первыми 5 членами из дискретного косинусного преобразования:
Дискретные косинус-коэффициенты в этом случае:
F1 = [94.2496 192.7706 -211.4520 -82.8782 11.2105]
F2 = [61.7481 230.3206 -114.1549 -129.2138 -65.9035]
F3 = [182.2051 18.6785 -595.3893 -46.9929 -236.3459]
F4 = [148.6924 -171.0035 -593.7428 16.8965 -223.8754]
В этом случае мы получаем:
Отношение не такое большое, как для простого вектора признаков, описанного выше. Значит ли это, что чем проще вектор признаков, тем лучше?
Пока я только показал 2 формы сигнала. График ниже показывает некоторые другие формы сигналов, которые будут входными данными для такого алгоритма. Один сигнал будет извлечен из каждого пика на этом графике, начиная с ближайшей минуты слева от пика и заканчивая ближайшей минутой справа от пика:
Например, сигнал 3 был извлечен из этого графика между образцами 217 и 234. Сигнал 4 был извлечен из другого графика.
Если вам любопытно; каждый такой график соответствует измерениям звука микрофонами в разных местах в пространстве. Каждый микрофон принимает одни и те же сигналы, но сигналы слегка смещаются во времени и искажаются от микрофона к микрофону.
Векторы признаков могут быть отправлены в алгоритм кластеризации, такой как k-означает, что будет группировать сигналы с векторами признаков, близкими друг к другу.
Есть ли у кого-нибудь из вас опыт / совет по проектированию вектора признаков, который был бы хорош при различении сигналов формы сигнала?
Также какой алгоритм кластеризации вы бы использовали?
Заранее благодарю за любые ответы!