Domanda

Dove posso trovare un'implementazione gratuita, molto rapida e affidabile di FFT in C #?

Che può essere utilizzato in un prodotto? O ci sono delle restrizioni?

È stato utile?

Soluzione

AForge.net è una libreria gratuita (open-source) con supporto Fast Fourier Transform . (Vedi Fonti / Imaging / ComplexImage.cs per l'utilizzo, Sources / Math / FourierTransform.cs per l'implementazione)

Altri suggerimenti

Il ragazzo che ha fatto AForge ha fatto un buon lavoro ma non è di qualità commerciale. È bello imparare da ma puoi dire che anche lui stava imparando, quindi ha alcuni errori piuttosto seri come assumere la dimensione di un'immagine invece di usare i bit corretti per pixel.

Non sto bussando al ragazzo, lo rispetto da lui per aver imparato tutto questo e ci mostra come farlo. Penso che sia un dottorato ora o almeno lo sarà, quindi è davvero intelligente, non è solo una libreria utilizzabile commercialmente.

La libreria Math.Net ha la sua stranezza quando si lavora con trasformazioni di Fourier e immagini / numeri complessi. Ad esempio, se non sbaglio, produce la trasformata di Fourier in un formato visualizzabile dall'uomo che è bello per gli umani se vuoi guardare un'immagine della trasformazione ma non è così buona quando ti aspetti che i dati siano in un certo formato (il formato normale). Potrei sbagliarmi, ma ricordo solo che c'era qualche stranezza, quindi in realtà sono andato al codice originale che hanno usato per le cose di Fourier e ha funzionato molto meglio. (ExocortexDSP v1.2 http://www.exocortex.org/dsp/ )

Math.net ha anche avuto qualche altra curiosità che non mi è piaciuta quando ho avuto a che fare con i dati della FFT, non ricordo cosa fosse, so solo che era molto più facile ottenere ciò che volevo dal DSP ExoCortex biblioteca. Non sono un matematico o un ingegnere però; per quei ragazzi potrebbe avere perfettamente senso.

! Uso il codice FFT estratto da ExoCortex, su cui si basa Math.Net, senza nient'altro e funziona alla grande.

E infine, so che non è C #, ma ho iniziato a esaminare FFTW ( http: // www .fftw.org / ). E questo ragazzo ha già creato un wrapper C # quindi stavo per provarlo ma non l'ho ancora usato. ( http://www.sdss.jhu.edu/~tamas/bytes /fftwcsharp.html )

OH! Non so se lo stai facendo a scuola o al lavoro, ma in entrambi i casi c'è una GRANDE serie di conferenze gratuite tenute da un professore di Stanford presso la iTunes University.

https://podcasts.apple .com / us / Podcast / the-Fourier trasforma-and-sue-applicazioni / id384232849

La libreria Iridium di Math.NET fornisce una raccolta veloce e regolarmente aggiornata di funzioni matematiche, inclusa la FFT . È concesso in licenza ai sensi della LGPL, pertanto sei libero di utilizzarlo in prodotti commerciali.

Vedo che questo è un vecchio thread, ma per quello che vale, ho un'implementazione FFT C-1-power-of-2-long-only 1-D gratuita (qui):    http://gerrybeauregard.wordpress.com/2011/04/ 01 / un-FFT-in-c /

Non ho confrontato le sue prestazioni con altre implementazioni FFT di C #. L'ho scritto principalmente per confrontare le prestazioni di Flash / ActionScript e Silverlight / C #. Quest'ultimo è molto più veloce, almeno per lo scricchiolio dei numeri.

http://www.exocortex.org/dsp/ è una matematica C # open source libreria con algoritmi FFT.

Eccone un altro; una porta C # di Ooura FFT. È ragionevolmente veloce. Il pacchetto include anche sovrapposizione / aggiunta di convoluzione e altri elementi DSP, sotto la licenza MIT.

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

Il sito Web di Ricette numeriche (http://www.nr.com/) ha una FFT se non ti dispiace digitarla. Sto lavorando a un progetto che converte un programma Labview in C # 2008, .NET 3.5 in acquisire dati e quindi guardare lo spettro delle frequenze. Sfortunatamente Math.Net utilizza l'ultimo framework .NET, quindi non ho potuto usare quella FFT. Ho provato quello di Exocortex: ha funzionato ma i risultati corrispondono ai risultati di Labview e non conosco abbastanza teoria FFT per sapere cosa sta causando il problema. Così ho provato la FFT sul sito web delle ricette numeriche e ha funzionato! Sono stato anche in grado di programmare la finestra bassa vista laterale Labview (e ho dovuto introdurre un fattore di ridimensionamento).

Puoi leggere il capitolo del libro Ricette numeriche come ospite sul loro sito, ma il libro è così utile che consiglio vivamente di acquistarlo. Anche se finisci per usare Math.NET FFT.

Una vecchia domanda, ma appare ancora nei risultati di Google ...

Una libreria C # / .NET con licenza MIT molto non restrittiva è disponibile all'indirizzo,

https: // www .codeproject.com / articoli / 1107480 / DSPLIB-FFT-DFT-trasformata di Fourier-biblioteca-per-net

Questa libreria è veloce in quanto thread paralleli su più core ed è molto completa e pronta per l'uso.

Per un'implementazione multi-thread ottimizzata per i processori Intel, darei un'occhiata alla libreria MKL di Intel. Non è gratuito, ma è conveniente (meno di $ 100) e velocissimo - ma dovresti chiamare Cll tramite P / Invokes. Il progetto Exocortex ha interrotto lo sviluppo 6 anni fa, quindi starei attento a usarlo se si tratta di un progetto importante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top