Une implémentation de la Transformée de Fourier rapide (FFT) en C# [fermé]

Où puis-je trouver une mise en œuvre gratuite, très rapide et fiable de FFT en C#?

Qui peut être utilisé dans un produit? Ou sont les limites?

68
demandé sur Peter Mortensen 2008-10-04 18:12:19

9 réponses

AForge.net est une bibliothèque libre (open-source) avec un support rapide de la Transformée de Fourier. (Voir Sources / Imaging/ Complex.cs pour l'utilisation de Sources/Math/ FourierTransform.cs for implementation)

31
répondu torial 2017-03-19 15:07:10

le gars qui a fait AForge a fait un assez bon travail, mais ce n'est pas de la qualité commerciale. C'est génial d'apprendre de mais vous pouvez dire qu'il apprenait trop donc il a quelques erreurs assez graves comme assumer la taille d'une image au lieu d'utiliser les bons bits par pixel.

Je ne vais pas frapper le gars, je respecte le diable hors de lui pour apprendre tout cela et nous montrer comment le faire. Je pense qu'il est docteur maintenant ou au moins il est sur le point de l'être donc il est vraiment intelligent ce n'est pas un bibliothèque utilisable commercialement.

le Math.Net la bibliothèque a sa propre bizarrerie quand on travaille avec des transformées de Fourier et des images/nombres complexes. Comme, si Je ne me trompe pas, il sort la Transformée de Fourier dans le format visualisable humain qui est agréable pour les humains si vous voulez regarder une image de la transformation mais ce n'est pas si bon quand vous vous attendez à ce que les données soient dans un certain format (le format normal). Je pourrais me tromper, mais je me souviens juste il y a quelques je suis donc allé au code original qu'ils ont utilisé pour les trucs de Fourier et ça a fonctionné beaucoup mieux. (Exocortex DSP v1.2 http://www.exocortex.org/dsp / )

Math.net j'ai aussi eu un autre côté bizarre que je n'ai pas aimé en traitant les données de la FFT, Je ne me souviens pas de ce que c'était je sais juste que c'était beaucoup plus facile d'obtenir ce que je voulais de la bibliothèque DSP D'ExoCortex. Je ne suis pas un mathématicien ou d'un ingénieur; pour ces gars-là, il pourrait faire sens parfait.

So! J'utilise le code FFT tiré D'ExoCortex, qui Math.Net est basé sur, sans rien d'autre et cela fonctionne très bien.

et enfin, je sais que ce n'est pas C#, mais j'ai commencé à chercher à utiliser FFTW ( http://www.fftw.org / ). Et ce gars a déjà fait un papier D'emballage C# donc j'allais 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 pour l'école ou le travail, mais de toute façon, il y a une grande série de conférences gratuites données par un professeur de Stanford à l'université iTunes.

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

48
répondu Ian Griffiths 2011-03-24 18:55:31

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

12
répondu Jacob 2013-06-24 14:11:26

je vois que c'est un vieux fil, mais pour ce que ça vaut, j'ai une licence libre (MIT License) 1-D power-of-2-length-only c# FFT implementation ici: http://gerrybeauregard.wordpress.com/2011/04/01/an-fft-in-c/

Je n'ai pas comparé sa performance à d'autres implémentations C# FFT. Je l'ai écrit principalement pour comparer les performances de Flash / ActionScript et Silverlight/c#. Ce dernier est beaucoup plus rapide, au moins pour les calculs.

7
répondu Gerry Beauregard 2011-10-19 07:04:51

http://www.exocortex.org/dsp / est une bibliothèque de mathématiques open-source C# avec des algorithmes FFT.

5
répondu pookleblinky 2008-10-04 14:23:38

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

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

4
répondu Hugh 2009-11-12 16:51:14

le site des recettes numériques (http://www.nr.com/) a un TNI si vous ne vous gênez pas de le taper. Je travaille sur un projet de conversion D'un programme Labview en C # 2008, .NET 3.5 pour acquérir des données et ensuite regarder le spectre de fréquences. Malheureusement, Math.Net utilise le dernier. NET framework, donc je ne pouvais pas utiliser ce FFT. J'ai essayé le modèle Exocortex - il a fonctionné, mais les résultats pour correspondre aux résultats de Labview et je ne sais pas assez de théorie FFT pour savoir ce qui est à l'origine du problème. J'ai donc essayé le FFT sur le site des recettes numériques et ça a marché! J'ai également pu programmer la fenêtre Labview low sidelobe (et j'ai dû introduire un facteur d'échelle).

vous pouvez lire le chapitre du Livre de recettes numériques comme un invité sur leur site, mais le livre est si utile que je recommande fortement l'achat. Même si vous finissez par utiliser le Math.NET FFT.

2
répondu Curt 2012-01-31 18:10:47

pour une implémentation multi-threadée pour les processeurs Intel, je consulterais la bibliothèque MKL D'Intel. Il n'est pas gratuit, mais il est abordable (moins de 100$) et flambant rapide - mais vous auriez besoin d'appeler son c dll via P/invoque. Le projet Exocortex a arrêté son développement il y a 6 ans, donc je serais prudent de l'utiliser si c'est un projet important.

1
répondu Paul 2011-04-22 22:58:16

Une vieille question, mais il apparaît toujours dans les résultats de Google...

Un très restrictives, sous Licence MIT, C# / .NET de la bibliothèque peut être trouvé à la,

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

cette bibliothèque est rapide car il parallel threads sur plusieurs noyaux et est très complet et prêt à l'emploi.

1
répondu Steve Hageman 2017-01-29 16:37:46