Re: Problem bei FFT
Naja, man kann das schon machen, aber je größer die Anzahl Samples bei gleichbleibender Samplingrate ist, desto ungenauer ist das Ergebnis. (Aber desto größer ist der Frequenzraum, den man abdecken kann)
|
Re: Problem bei FFT
Zitat:
//EDIT: 3_of_8 hat die Lösung dafür schon gesagt ;). Ich werde also das Zeitfenster mal verkleinern und die Ergebnisse der Zeitfenster dann untereinander mitteln ;). Zitat:
|
Re: Problem bei FFT
Je größer die Anzahl der übergebenen Samples, desto genauer wird das Ergebnis. Je größer die Samplerate, desto ungenauer, aber desto breitbändiger wird das Ergebnis.
Das sind die zwei Möglichkeiten, die du hast. (in meinem vorherigen Beitrag hab ich Unsinn gesagt, es ist genau umgekehrt) Übrigens geht eine FFT bei 13 MB gar nicht. Das ist dann eine DFT, zumindest teilweise. Eine FFT kann nur angewendet werden, wenn die Sampleanzahl eine Zweierpotenz ist. Dann dauert das auch deutlich weniger als 5 Sekunden. |
Re: Problem bei FFT
[offtopic]
Zitat:
[/offtopic] |
Re: Problem bei FFT
Zitat:
Btw: Es gibt bei FFTw vorwärts und rückwärts, gibt es da einen Unterschied? (bei gleichen Eingangswerten kommt immer das gleiche raus). |
Re: Problem bei FFT
Was ist eine FFTw? O_o
Also, ich sags nochmal so: Eine FFT ist ein Spezialfall einer DFT, die auf dem Divide and Conquer-Verfahren beruht (das kennen wir aus der Schönhagen-Strasse-Matrixmultiplikation oder dem Quicksort-Algorithmus). Divide-and-Conquer-Algorithmen funktionieren nur mit Zweierpotenzen. Ich hab das ganze in dem Fall so geschrieben, dass die FFT solange wie möglich angewandt wird (also so oft wie möglich durch zwei geteilt wird) und dann DFTs ausgeführt werden. Bei Zahlen, die mit 2 teilerfremd sind, muss also immer eine DFT angewandt werden. Das ist der worst-case. Bei Zweierpotenzen kann komplett eine FFT angewandt werden, wodurch man eine Laufzeit von, ich glaube log n oder n log n oder sowas in der Art hat. Also wenn irgendwie möglich, sollte man diese Funktion immer mit Zweierpotenzen aufrufen. |
Re: Problem bei FFT
Zitat:
|
Re: Problem bei FFT
Zitat:
Zitat:
(Wie ich schon weiter oben schrieb) Eine DFT ist der Einstieg in die Signalanalyse. Das ist dasselbe, wie, dass du Lesen lernen musst um Goethe interpretieren zu können. Die Fouriertransformation ist kein Allheilmittel. Du musst dir überlegen, was du willst, und dann deine DFT danach ausrichten und danach geht es erst richtig los. Weitere Berechnungen müssen folgen. Das hast du ja schon selber erkannt: Zitat:
Eine DFT liefert nur eine exakte Analyse, wenn du ein Signal hast, dass entsprechend seiner Abtastwerte auch nur bestimmte Frequenzanteile beinhaltet und dann auch so, dass immer vollständige Perioden jedes Frequenzanteils im betrachteten Zeitfenster enthalten sind. |
Re: Problem bei FFT
Zitat:
Zitat:
Zitat:
|
Re: Problem bei FFT
Okay, dann streich das "alle" und ersetze es durch "meine". ;)
|
Re: Problem bei FFT
Ich habe den Algorithmus auch implementiert - es funktioniert soweit ganz gut. Weiss jemand wie ich den Gezoomten Bereich aus einem TChart bestimmen kann? Bis jetzt kann ich nur für das gesamte TChart die FFT durchführen. Nun möchte ich es dem Nutzer überlassen, welchen Teil des Graphen er analysieren will und das soll eben der herausgezoomte/selektierte Bereich sein.
Perfekt wäre das ganze dann, wenn schon bei der Auswahl berücksichtigt würde, dass es sich bei der Anzahl der Samples/Punkte um eine Potenz von 2 handeln muss. Ich könnte mir vortsellen, dass das wie das andocken bei Komponenten funktioniert. Schon erledigt: Mit Chart.BottomAxis.Minimum bzw. Maximum bekommt man den selektierten Bereich. |
Re: Problem bei FFT
Ich stelle noch heute einen Beitrag 'Fouriertransformation DFT und FFT' in die Codelib. Dort findest Du den Quellcode zu zwei Implementierungen der FFT
|
Re: Problem bei FFT
Zitat:
Anscheinend hast du dich sehr intensiv mit mathematischen Algorithmen und deren Umsetzung in Delphi auseinandergesetzt. Dies zu veröffentlich ist ja super. Vielleicht kannst du alle deine Algorithmen in Komponenten fassen und à la SDL Suite zusammen als Open Source veröffentlichen. |
Re: Problem bei FFT
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo zusammen,
ich habe ebenfalls mal ne FFT implementiert. Anbei zwei Beispielprojekte (Die FFT ist in der Unit fftunit.pas). Mfg Markus |
Re: Problem bei FFT
FFT Schnelle Fourier-Transformation
Es gibt verschiedene Algorithmen. Die beste Übersicht wird unter obigen Titel von E. Oran Brigham gegeben. 5. verbesserte Auflage R.Oldenbourg Verlag München Wien 1992. Alle Algorithmen sind wahrscheinlich schon in Programme aller gängigen Programmiersprachen umgesetzt. dennoch bleibt ihre Implementation in Delphi eine anspruchsvolle Übung. Zu deinem Code: Trenn doch erst einmal die Behandlung von komplexen Zahlen von der FFT, in zwei Units. Dann sieht man besser, wie du die FFT implementierst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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