Tło: Oprogramowanie, którego używam do analizy moich sygnałów, to Matlab. Mam dwa sygnały audio, które zostały nagrane za pomocą dwóch czujników magnetycznych. Nazwijmy jeden czujnik A, a drugi B. A i B mają między sobą indukcyjność.
Podczas gdy czujniki A i B działają, chciałbym odjąć informacje otrzymane w czujniku A ze względu na wzajemną indukcyjność od czujnika B.
Próbowałem odjąć sygnał B od sygnału A, pisząc po prostu w Matlabie (AB), ale daje mi to dziwną odpowiedź. Myślę, że wynika to z przesunięcia, które mam w fazie. Początkowy czas nagrywania dwóch ścieżek jest taki sam i dlatego uważam, że nie jest to opóźnienie czasowe.
Chciałbym wiedzieć, jak wykonać ten proces odejmowania w teorii, a jeśli ktoś ma jakieś wskazówki, jak łatwo wdrożyć go w Matlabie, chciałbym wiedzieć.
Naprawdę docenię każdą pomoc.
Z góry dziękuję.
Poniżej załączyłem zdjęcia wykresów sygnałów. Na pierwszym zdjęciu widać sygnały odbierane z czujnika A i czujnika B. Na drugim zdjęciu nakreśliłem czujnik A na czerwono i czujnik B na niebiesko, w zakresie 2,12: 2,16, i jeszcze bardziej powiększyłem.
Odpowiedzi:
Wygląda to jak zwykły problem cross-talk. Nie można po prostu odjąć sygnału bezpośrednio, ponieważ sprzężenie magnetyczne jest różne dla każdej częstotliwości (pod względem amplitudy i fazy).
Załóżmy, że masz dwa sygnały audio xa (t) i xb (t) oraz dwa sygnały czujnika ya (t) i yb (t). Ponieważ między czujnikami występuje sprzężenie, nastąpi rozmowa i możemy pisać w dziedzinie częstotliwości
gdzie Hxy (w) to funkcja przenoszenia z sygnału „x” na sygnał czujnika „y”. 4 funkcje przesyłania tworzą matrycę 2x2, a aby w pełni odzyskać oryginalne sygnały, należy odwrócić matrycę i zastosować funkcje odwróconego transferu macierzy do odebranych sygnałów z czujników.
Ponieważ twoje przesłuchy są małe, możesz po prostu bezpośrednio zmierzyć funkcję przenoszenia Hba (w) i odjąć ją w następujący sposób: Zmierz funkcję przesyłania z sygnału A do czujnika B, gdy sygnał B wynosi 0. Utwórz filtr z tej funkcji przesyłania ( FIR lub IIR, w zależności od kształtu). Teraz możesz zmierzyć i odjąć odfiltrowaną wersję od sygnału czujnika A od sygnału czujnika B:
gdzie hab (t) jest odpowiedzią impulsową twojego filtra przenikania i ** operatora splotu.
Filtr przenikania reprezentuje amplitudę i przesunięcie fazowe jako funkcję częstotliwości określonego sprzężenia czujnika i zapewnia odjęcie prawidłowego sygnału.
źródło
To brzmi jak ślepa separacja źródeł . Ogólnie rzecz biorąc, nie można odmiksować rzeczy po ich zmiksowaniu. Jeśli masz dwa różne nagrania z dwóch źródeł z niektórymi z każdego źródła w każdym nagraniu, możesz czasem użyć niezależnej analizy komponentów, aby je rozdzielić.
Mam tutaj przykład w języku Python . Istnieje również FastICA dla MATLAB . Jeśli są to sygnały audio, które są odbierane magnetycznie, prawdopodobnie nie ma między nimi znaczącego opóźnienia. ICA działa dobrze w tym przypadku.
źródło