Visualisierung einer Kreuzkorrelation

Dieses kleine Programm ist nach einer Vorlesung zum Thema Digitale Signalverarbeitung entstanden. Das Thema war Kreuzkorrelation und Autokorrelation. Bei der Kreuzkorrelation geht es darum, ein bekanntes Signal in einem Signalgemisch aufzuspüren. Vereinfacht gesagt wird das Signal über die Aufzeichnung gelegt und bewertet, wie gut es dort passt. Nun könnte man meinen, daß ein bekanntes Signal finden zu wollen eine eher esoterische Angelegenheit ist. Wenn man schließlich weiß, daß es im empfangenen Signalgemisch enthalten ist, wozu suchen?

Der Witz daran ist, daß nicht das Signal selbst die Information trägt, sondern die Tatsache, daß es gesendet wurde. Bei einer Binärzahl wie 10011100 ist die Aussage, sie beinhalte 4 Einsen und 4 Nullen, auch relativ uninteressant. Die Information steckt in der Verteilung der Einsen und Nullen, also ihrer Position innerhalb der Ziffernsequenz. Wenn nun beispielsweise 10 verschiedene Symbole definiert wurden, und von einem empfangenen Signalgemisch bekannt ist, daß dort 4 Symbole drinstecken, kann man gezielt überall nach einem der 10 Symbole suchen. Wenn man sie gefunden hat, kann man die durch Art des Symbols und Position des Symbols kodierte Information lesen.

Screenshot des Programms

Das kurze Signal oben ist das Ausgangssignal. Mit dem Scrollbar daneben kann man es skalieren, mit "Neu" ein neues auswürfeln lassen. Im mittleren Bereich sieht man zufälliges Rauschen, mit dem eingearbeiteten Signal, damit man es besser erkennt eingefärbt. Man kann die Position verändern, und natürlich auch die Stärke des Rauschens sowie das Rauschsignal selbst. Im unteren Bereich sieht man die Kreuzkorrelationsfunktion, das Maximum ebenfalls farblich hervorgehoben. Sie ist nur aus dem berechnet, das man auch sehen kann, also keine Schummeleien im Innern ;-)

An dieser sehr simplen Implementierung lässt sich bereits erkennen, wie gut das Verfahren funktioniert. Während das im Rauschen versteckte Signal schon deutlich anders aussieht, als das unverfälschte Signal oben, wird es doch mit großer Sicherheit aufgefunden. Man kann das Rauschsignal sogar ziemlich hoch drehen, bevor es "false positives" gibt, also das Signal an Stellen vermutet wird, an denen es sich gar nicht befindet. Wenn beim Empfang von Übertragungen zusätzlich zur Kreuzkorrelation noch weitere Verfahren wie fehlerkorrigierende Übertragungscodes eingesetzt werden, können sogar über richtig schlechte Signalwege noch brauchbare Datenraten erzielt werden. Hier siegt die digitale Signalverarbeitung, wo analoge Mittel längst unbrauchbares Gerausche liefern würden.

Datum Datei Beschreibung
2004-04-24 kkf.zip Quellcode und Win32-Binary