Subtrahieren von Sensorausgängen, zwischen denen eine gegenseitige Induktivität besteht


12

Hintergrund: Die Software, mit der ich meine Signale analysiere, ist matlab. Ich habe zwei Audiosignale, die mit zwei Magnetsensoren aufgenommen wurden. Nennen wir einen Sensor A und den anderen B. A und B haben eine gegenseitige Induktivität.

Während die Sensoren A und B arbeiten, möchte ich die Informationen, die in Sensor A aufgrund der gegenseitigen Induktivität empfangen wurden, von Sensor B subtrahieren.

Ich habe versucht, Signal B von Signal A zu subtrahieren, indem ich einfach in matlab (AB) geschrieben habe, aber es gibt mir eine seltsame Antwort. Ich denke, dass es von einer Verschiebung herrührt, die ich in der Phase habe. Die Anfangsaufnahmezeit der beiden Spuren ist dieselbe, und daher denke ich, dass es keine Zeitverzögerung ist.

Ich würde gerne wissen, wie man diesen Subtraktionsprozess theoretisch durchführt, und wenn jemand Tipps hat, wie man ihn einfach in matlab umsetzt, würde ich gerne wissen.

Ich werde jede Hilfe wirklich schätzen.

Danke im Voraus.

Unten habe ich Bilder der Signaldiagramme angehängt. Im ersten Bild sehen Sie die Signale, die von Sensor A und Sensor B empfangen werden. Im zweiten Bild habe ich Sensor A in Rot und Sensor B in Blau im Bereich von 2,12: 2,16 aufgezeichnet und noch weiter hineingezoomt.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben


Aus Ihren Plots geht hervor, dass nicht viel Übersprechen von Quelle 1 zu Quelle 2 stattfindet, sondern nur von 2 zu 1. Ist Ihre Überlagerung auf dem Bild dann falsch ("Dies muss von Quelle 2 subtrahiert werden")? Scheint, als würdest du versuchen, Quelle 2 von 1 zu entfernen, oder?
Jason R

Das ist richtig.
user1017064

Um die Idee der Phasenverschiebung zu bestätigen, zeichnen Sie beide Wellenformen aus der Nähe auf, nur mit einem Index von 2,3 bis 2,4 oder so, damit Sie einzelne Wellen in beiden Kanälen sehen können
Endolith

Antworten:


4

Das sieht nach einem direkten Übersprechproblem aus. Sie können das Signal nicht einfach direkt subtrahieren, da die magnetische Kopplung für jede Frequenz unterschiedlich ist (in Bezug auf Amplitude und Phase).

Angenommen, Sie haben zwei Audiosignale xa (t) und xb (t) und zwei Sensorsignale ya (t) und yb (t). Da es eine Kopplung zwischen den Sensoren gibt, kommt es zu einem Übersprechen und wir können im Frequenzbereich schreiben

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

wobei Hxy (w) die Übertragungsfunktion vom Signal "x" zum Sensorsignal "y" ist. Die 4 Übertragungsfunktionen bilden eine 2x2-Matrix. Um die ursprünglichen Signale vollständig wiederherzustellen, müssen Sie die Matrix invertieren und die invertierten Matrixübertragungsfunktionen auf Ihre empfangenen Sensorsignale anwenden.

Da Ihr Nebensprechen klein ist, können Sie die Übertragungsfunktion Hba (w) einfach direkt messen und wie folgt subtrahieren: Messen Sie die Übertragungsfunktion von Signal A zu Sensor B, wenn Signal B 0 ist. Erstellen Sie einen Filter aus dieser Übertragungsfunktion ( FIR oder IIR, je nach Form). Jetzt können Sie eine gefilterte Version von Sensorsignal A von Sensorsignal B messen und subtrahieren:

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

Dabei ist hab (t) die Impulsantwort Ihres Nebensprechfilters und ** des Faltungsoperators.

Das Übersprechfilter stellt die Amplitude und Phasenverschiebung als Funktion der Frequenz Ihrer spezifischen Sensorkopplung dar und stellt sicher, dass das richtige Signal subtrahiert wird.


Hilmar, ich bin neu bei matlab und habe einige Schwierigkeiten gehabt, Ihre Antwort umzusetzen. Ich werde für jede Hilfe von jedermann dankbar sein. Als erstes habe ich Signal A aufgezeichnet, wenn Sensor B 0 ist. Welche Argumente soll ich nun in Filter einfügen, wenn ich die Funktion "Filter" aufrufe? Wenn Sie eine Visualisierung des Signals benötigen, können Sie diese in der obigen Frage sehen. Danke noch einmal.
user1017064

5

Das klingt nach einer blinden Quellentrennung . Im Allgemeinen können Sie Dinge nicht mehr mischen, nachdem sie gemischt wurden. Wenn Sie zwei verschiedene Aufzeichnungen von zwei Quellen haben, wobei einige von jeder Quelle in jeder Aufzeichnung enthalten sind, können Sie manchmal eine unabhängige Komponentenanalyse verwenden , um sie zu trennen.

Ich habe hier ein Python-Beispiel . Es gibt auch FastICA für MATLAB . Wenn es sich um Audiosignale handelt, die magnetisch aufgenommen werden, gibt es wahrscheinlich keine nennenswerte Verzögerung zwischen ihnen. ICA funktioniert in diesem Fall gut.


Die FastICA für Matlab hat mir nicht geholfen, die Subtraktion zwischen den beiden Signalen vorzunehmen. Das Ergebnis ist einfach nicht gut genug. In meinem obigen Kommentar habe ich einen Link zu einem Foto angehängt, der die Situation, vor der ich stehe, erklären kann: bit.ly/rXmVgH. Übrigens vielen Dank für Ihre Hilfe.
user1017064
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.