Projektowanie wektora cech do rozróżniania różnych przebiegów dźwiękowych


10

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]

Sygnały

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: .faja

Jako przykład możemy zdefiniować wektor cech jako: [szerokość, maksimum, maks. Min]. W takim przypadku otrzymalibyśmy następujące wektory cech:

fa1=[13,146,245]

fa2)=[15,145,223]

fa3)=[18,181,406]

fa4=[18,189,408]

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:

|fa2)-fa1|=22.1,|fa3)-fa1|=164,8

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: Cosinus przekształca się

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:

|fa2)-fa1|=141,5,|fa3)-fa1|=498,0

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:Ślad

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!


A co z iloczynem „kropki dobrej” sygnału wejściowego z jednym z M szablonów? Weźmiesz ten, który ma błąd najmniejszych kwadratów. Dla mnie od tego bym zaczął. Czy przypadkiem próbowałeś czegoś takiego?
Spacey

Cześć Mohammad! Problem polega na tym, że nie znam wcześniej przebiegów. Interesują mnie wszystkie sygnały wokół szczytów i mogą one mieć wiele różnych form, których wcześniej nie znam.
Andy

Jaki jest powód próby znalezienia nowych cech do scharakteryzowania tych wektorów, niż używanie ich bezpośrednio jako „cech”? (Będą jednak musiały mieć tę samą długość). W przypadku grupowania k-średnich najpierw obliczane są „odległości” między tymi małymi wektorami wydobytymi przy minimach pozyskanych sygnałów, a następnie algorytm spróbuje znaleźć ich grupowanie w zestawy k o minimalnej wariancji, co jest tym, co wydajesz się być po.
A_A

Cześć A_A! 1. Wymiary wektorów są zmniejszone. W przypadku sygnału 3 od 18 do 5 przy zastosowaniu dyskretnych współczynników cosinusowych. 2. Następuje wygładzanie. Sygnały są głośne i nie jestem zainteresowany szybkimi fluktuacjami.
Andy

3
Ludzie uczący się maszynowo twierdzą, że nigdy nie należy wyrzucać informacji - system powinien uczyć się wszystkiego. Oczywiście są to ci sami ludzie, którzy projektują algorytmy, których uruchomienie zajmie milion lat, ale nie jest to bez pewnych zasług. Zasadniczo chcesz wyrzucić jak najmniej informacji i dowiedzieć się, co zostało. Uderza mnie to jako problem, który powinien zostać rozwiązany w ramach Bayesa (szczerze mówiąc, ponieważ większość przetwarzania sygnału powinna być obecnie), ale to nie znaczy, że opracowanie istotnych cech nie jest ważne.
Henry Gomersall

Odpowiedzi:


2

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).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.