DFT mit Exp(X),

Gast #390067
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
Gast
>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?
Gast
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.
Gast
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
Gast
@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
Gast
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
Gast
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 ?
Gast
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
Gast
@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
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.