Transformata Fouriera FFT - dzialajacy przyklad

0

Witam

mecze sie z tematem juz jakis czas. Czy ktos z Was moglby napisac kawelek przykladowego kodu, lub podac namiary na dzialajace klase, ktrora realizuje transformate Fouriera dla przykladowej tablicy double o rozmiarze 32 elementy. Tablice wypelniamy wartosciami od 1 do 32. I co wazniejsze, przeprowadzic transformate odwrotna, ktora zwroci wyniki przed transformata (ewentualnie przyblizenia, wynikajace z zaokraglen).

bede bardzo wdzieczny za wszelka pomoc i wskazowki

0

Qyon z google korzystac to ja umiem.
Prosilem o tn konkretny przyklad. Ale po raz kolejny potwierdziles tendencje tego forum. Jak ktos nie ma nic do powiedzienia do odsyla na google.
Teraz zaczniecie/zaczniesz lamentowac, ze nie dostalem gotowego rozwiazania to pisze takie rzeczy. Ale taka jest niestety prawda.
Typowa odpowiedz forum 4programmers. Wpiszcie to sobie jako sobie jako szablon.

Mimo wszystko dziekuje jednak, ze sie wylsililes i podales linka do google. Juz dawno to przesledzilem.
Dzieki za pomoc.

0

to ja bede litosciwy, nie taki strasznie zly jak cala reszta i wkleje tobie pierwszy link jaki pokazal sie w google

http://www.cs.princeton.edu/introcs/97data/FFT.java.html

dodatkowo po zrozumienie odsylam do numerical recipes (co prawda w fortran/c/c++/pascal) do rozdzialu 12 Fast Fourier Transform.

BTW

guest79 napisał(a)

Qyon z google korzystac to ja umiem.

Nie potrafisz i to potwierdziles ...

........... i jescze, jakbys twierdzil, ze jest nie dzialajacy:

E:\Program Files\Java\jdk1.5.0_06\bin>javac Complex.java

E:\Program Files\Java\jdk1.5.0_06\bin>javac fft.java

E:\Program Files\Java\jdk1.5.0_06\bin>java FFT 4
x
-------------------
0.09982867282673746
-0.9578212028700461
0.2866509559839743
-0.15875122750287907

y = fft(x)
-------------------
-0.7300928015622135
-0.18682228315723687 + 0.7990699753671671i
1.503052059183637
-0.18682228315723676 - 0.7990699753671671i

z = ifft(y)
-------------------
0.09982867282673746
-0.9578212028700461 - 3.291113424925024E-18i
0.2866509559839743
-0.15875122750287907 + 3.291113424925024E-18i

c = cconvolve(x, x)
-------------------
0.3962451178526821 - 4.163336342344337E-17i
-0.2822484212303113 - 9.141013365362393E-18i
0.9998553779018843 + 4.163336342344337E-17i
-0.5808165756312935 + 9.141013365362393E-18i

d = convolve(x, x)
-------------------
0.00996576391834783 - 4.85722573273506E-17i
-0.19123603897565195 + 4.7471197596623016E-17i
0.9746534256682133 + 1.9503689630166832E-17i
-0.5808165756312935 + 3.232608229831011E-17i
0.3862793539343343 + 6.938893903907228E-18i
-0.09101238225465937 - 5.661221096198541E-17i
0.025201952233670888 + 2.2129673793276538E-17i
-2.3185068932947716E-17i

0

Mimo że jest chwalony to ten przykład jest wg mnie najbardziej zagmatwany jaki dotychczas znalazłem.
w ogóle uruchomić gotowy program to nie problem raczej. Więc to jest z deka żałosne co napisałeś.
Problem jest z zaimplementowaniem.
Bo zamiast jakiejś jednej metody ktora np przyjmuje tablice-okno i size,
nastepnie transformuję i zwraca przerobioną tablice,
to tu autor nabudował aż dwie klasy. [!!!] :-(

1 użytkowników online, w tym zalogowanych: 0, gości: 1