Transformacja Fouriera
Masz problem? Zapytaj na forum elektroda.pl
From: "Tranzystor" <tranzystorBEZSPAMU_at_nospam_tranzystor.pl>
Subject: Transformacja Fouriera
Date: Sun, 18 Apr 2004 17:50:54 +0200
Witam czy myślicie, że uda się na jakimś najprostszym AVRku z przetwornikiem
A/C zrobić szybką transformacje Fouriera dla sygnału o max częstotliwości
16khz ? Chodzi mi o to czy moc obliczeniowa będzie wystarczająca.
Transformacja miała by mi pomóc w dekodowaniu sygnału DTMF (to taki mój
pomysł ;). Może ma ktoś jakieś kody w C tego typu transformat ? Druga sprawa
ile miejsca w pamięci może zająć kod ?
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!news.dialog.net.pl!not-for-mai
From: "Andrzej Kamieniecki" <_andrzej.kamieniecki_at_nospam_tespol.com.pl>
Subject: Re: Transformacja Fouriera
Date: Sun, 18 Apr 2004 18:20:48 +0200
Użytkownik "Tranzystor" <tranzystorBEZSPAMU_at_nospam_tranzystor.pl> napisał w
wiadomości news:c5u824$5cp$1_at_nospam_atlantis.news.tpi.pl...
Witam czy myślicie, że uda się na jakimś najprostszym AVRku z
przetwornikiem
A/C zrobić szybką transformacje Fouriera
Pewnie się uda. Ale jak to ma być do DTMF to zainteresuj się algorytmem
Goertzel'a.
Jest tego sporo w sieci łacznie z gotowcami na procesory TI i AD.
Andrzej Kamieniecki
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai
From: "Tomek" <tomezz_at_nospam_poczta.onet.pl>
Subject: Re: Transformacja Fouriera
Date: Sun, 18 Apr 2004 18:57:46 +0200
Pewnie się uda. Ale jak to ma być do DTMF to zainteresuj się algorytmem
Goertzel'a.
Jest tego sporo w sieci łacznie z gotowcami na procesory TI i AD.
Ale do DTMF'a moim skromnym zdaniem nie potrzeba armaty w postaci FFT, a
wystarczyloby kilka wyrazow ciagu z DFT. Po prostu zapamietujesz tablice
sinusow dla czestotliwosci DTMF i przemnazasz zgodnie z podstawowym wzorem
transformaty Fouriera. Czyli przy dobrej implementacji to wychodzi 16 mnozen
na jeden odczyt z ADC plus jakies drobne obliczenia dla kazdej ramki... Jak
ktos dobrze zauwazyl telefon to max 3 kHz a DTMFy sa zdaje sie troche nizej
nawet...
Tomek
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.ceti.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Tranzystor" <tranzystorBEZSPAMU_at_nospam_tranzystor.pl>
Subject: Re: Transformacja Fouriera
Date: Sun, 18 Apr 2004 21:24:52 +0200
"Tomek" <tomezz_at_nospam_poczta.onet.pl> wrote in message
news:c5uc22$oeu$1_at_nospam_news.onet.pl...
Pewnie się uda. Ale jak to ma być do DTMF to zainteresuj się algorytmem
Goertzel'a.
Jest tego sporo w sieci łacznie z gotowcami na procesory TI i AD.
Ale do DTMF'a moim skromnym zdaniem nie potrzeba armaty w postaci FFT, a
wystarczyloby kilka wyrazow ciagu z DFT. Po prostu zapamietujesz tablice
sinusow dla czestotliwosci DTMF i przemnazasz zgodnie z podstawowym wzorem
transformaty Fouriera. Czyli przy dobrej implementacji to wychodzi 16
mnozen
na jeden odczyt z ADC plus jakies drobne obliczenia dla kazdej ramki...
Jak
ktos dobrze zauwazyl telefon to max 3 kHz a DTMFy sa zdaje sie troche
nizej
nawet....
Hmm ja niestety nie siedzę w temacie FFT itp. za bardzo (dopiero się
rozeznaje). Czyli mówisz że mam szukać DFT ? czy jednak Goertzel'a bo coś
mi się wydaje że Goertzel'a to właśnie coś w stylu tego co opisałeś czyli
DFT. Jak narazie doszedłem do tego że algorytm Goertzel'a jest lepszy od FFT
(do tego konkretnego zastosowania) dlatego że podaje się w nim wejściowe
częstotliwości (te których się szuka w sygnale) i dlatego jest o wiele
bardziej wydajny bo obliczenia wykonuje się tylko dla tych wzorcowych
częstotliwości. Także to by pasowało o twojego DFT.
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai
From: "Tomek" <tomezz_at_nospam_poczta.onet.pl>
Subject: Re: Transformacja Fouriera
Date: Sun, 18 Apr 2004 21:38:24 +0200
Hmm ja niestety nie siedzę w temacie FFT itp. za bardzo (dopiero się
rozeznaje). Czyli mówisz że mam szukać DFT ? czy jednak Goertzel'a bo coś
mi się wydaje że Goertzel'a to właśnie coś w stylu tego co opisałeś czyli
DFT. Jak narazie doszedłem do tego że algorytm Goertzel'a jest lepszy od
FFT
(do tego konkretnego zastosowania) dlatego że podaje się w nim wejściowe
częstotliwości (te których się szuka w sygnale) i dlatego jest o wiele
bardziej wydajny bo obliczenia wykonuje się tylko dla tych wzorcowych
częstotliwości. Także to by pasowało o twojego DFT.
Algorytmu Goertzel'a nie znam ale z ciekawosci poogluguje zeby zobaczyc co
to jest jak znajde cos czasu. FFT z glowy nie zakoduje ;) ale orientuje sie
mniej wiecej jak to dziala i hmm nie widze tego na AVR'ku bez zewnetrzengo
RAMu. To co Ja pisalem wczesniej to po prostu jeden wyraz z szeregu
Fouriera - zobacz jak wyglada caleczka w dowolnym poradniku matematycznym.
Przy takim podejsciu w trakcie liczenia potrzebujemy jedynie te sumy dla
kazdej z czestotliwosci dla klawiszy DTMF. Sinusy zapisujesz w pamieci
programu. Najwazniejsze jest to ze nie musisz buforowac probki dzwiekowej.
W skrocie to wyglada tak ze masz swoja probke dzwiekowa i generujesz sinusa
i cosinusa jakiejs zadanej czestotliwosci (ktorys z klawiszy DTMF).
Nastepnie wyboerasz sobei jakis przedzial czasowy tych sygnalow i sumujesz
iloczyn probki i sinusa i sumujesz iloczyn probki i cosinusa. Wartosc
amplitudy danej czestotliwosci zawartej w tej probce to o ile pamietam byl
piewisatek(z sumy kwadratow zapamietanych sum) podzielone przez dlugosc
przedzialu. Pierwisatek mozesz sobei pominac i zastosowac jakas wartosc
progowa...
Tomek
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!news.task.gda.pl!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai <