LabVIEWForum.de - Kreuzkorrelation

LabVIEWForum.de

Normale Version: Kreuzkorrelation
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Morgen,

ich befasse mich zur Zeit mit der Laufzeitmessung eines Signals. Dafür nutze ich die Kreuzkorrelationsfunktion, was jedoch nur bedingt funktioniert.
Bei unregelmäßigen Signalen, die ich mit zwei Mikrofonen erfasse, lässt sich der Zeitversatz ohne Probleme bestimmen.
Verwende ich jetzt jedoch ein periodisches Signal, wie einen Sinus, dann ist das Ergebnis stark frequenzabhängig.
Woran liegt diese Frequenzabhängigkeit und wie könnte man den Sinus anpassen, damit eine korrekte Messung durchgeführt wird?

Grüße,
Robo
Hallo Robo,

bei einem unregelmäßigen Signal kannst Du eine markante Stelle finden (z.B. einen Peak) und herausfinden wann dieser Peak am einen und am anderen Mikrofon ankommt. Bei einem regelmäßigen Signal (z.B. Sinus) kannst Du nicht sagen welcher Teilabschnitt vom Sinus an einem Mikrofon zu welchem am anderen Mikrofon passt. Du müsstest z.B. den Sinus pulsen oder Zufallswerte addieren damit Du Unterschiede der einzelnen Perioden finden kannst.

Grüße

kpa
Hallo kpa,

vielen Dank schon einmal. Nachdem ich mich über die Funktionsweise von GPS informiert habe, bin ich auch auf dieses Prinzip der zufälligen Ausgabe gestoßen.
Bei der Umsetzung hat sich bisher ergeben, dass sowohl die Änderung von Amplitude, als auch Lautstärke keinen Effekt zeigt.
Die Änderung der Frequenz hat funktioniert. Dabei bin ich aber auch auf ein Problem gestoßen.
Und zwar gebe ich pro Schleife 5000 Samples weiter an die Audioausgabe. Für diese 5000 Samples wird dann eine zufällige Frequenz gewählt..
Dadurch lässt sich die Zeitmessung wesentlich verbessern, aber es gibt doch diese Intervalle von 5000 Samples, in denen man mittels Kreuzkorrelation kein eindeutiges Ergebnis erzielt.
Wie lässt sich die Frequenz innerhalb der Schleife ändern? Die Samplerate lässt sich ja nicht unbegrenzt herabsetzen.. Das etwas angepasste Beispiel-VI ist angehängt.

Grüße

Robo
Hallo Robo,

erzeuge eine Sinuskurve und addiere jedem einzelnen Amplitudenwert einen Zufallswert (ca. 1/10 von der Sinusamplitude). Wenn Du nur alle 5000 Samples eine Änderung (zb Frequenz) dann sind das 44100/5000 (~9) Änderungen/s. Wenn Du jeden Sample-Wert änderst dann hast Du 44100 Änderungen/s.

Grüße

kpa
Hallo,

das Addieren eines Zufallwertes auf jeden einzelnen Wert funktioniert zwar, aber dadurch entsteht einfach ein verrauschter Sinus, den die Mikrofone noch deutlich als solchen wahrnehmen. Die Zeitmessung zeigt dabei keinen Unterschied zum Test mit dem reinen Sinus.
Durch den regelmäßigen Wechsel der Frequenz war das Ergebnis bisher am besten. Aber das muss sich ja noch genauer und besonders frequenzunabhängig lösen lassen.

Grüße

Robo
Bei einem gepulsten Signal sieht das Ergebnis wie folgt aus..
Dabei lässt sich wieder kein eindeutiges Maximum feststellen und die Werte weichen wieder stark von der Realität ab.

Die Werte der Kreuzkorrelation werte ich aus, indem ich mir den Index des Maximums ausgeben lasse. Sollte kein zeitlicher Versatz vorhanden sein, wäre das Maximum genau in der Mitte, daher subtrahiere ich die Anzahl der Samples pro Kanal von dem Index. Was überbleibt sollte dann der zeitliche Versatz sein, welchen ich mit dem gegebenen dt multipliziere.

Grüße
Referenz-URLs