Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: DFT/FFT - Wertebereich

  Alt 22. Dez 2007, 00:45
Zitat von sirius:
Da du ja schon pushst gebe ich mal ne Antowrt, ohne wirklich sicher zu sein, dass die richtig ist.
Das ist schon mehr als ich zu hoffen gewagt habe nach einem Tag Stille

Zitat von sirius:
Also die Frequenzen, die du bekommst sind ja abhängig von der Länge des betrachteten Zeitraums. die diskreten Frequenzen haben die Werte (n * 1/T) wobei T die Dauer der Funktion ist, welche du in die DFT schickst.
Das klingt schon so, als ob es in die richtige Richtung geht. Was mich gerade daran nur verwirrt, ist die Zeitkomponente - und zwar weil ich gar kein Zeitsignal habe . Es geht mir um Bilddaten, und da wäre vermutlich im weitesten Sinne n=T oder?

Zitat von sirius:
für jede dieser Frequenzen bekommst du eine Amplitude und eine Phase. Welche Genauigkeit die haben (in Abhängigkeit von der Genauigkeit des digitalen Eingangssignals) weis ich jetzt grad nicht. Für die Amplitude sehe eine direkte Abhängigkeit nicht. Sie wird wahrscheinlich potnziert mit der Anzahl der Werte und dürfte damit sehr hoch sein. Für die Phase dürfte ähnliches gelten. Aber vielleicht habe ich etwas übersehen.
Jetzt muss ich fragen: Genauigkeit = maximaler Zahlenwert in diesem Fall, oder Signifikanz der Stellen? Für den ersten Fall würde allerdings gelten müssen, dass eine DFT von 4192 Samples jegliche Grenzen handelsüblicher Datentypen um Längen sprengen müsste für die Koeffizienten. Tut sie das, und ich hab es nur nicht bemerkt?

Worauf das am Ende abzielt ist: Ich bekommen nach einer DFT eines Arrays von Werten zwei genau so lange Arrays mit je dem Frequenzspektrum und der Phase zurück. Wie groß sind meine Arrayelemente maximal/minimal, und wie kann ich das aus den Informationen "Sampleanzahl" und "Wertebereich der Eingangsgrößen" bestimmen?
Ich hoffe doch, dass das geht! Ziel ist es nachher auf 1 zu normieren. D.h. ich will, dass kein Element nachher über 1 ist. Dafür muss ich aber wissen womit ich maximal rechnen muss.
Da am Ende eine dreidimensionale DFT stehen soll, ist ein abfahren aller Werte zur Bestimmung des Maximums eigentlich zu zeitaufwändig. Daher suche ich nach einem Weg das generell zu lösen.

Zitat von sirius:
Nyquist:
Mh, ich habe in meinen transformierten Arrays Werte <> 0 über der Hälfte ihrer Länge stehen. Setzte ich diese "künstlich" 0 und wende die iDFT an, ist das Ergebnis vom Original verschieden. Ich hatte das so verstanden, dass sich diese 2. Hälfte ohne weiteres Zutun aus der ersten Hälfte berechnen ließe, so dass ich auf die Speicherung der 2. Hälfte verzichten kann.
Was an sich auch logisch ist, da ich ja 2 Arrays heraus bekomme, also doppelt so viele Daten wie der Eingang. Informationsmehrung wäre neu Daher darf letztlich ja nur je die Hälfte der 2 Arrays relevant sein, aber plumpes Wegschneiden verändert die Information offenbar. Daaaa ist mein Problem


Danke dir schon mal!
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat