Euler meint: 1.) X(k)=X(n)cos(2pi/N*k*n) + j X(n)*(-1)*sin(2pi/N*k*n) 2.) X(k)=X(n)exp(-j*2pi/N*k*n) Die Summenzeichen habe ich mal weggelassen. mit der 1.Gleichung funzt die Dft korrekt. Problem die 2.Gleichung erzeugt falsche koeffizienten aufsummiert sind die koef. viel zugroß. Und auch die Fkt. cos(x)+(-sin(x))ist nicht gleich exp(x) Wer kann das erklären Mfg Andreas
>Und auch die Fkt. cos(x)+(-sin(x))ist nicht gleich exp(x)
Ist sie auch nicht. ->siehe Alex.
Mit welchem Programm rechnest? Weiß es was j bzw i bedeutet?
Ich denke mal, dass Du in der Exponentialfunktion das argument nicht als komplexe Zahl einsetzt. Die beiden gleichungen sollten soweit dasselbe Ergebnis liefern => dürfte also irgendwo in Fehler im Programm sein.
Aber nehmt euch doch mal einen Taschenrechner und rechnet an der Stelle PI da ist ja sin(x)=0 somit auch i. Cos(x)ist -1. Ich bekomme mit der exp Fkt. nicht das selbe Erebnis. Ergebnis -1+(i*(-1*0))= -1 Gruss Andreas
@Andreas, sagte ich doch. Du musst exp(j*pi) nehmen und nicht! exp(pi), und das ist definitiv -1. Zeichne es Dir am Einheitskreis auf. z sei eine komplexe Zahl, dann ist exp(z) = exp(Re{z})*(cos(Im{z})+j*sin(Im{z})) Ich weiss ja nicht mit was für'n Programm Du rechnest. In Matlab musst du wie schon oben erwähnt aufpassen, dass i oder j nicht schon als veriablen benutzt wurden. Mario
Das Problem ist, ich progr. mit Bascom und das kennt kein i als komplexe Zahl.Also rechne ich mit cos und sin Werten um sie am Schluss komplex zusammenzuführen. Meine 128 Punkte FFT läuft gut mit ca. 10 Durchläufen pro Sekunde.Nun will ich die Leistung steigern in dem ich mit exp^(x). rechne zwecks besserer Multiplikation.Im Moment funktioniert das auch nur mit 4Byte langen Singel Werten. Gruss Andreas
bist du sicher dass euelr dir mehr performance bietet ? weistdu das du überhaupt tust ? was erwartest du von basecom und wie sieht dein programm aus ?
Nein weiss ich nicht, aber in Exp.Schreibweise lassen sich kompl. Zahlen schneller multiplizieren aber auch schlechter addieren. Und in asm würde ich das wohl nie hinkriegen. Erstmal läuft die FFt und mit kürzen von Prozessen kriege ich auch 50ms pro FFt Durchlauf aber dann ist wohl Schluss. Gruss Andreas
@Andreas J. ich suche schon seit langem eine FFT für Bascom. ich will damit ein Audiosignal darstellen. Allerdings brauche ich nur 32 Bänder. Hättes Du einen Code für mich oder könntest Du mir helfen mit der FFT ? mfg Kay
Hallo Kai Kommst du klar mit der FFT? Hast ja nix mehr von dir hören lassen. gruss Andreas
hallo andreas, bin noch nicht dazugekommen es zu testen. melde mich auf jedenfall, wenn ich soweit bin. mfg Kay
also du kannst das NICHT mit exp() rechnen wenn der kein i oder j kennt !!! du darfst dann alles gemütlich über winkelfunktionen rechnen ;) daher mach eine fft.. damit wird dir der rechenaufwand von n^2 auf n*ld(n) gedrückt... wie man das implementiert ist mir jetzt auf die schnelle zu kompliziert zu erklären.. der algorithmus ist aber eigentlich primitiv... und im übrigen kann man in exponentialschreibweise KEINE zahlen EINFACH addieren !!! (es sei denn sie haben gleichen exponenten)... also entweder dft über winkelfunktionen oder gleich fft schnell ;) 73
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.