Odejmowanie sygnałów wyjściowych czujników, które mają wzajemną indukcyjność między nimi

12

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.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

użytkownik1017064
źródło
Więc z twoich wykresów wydaje się, że nie ma dużego przesłuchu ze źródła 1 do źródła 2, tylko od 2 do 1. Czy wtedy twoja nakładka na obrazie jest nieprawidłowa („To musi zostać odjęte od źródła 2”)? Wygląda na to, że próbujesz usunąć źródło 2 z 1, prawda?
Jason R
To jest poprawne.
user1017064
aby potwierdzić ideę przesunięcia fazowego, wykreśl oba przebiegi z bliska, tylko z indeksem 2.3 do 2.4 lub coś takiego, abyś mógł zobaczyć pojedynczą falę w obu kanałach
endolith

Odpowiedzi:

4

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

Ya(w) = Haa(w)*xa(w) + Hba(w)*xb(w)
Yb(w) = Hab(w)*xa(w) + Hbb(w)*xb(w)

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:

yb(t)' = yb(t)-hab(t)**ya(t)

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.

Hilmar
źródło
Hilmar, jestem nowy w Matlabie i napotkałem pewne trudności przy próbie wdrożenia twojej odpowiedzi. Będę wdzięczny za wszelką pomoc ze strony wszystkich. Pierwszą rzeczą, którą zrobiłem, było zarejestrowanie sygnału A, gdy czujnik B ma wartość 0. Jakie argumenty powinienem wstawić do filtra, wywołując funkcję „filter”? Jeśli potrzebujesz jakiejkolwiek wizualizacji sygnału, możesz to zobaczyć w powyższym pytaniu. Dzięki jeszcze raz.
user1017064,
5

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.

endolit
źródło
FastICA dla Matlaba nie pomógł mi odjąć dwóch sygnałów. Wynik po prostu nie jest wystarczająco dobry. W powyższym komentarzu dołączyłem link do zdjęcia, które może wyjaśnić sytuację, w której się znajduję: bit.ly/rXmVgH. Nawiasem mówiąc, bardzo dziękuję za pomoc.
user1017064,