Eine Implementierung der schnellen Fourier-Transformation (FFT) in C #

Wo finde ich eine kostenlose, sehr schnelle und zuverlässige Implementierung von FFT in C #?

Das kann in einem Produkt verwendet werden? Oder gibt es irgendwelche Einschränkungen?

   

    AForge.net ist eine freie (Open-Source) Bibliothek mit Fast Fourier Transform Unterstützung. (Siehe Sources / Imaging / ComplexImage.cs für die Verwendung, Sources / Math / FourierTransform.cs für die Implementierung)

    Der Typ, der AForge tat, hat einen ziemlich guten Job gemacht, aber es ist keine kommerzielle Qualität. Es ist großartig, von ihm zu lernen, aber man merkt, dass er auch gelernt hat, also hat er einige ziemlich ernste Fehler, wie die Annahme der Größe eines Bildes statt der korrekten Bits pro Pixel.

    Ich klopfe den Typen nicht an, ich respektiere ihn, weil er das alles gelernt hat und zeigt uns, wie es geht. Ich denke, er ist jetzt promoviert oder zumindest wird er es bald sein, also ist er wirklich schlau, es ist einfach keine kommerziell nutzbare Bibliothek.

    Die Math.Net-Bibliothek hat ihre eigene Verrücktheit, wenn sie mit Fourier-Transformationen und komplexen Bildern / Zahlen arbeitet. Wenn ich mich nicht irre, gibt es die Fourier-Transformation in einem für Menschen sichtbaren Format aus, das für Menschen gut ist, wenn man sich ein Bild von der Transformation ansehen möchte, aber es ist nicht so gut, wenn man erwartet, dass die Daten in einem bestimmten sind Format (das normale Format). Ich könnte mich irren, aber ich erinnere mich nur daran, dass da etwas Seltsames war, also ging ich zu dem Original-Code, den sie für das Fourier-Zeug benutzt hatten und es funktionierte viel besser. (ExocortexDSP v1.2 http://www.exocortex.org/dsp/ )

    Math.net hatte auch eine andere Funky, die ich nicht mochte, wenn ich mich mit den Daten der FFT beschäftigte. Ich kann mich nicht erinnern, was es war. Ich weiß einfach, dass es viel einfacher war, das, was ich wollte, aus der ExoCortex DSP-Bibliothek zu bekommen. Ich bin kein Mathematiker oder Ingenieur. Für diese Leute könnte das durchaus Sinn machen.

    Damit! Ich benutze den FFT-Code, der von ExoCortex, auf dem Math.Net basiert, ohne irgendetwas anderes entfernt wurde, und es funktioniert großartig.

    Und schließlich weiß ich, dass es nicht C # ist, aber ich habe angefangen, FFTW ( http://www.fftw.org/ ) zu verwenden. Und dieser Typ hat bereits einen C # -Wrapper erstellt, also wollte ich es überprüfen, habe ihn aber noch nicht benutzt. ( http://www.sdss.jhu.edu/~tamas/bytes/fftwcsharp.html )

    OH! Ich weiß nicht, ob Sie das für die Schule oder die Arbeit tun, aber so oder so gibt es eine GROSSE kostenlose Vortragsreihe, die von einem Stanford-Professor an der iTunes University gehalten wird.

    http://deimos3.apple.com/WebObjects/Core.woa/Browse/itunes.stanford.edu.1617315771

    Die Iridium-Bibliothek von Math.NET bietet eine schnelle, regelmäßig aktualisierte Sammlung mathematischer functionen, einschließlich der FFT. Es ist unter der LGPL lizenziert, so dass Sie es in kommerziellen Produkten verwenden können.

    Ich sehe, das ist ein alter Thread, aber für was es wert ist, habe ich eine kostenlose (MIT Lizenz) 1-D Power-of-2-Länge nur C # FFT-Implementierung hier: http://gerrybeauregard.wordpress.com/2011 / 04/01 / an-fft-in-c /

    Ich habe seine performance nicht mit anderen C # -FFT-Implementierungen verglichen. Ich habe es hauptsächlich geschrieben, um die performance von Flash / ActionScript und Silverlight / C # zu vergleichen. Letzteres ist viel schneller, zumindest für das Zahlenknacken.

    http://www.exocortex.org/dsp/ ist eine Open-Source-C # -Mathematikbibliothek mit FFT-Algorithmen.

    Hier ist ein anderes; ein C # -Port der Ooura FFT. Es ist ziemlich schnell. Das Paket enthält auch Overlap / Add-Faltung und einige andere DSP-Sachen unter der MIT-Lizenz.

    http://github.com/hughpyle/inguz-DSPUtil/commits/master/Fourier.cs

    Die Numerical Recipes-Website (http://www.nr.com/) hat eine FFT, wenn Sie nichts dagegen haben, sie einzugeben. Ich arbeite an einem Projekt, das ein Labview-Programm in C # 2008, .NET 3.5 konvertiert, um Daten zu erfassen und dann schau dir das Frequenzspektrum an. Leider verwendet Math.Net das neueste .NET-Framework, daher konnte ich diese FFT nicht verwenden. Ich habe den Exocortex One ausprobiert – es hat funktioniert, aber die Ergebnisse stimmen mit den Ergebnissen von Labview überein und ich kenne nicht genug FFT-Theorie, um zu wissen, was das Problem verursacht. Also habe ich die FFT auf der numerischen Rezepte-Website ausprobiert und es hat funktioniert! Ich war auch in der Lage, das Labview Low Side Lobe-Fenster zu programmieren (und musste einen Skalierungsfaktor einführen).

    Sie können das Kapitel des Buches Numerical Recipes als Gast auf seiner Website lesen, aber das Buch ist so nützlich, dass ich es sehr empfehlen kann, es zu kaufen. Selbst wenn Sie die Math.NET FFT verwenden.

    Für eine Multi-Threaded-Implementierung, die auf Intel-processoren abgestimmt ist, würde ich die MKL-Bibliothek von Intel ausprobieren. Es ist nicht kostenlos, aber es ist erschwinglich (weniger als 100 Dollar) und blitzschnell – aber Sie müssten es C-DLLs über P / Invokes aufrufen. Das Exocortex-Projekt hat die Entwicklung vor 6 Jahren gestoppt, also würde ich vorsichtig sein, wenn es ein wichtiges Projekt ist.

    Eine alte Frage, aber es zeigt sich immer noch in Google-Ergebnissen …

    Eine sehr restriktive MIT Lizensierte C # / .NET Bibliothek kann gefunden werden unter,

    https://www.codeproject.com/articles/1107480/dsplib-fft-dft-fourier-transform-library-for-net

    Diese Bibliothek ist schnell wie parallele Threads auf mehreren coreen und ist sehr vollständig und einsatzbereit.