AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DFT/FFT - Wertebereich

Ein Thema von dizzy · begonnen am 19. Dez 2007 · letzter Beitrag vom 23. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von dizzy
dizzy

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

DFT/FFT - Wertebereich

  Alt 19. Dez 2007, 22:06
Heyo DP!

Kann mir jemand fix bei einer Frage zur Fourier-Transformation helfen? Ich finde die Antwort die ich suche ums Verrecken nicht...

Eigentlich ganz einfach: In welchen Intervall bewegen sich die Fourierkoeffizienten? Also angenommen ich gebe eine Messreihe vor, bei der jedes Sample 0-255 sein kann. Wie groß/klein wird dann der größte/kleinste Fourierkoeffizient nach der Transformation sein (Frequenz und Phase)?

Eine zweite Frage, die thematisch zu verwand ist um dafür einen eigenen Thread zu basteln: Die Hälfte der Koeffizienten ist ja letztlich nur relevant (Nyquist Theorem), und ich habe nun schon des öfteren gelesen, dass sich diese Hälfte aus der anderen berechnen ließe. Ich würde zur Speicherung gerne diese Redundanz los werden, aber ich habe bisher nicht finden können wie man diese Berechnung anstellt.

Antworten hierauf würden mich Kilometer weiter bringen

Danke schonmal!
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

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

Re: DFT/FFT - Wertebereich

  Alt 20. Dez 2007, 23:58
*stups*
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: DFT/FFT - Wertebereich

  Alt 21. Dez 2007, 10:31
Da du ja schon pushst gebe ich mal ne Antowrt, ohne wirklich sicher zu sein, dass die richtig ist.

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.
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.

Nyquist:
Was du aus der DFT herausbekommst ist einmal direkt der Gleichanteil und dann n verschiedene Frequenzen (abhängig von der Anzahl der Abtastwerte) wobei du nur die erste Hälfte der Werte nutzen kannst. Entsprechend sollten auch keine anderen Frequenzen im Ausgangsignal sein.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
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
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: DFT/FFT - Wertebereich

  Alt 22. Dez 2007, 01:49
Am besten du betrachtest das Ergebnis einer DFT immer relativ. Also du betrachtest sie am besten immer im Bezug auf den Maximalwert. Denn wie genau die Größenordnung der Werte ist, lässt sich schlecht sagen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
jbaertle

Registriert seit: 2. Mär 2007
Ort: München
20 Beiträge
 
Delphi 7 Professional
 
#6

Re: DFT/FFT - Wertebereich

  Alt 22. Dez 2007, 02:03
Guten Abend dizzy,

so wie ich Dich verstehe, verwendest Du für die Eingabe ein Byte-Array und möchtest das auch für die Ausgabe so haben.
Vorsicht: Ohne Vorwissen um die Beschaffenheit des Signals kannst Du nicht sicherstellen, dass Deine Koeffizienten nicht größer als 255 sind, Du solltest also ein Integer-Array für die Ausgabe spendieren.
Bei unbekanntem Signal lassen sich lediglich pauschale Aussagen über die Koeffizienten insgesamt machen (Stichwort Wiener-Chintschin-Theorem), mehr ist aber nicht drin.


MfG Jani.
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

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

Re: DFT/FFT - Wertebereich

  Alt 22. Dez 2007, 19:08
Zitat von 3_of_8:
Am besten du betrachtest das Ergebnis einer DFT immer relativ. Also du betrachtest sie am besten immer im Bezug auf den Maximalwert. Denn wie genau die Größenordnung der Werte ist, lässt sich schlecht sagen.
Mh, genau das will ich ja verhindern, weil bei 512x480x512 = 125.829.120 Werten, und das mehrere Male hintereinander wird das Raussuchen des global höchsten Wertes zu einem echten zeitkritischen Problem. Klar die FFT braucht auch schon ganz schön dabei, aber man merkts leider tatsächlich.


Zitat von jbaertle:
so wie ich Dich verstehe, verwendest Du für die Eingabe ein Byte-Array und möchtest das auch für die Ausgabe so haben.
Jain, ich schmeiss das Ergebnis in Double-Arrays zunächst, eben aus besagter Unkenntnis heraus.
Zitat von jbaertle:
Bei unbekanntem Signal lassen sich lediglich pauschale Aussagen über die Koeffizienten insgesamt machen (Stichwort Wiener-Chintschin-Theorem), mehr ist aber nicht drin.
Das ist doch ein prima Suchansatz! Danke dir schon mal. Ich hoffe das lässt sich irgendwie verwenden. Und es geht mir ja gerade um pauschale Aussagen - daher bin ich grad guter Dinge. Aber erstmal in Suchmodus gehen

Best Fishes!
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

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

Re: DFT/FFT - Wertebereich

  Alt 22. Dez 2007, 21:28
Ich habe recherchiert, und das genannte Theorem scheint wohl nicht wirklich weiter zu helfen - zumindest nicht unmittelbar - und selbst wenn, sind die nötigen Berechnungen wohl leider noch aufwändiger als ein Vergleichen aller Ergebniselemente.

Allerdings habe ich gerade ein wenig mit Excel herumgespielt, und bin zu folgendem Schluss gekommen bisher:
Der überhaupt maximal auftretende Wert ist der DC Anteil. Er ist maximal I*N (I = maximaler Wert eines diskrteten Eingangswertes; N = Anzahl Eingangswerte). Hab ich also 10 Elemente die maximal 255 sind, ist der DC maximal 2550. Das hatte ich soweit erwartet.

Die restlichen Koeffizienten liegen da jedoch deutlich drunter, so dass dort noch Bits gespart werden könnten. Ich habe zum Test den "schlimmsten" Fall angenommen als: Alle Eingangswerte = 255, sprich eine konstante Funktion. Der spannende Teil kommt jetzt: A(1), also die Grundfrequenz sollte dabei ja mit voller Amplitude eingehen, und der knaller ist, dass es scheint als stünden I und If (If = maximaler Wert eines Bandes) ganz einfach über ein Verhältnis in Zusammenhang. Und das Verhältnis ist zudem auch noch ein ganz besonders schönes, nämlich 1,618. Das ist der goldene Schnitt!

Daher komme ich zu folgender Annahme:
Mit Ausnahme des DC ist der maximal zu erwartende Wert der einzelnen Fourierkoeffizienten I*1,618. Klingt mir fast schon zu einfach Und gilt zunächst einmal nur für das Amplitudenspektrum. Die Phase muss ich mir noch ansehen.


Ich hoffe ich hab nu keinen groben Mist veranstaltet, aber das sollte die Praxis nachher ja zeigen. Falls obiges jemand wissentlich dementieren kann, bitte ich darum! Mag mich nicht auf dem falschen Pfad nun zu genau umsehen
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: DFT/FFT - Wertebereich

  Alt 22. Dez 2007, 22:01
Wie willst du bei 125829120 eine FFT anwenden? O_o Divide&Conquer haut da nicht wirklich hin.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
jbaertle

Registriert seit: 2. Mär 2007
Ort: München
20 Beiträge
 
Delphi 7 Professional
 
#10

Re: DFT/FFT - Wertebereich

  Alt 22. Dez 2007, 22:17
Guten Abend dizzy,

ganz genau. Du kannst lediglich über die Summe der Quadrate der Koeffizienten Aussagen treffen (wie so oft...).

Eine Bemerkung noch: Wenn Du - wie Du sagt - ein konstantes Signal fouriertransformieren willst, dann sollte der Algorithmus nur einen, von Null verschiedenen Koeffizienten im Spektrum ausgeben (a0 o.ä).

MfG Jani.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz