Rozważ 4 następujące sygnały kształtu fali:
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]
Zauważamy, że sygnały 1 i 2 wyglądają podobnie, a sygnały 3 i 4 wyglądają podobnie.
Szukam algorytmu, który przyjmuje jako sygnały wejściowe n i dzieli je na m grup, gdzie sygnały w każdej grupie są podobne.
Pierwszym krokiem w takim algorytmie byłoby zwykle obliczenie wektora cech dla każdego sygnału: .
Jako przykład możemy zdefiniować wektor cech jako: [szerokość, maksimum, maks. Min]. W takim przypadku otrzymalibyśmy następujące wektory cech:
Ważną rzeczą przy podejmowaniu decyzji o wektorze cech jest to, że podobne sygnały otrzymują wektory cech, które są blisko siebie, a odmienne sygnały - wektory cech, które są daleko od siebie.
W powyższym przykładzie otrzymujemy:
Możemy zatem stwierdzić, że sygnał 2 jest znacznie bardziej podobny do sygnału 1 niż sygnał 3.
Jako wektor cech mogę również użyć określeń z dyskretnej transformacji kosinusowej sygnału. Poniższy rysunek pokazuje sygnały wraz z aproksymacją sygnałów o pierwsze 5 składników z dyskretnej transformacji kosinusowej:
W tym przypadku dyskretne współczynniki cosinus są następujące:
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]
W takim przypadku otrzymujemy:
Współczynnik nie jest tak duży, jak w przypadku prostszego wektora cech powyżej. Czy to oznacza, że prostszy wektor cech jest lepszy?
Do tej pory pokazałem tylko 2 przebiegi. Poniższy wykres pokazuje inne kształty fal, które byłyby danymi wejściowymi dla takiego algorytmu. Z każdego piku na tym wykresie zostanie wyodrębniony jeden sygnał, zaczynając od najbliższej minuty po lewej stronie szczytu i zatrzymując się przy najbliższej minucie po prawej stronie szczytu:
Na przykład sygnał 3 został wyodrębniony z tego wykresu między próbką 217 i 234. Sygnał 4 został wyodrębniony z innego wykresu.
Jeśli jesteś ciekawy; każdy taki wykres odpowiada pomiarom dźwięku przez mikrofony w różnych pozycjach w przestrzeni. Każdy mikrofon odbiera te same sygnały, ale sygnały są nieco przesunięte w czasie i zniekształcone z mikrofonu na mikrofon.
Wektory cech mogłyby być wysyłane do algorytmu grupowania, takiego jak k-średnie, które grupowałyby razem sygnały z wektorami cech blisko siebie.
Czy ktoś z was ma jakieś doświadczenie / porady dotyczące projektowania wektora cech, który byłby dobry w rozróżnianiu sygnałów falowych?
Którego algorytmu klastrowego używałbyś?
Z góry dziękuję za wszelkie odpowiedzi!
Odpowiedzi:
Chcesz tylko obiektywne kryteria, aby rozdzielić sygnały, czy też ważne jest, aby miały one jakieś podobieństwo, gdy ktoś ich słucha? To oczywiście musiałoby ograniczać Cię do sygnałów nieco dłuższych (ponad 1000 próbek).
źródło