Question

Où puis-je trouver une implémentation gratuite, très rapide et fiable de FFT en C #?

Qui peut être utilisé dans un produit? Ou y a-t-il des restrictions?

Était-ce utile?

La solution

AForge.net est une bibliothèque gratuite (à code source ouvert) avec prise en charge de Fast Fourier Transform. . (Voir Sources / Imaging / ComplexImage.cs . pour utilisation, Sources / Math / FourierTransform.cs pour la mise en œuvre)

Autres conseils

Le gars qui a fait AForge a fait un assez bon travail mais ce n’est pas de qualité commerciale. Il est bon d’apprendre, mais vous pouvez constater qu’il apprenait également. Il commet donc des erreurs assez graves, telles que supposer la taille d’une image au lieu d’utiliser les bits par pixel appropriés.

Je ne frappe pas le gars, je le respecte énormément pour avoir appris tout cela et nous montre comment faire. Je pense qu'il est doctorant maintenant ou du moins qu'il est sur le point de l'être, donc il est vraiment intelligent, ce n'est tout simplement pas une bibliothèque utilisable commercialement.

La bibliothèque Math.Net a sa propre bizarrerie lorsque vous travaillez avec des transformations de Fourier et des images / nombres complexes. Par exemple, si je ne me trompe pas, il affiche la transformation de Fourier dans un format visualisable par l'homme, ce qui est agréable pour les humains si vous souhaitez regarder une image de la transformation, mais ce n'est pas si bon lorsque vous vous attendez à ce que les données soient dans une certaine format (le format normal). Je peux me tromper à ce sujet mais je viens de me rappeler qu’il y avait une certaine bizarrerie, c’est pourquoi j’ai utilisé le code original qu’ils utilisaient pour le logiciel Fourier et cela fonctionnait beaucoup mieux. (ExocortexDSP v1.2 http://www.exocortex.org/dsp/ )

Math.net a également eu une certaine funkyness que je n’aimais pas avec les données de la FFT, je ne me souviens plus de ce que c’était, je savais simplement que c’était beaucoup plus facile d’obtenir ce que je voulais du DSP ExoCortex bibliothèque. Je ne suis cependant ni mathématicien ni ingénieur; pour ces gars-là, cela pourrait avoir un sens parfait.

Alors! J'utilise le code FFT extrait d'ExoCortex, sur lequel Math.Net est basé, sans rien d'autre et cela fonctionne très bien.

Et enfin, je sais que ce n’est pas du c #, mais j’ai commencé à envisager d’utiliser FFTW ( http: // www .fftw.org / ). Et ce gars a déjà créé un wrapper en C #, donc j'allais le vérifier mais je ne l'ai pas encore utilisé. ( http://www.sdss.jhu.edu/~tamas/bytes /fftwcsharp.html )

OH! Je ne sais pas si vous faites cela à l'école ou au travail, mais dans tous les cas, une excellente série de conférences gratuites est donnée par un professeur de Stanford sur iTunes University.

https://podcasts.apple .com / fr / podcast / the-fourier-transforms-and-its-applications / id384232849

La

bibliothèque Iridium de Math.NET fournit une collection rapide et régulièrement mise à jour de fonctions liées aux mathématiques, y compris la FFT. . Il est sous licence LGPL, vous êtes donc libre de l'utiliser dans des produits commerciaux.

Je vois qu’il s’agit d’un vieux fil de discussion, mais pour ce que cela vaut, j’ai ici une implémentation gratuite de C # FFT F-power 1 sur 1 longueur (licence MIT):    http://gerrybeauregard.wordpress.com/2011/04/ 01 / an-fft-in-c /

Je n’ai pas comparé ses performances à celles d’autres implémentations C # FFT. Je l'ai écrit principalement pour comparer les performances de Flash / ActionScript et de Silverlight / C #. Ce dernier est beaucoup plus rapide, du moins pour le traitement des chiffres.

http://www.exocortex.org/dsp/ est une application mathématique C # à code source ouvert bibliothèque avec algorithmes FFT.

En voici un autre; un port C # de la FFT d’Ooura. C'est assez rapide. Le paquet inclut également le chevauchement / l'ajout de convolution et d'autres éléments DSP, sous licence MIT.

https://github.com/hughpyle/inguz-DSPUtil /blob/master/Fourier.cs

Le site Web Numerical Recipes (http://www.nr.com/) contient une FFT si vous n’avez pas peur de la saisir. Je travaille sur un projet de conversion d’un programme Labview en C # 2008, .NET 3.5 en acquérir des données et ensuite regarder le spectre de fréquence. Malheureusement, Math.Net utilise le dernier framework .NET, je ne pouvais donc pas utiliser cette FFT. J'ai essayé l'exocortex - cela a fonctionné, mais les résultats correspondent à ceux de Labview et je ne connais pas suffisamment la théorie FFT pour savoir ce qui cause le problème. J'ai donc essayé la FFT sur le site Web des recettes numériques et cela a fonctionné! Je pouvais aussi programmer la fenêtre de lobes latéraux de Labview bas (et devais introduire un facteur de mise à l'échelle).

Vous pouvez lire le chapitre du livre de recettes numériques en tant qu'invité sur leur site, mais le livre est tellement utile que je recommande vivement de l'acheter. Même si vous finissez par utiliser la FFT Math.NET.

Une question ancienne mais qui apparaît toujours dans les résultats Google ...

Vous pouvez trouver une bibliothèque C # / .NET sous licence MIT très peu restrictive à l'adresse

.

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

Cette bibliothèque est rapide car elle met en parallèle des threads sur plusieurs cœurs et est très complète et prête à être utilisée.

Pour une implémentation multithread optimisée pour les processeurs Intel, je voudrais vérifier la bibliothèque MKL d’Intel. Ce n'est pas gratuit, mais c'est afforable (moins de 100 $) et rapide, mais vous devez appeler ses dll C via P / Invokes. Le projet Exocortex a cessé de se développer il y a 6 ans, je ferais donc attention de ne pas l'utiliser s'il s'agit d'un projet important.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top