2013-04-03 14 views
6

Nie chcę korzystać z bibliotek - chcę pisać od zera. Chcę się pobawić tworząc dekoder dla WEFAX przesyłanego przez radio. Różne częstotliwości dźwięku są konwertowane na różne ciemności pikseli. Tylko skala szarości - bez koloru.Szukasz podstaw czytania częstotliwości audio w C

Jest 120 linii na minutę, z których każda ma ponad 1000 pikseli. Chcę wykryć częstotliwość i zmienić ją w prawdopodobnie 8-bitową wartość. Odpowiednik sprzętowy będzie podobny do konwertera częstotliwości na napięcie LM567.

Nie mam pojęcia, od czego zacząć. Czy to jest coś takiego jak FIR lub IIR? Czy ktoś może wskazać mi kod, który mogę studiować? Nie piszę dla Windows, stricte unix.

Alan

+0

Wyszukaj "Wyznaczanie częstotliwości", "Wykrywanie tonu" i "(Szybkie) dyskretną transformatę Fouriera". –

+0

Zobacz [Aquila] (http://aquila-dsp.org/) lub [aubio] (http://aubio.org/). (Nawet jeśli chcesz pisać od zera, powinieneś sprawdzić, jak zrobili to inni ludzie, jeśli nie masz pojęcia, jak zacząć.) –

Odpowiedz

0

Zakładając, że dane IQ, można zacząć od prostego demodulatora FM realizowanego z czynnikiem różnicującym fazy. Częstotliwość jest pochodną fazy, więc możesz po prostu obliczyć różnicę faz od próbki do próbki, aby uzyskać oszacowanie pierwotnego sygnału FM. Pojedyncza próbka wyjściowa może być podana przez coś podobnego:

y[k] = arctan(imag(x[k])/real(x[k])) - arctan(imag(x[k-1])/real(x[k-1])) 

też może należy wykonać kilka fazę rozpakowaniu, aby uniknąć skoków wyjściu przez wielokrotność 2*pi. Więcej szczegółów znajduje się w części o częstotliwości chwilowej here.

Wyjście demodalnego FM powinno być w zasadzie obrazem, ponieważ będzie generować sygnał o różnej amplitudzie w taki sposób, jak pierwotny sygnał zmieniał się w częstotliwości. Będziesz musiał przeskalować ją do właściwej siatki pikseli i poprawnie skalować/kwantyzować szare poziomy.

Może poprawić jakość obrazu do dolnoprzepustowego filtru wyjścia demodulatora FM w celu zmniejszenia hałasu również.

Powiązane problemy