Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss15:tonverarbeitung [2015/10/11 13:26] m.schramm [3.1 Decodierung für Taktrückgewinnung 1.1] |
ss15:tonverarbeitung [2016/05/10 14:46] (aktuell) |
||
---|---|---|---|
Zeile 44: | Zeile 44: | ||
return l | return l | ||
</code> | </code> | ||
+ | {{:ss15:taktverschiebung.png?direct&500 |Signale mit Takteinteilung und Taktverschiebung}} | ||
==== 3.2 Decodierung für Taktrückgewinnung 1.2 ==== | ==== 3.2 Decodierung für Taktrückgewinnung 1.2 ==== | ||
Diese Decodierungs-Funktion gleicht überwiegend der vorigen. Allerdings wird hier keine Taktverschiebung übergeben, sondern eine Liste ''idx'' mit konkreten Indizes zur Einteilung in Abschnitte. Nun werden die Indizes vom ersten bis zum vorletzen durchgegangen und die [[https://de.wikipedia.org/wiki/Diskrete_Fourier-Transformation|Diskrete Fourier-Transformation]] auf den Abschnitt vom jeweils aktuellen bis zum nächsten Index angewendet. Weiter geht es äquivalent zur anderen decode-Funktion. | Diese Decodierungs-Funktion gleicht überwiegend der vorigen. Allerdings wird hier keine Taktverschiebung übergeben, sondern eine Liste ''idx'' mit konkreten Indizes zur Einteilung in Abschnitte. Nun werden die Indizes vom ersten bis zum vorletzen durchgegangen und die [[https://de.wikipedia.org/wiki/Diskrete_Fourier-Transformation|Diskrete Fourier-Transformation]] auf den Abschnitt vom jeweils aktuellen bis zum nächsten Index angewendet. Weiter geht es äquivalent zur anderen decode-Funktion. | ||
Zeile 49: | Zeile 50: | ||
def decode(y, idx): | def decode(y, idx): | ||
'''erzeugt aus der Aufnahme y eine Liste der übertragenen Bits''' | '''erzeugt aus der Aufnahme y eine Liste der übertragenen Bits''' | ||
- | f_0 = 12900*tdauer # Frequenz zur codierung der 0 | + | f_0 = 13000*tdauer # Frequenz zur codierung der 0 |
f_1 = 12800*tdauer # Frequenz zur codierung der 1 | f_1 = 12800*tdauer # Frequenz zur codierung der 1 | ||
f = [] | f = [] | ||
Zeile 87: | Zeile 88: | ||
l.append(1) | l.append(1) | ||
</code> | </code> | ||
+ | {{:ss15:decode.png?direct&500 |Signalintensitäten abschnittsweise und Schranken}} | ||
===== 4. Queue ===== | ===== 4. Queue ===== | ||
Die Umsetzung der Queue basiert auf ''microlistener_queue.py'' von Stefan. Wir haben noch die Funktionen ''get_frames'' und ''set_frames'' ergänzt. Über diese Klasse können wir Objekte erzeugen, die einen Stream von der Soundkarte erhalten und diesen kontinuierlich in die ''queue'' schreiben. Über ''get_frames'' kann man sich daraus immer ''n'' Frames zur Weiterverarbeitung holen, die dann zuerst zur Taktrückgewinnung kommen. Mit der Funktion ''set_frames'' werden Frames zurück in die ''queue'' geschrieben, die bei der Weiterverarbeitung übrig geblieben sind und beim nächsten Aufruf von ''get_frames'' verarbeitet werden. Leider haben wir das gesamte Programm bisher noch nicht mit Verwendung der Queue zum fehlerfreien Laufen gebracht. | Die Umsetzung der Queue basiert auf ''microlistener_queue.py'' von Stefan. Wir haben noch die Funktionen ''get_frames'' und ''set_frames'' ergänzt. Über diese Klasse können wir Objekte erzeugen, die einen Stream von der Soundkarte erhalten und diesen kontinuierlich in die ''queue'' schreiben. Über ''get_frames'' kann man sich daraus immer ''n'' Frames zur Weiterverarbeitung holen, die dann zuerst zur Taktrückgewinnung kommen. Mit der Funktion ''set_frames'' werden Frames zurück in die ''queue'' geschrieben, die bei der Weiterverarbeitung übrig geblieben sind und beim nächsten Aufruf von ''get_frames'' verarbeitet werden. Leider haben wir das gesamte Programm bisher noch nicht mit Verwendung der Queue zum fehlerfreien Laufen gebracht. |