Реализация быстрого преобразования Фурье (БПФ) на C# [закрыто]

StackOverflow https://stackoverflow.com/questions/170394

  •  05-07-2019
  •  | 
  •  

Вопрос

Где я могу найти бесплатную, очень быструю и надежную реализацию БПФ на C#?

Что можно использовать в продукте?Или есть какие-то ограничения?

Это было полезно?

Решение

AForge.net - бесплатная (с открытым исходным кодом) библиотека с поддержкой быстрого преобразования Фурье , (См. Источники / изображения / ComplexImage.cs для использования: источники / математика / FourierTransform.cs для реализации)

Другие советы

Парень, который сделал AForge, проделал довольно хорошую работу, но это не коммерческое качество.Это здорово учиться, но можно сказать, что он тоже учился, поэтому у него есть довольно серьезные ошибки, например, предположение о размере изображения вместо использования правильных битов на пиксель.

Я не ругаю этого парня, я чертовски уважаю его за то, что он всему этому научился и показал нам, как это делать.Я думаю, что он сейчас доктор философии или, по крайней мере, собирается им стать, так что он действительно умен, это просто не коммерчески используемая библиотека.

Библиотека Math.Net имеет свои странности при работе с преобразованиями Фурье и сложными изображениями/числами.Например, если я не ошибаюсь, он выводит преобразование Фурье в формате, удобном для просмотра человеком, что удобно для людей, если вы хотите посмотреть на изображение преобразования, но это не так хорошо, когда вы ожидаете, что данные будут в определенном формате. формат (обычный формат).Я мог ошибаться на этот счет, но я просто помню, что была какая-то странность, поэтому я действительно обратился к исходному коду, который они использовали для вычислений Фурье, и он работал намного лучше.(ExocortexDSP v1.2 http://www.exocortex.org/dsp/)

В Math.net также были некоторые другие странности, которые мне не нравились при работе с данными БПФ. Я не могу вспомнить, что это было, я просто знаю, что было гораздо проще получить то, что я хотел, из библиотеки ExoCortex DSP.Однако я не математик и не инженер;для этих парней это может иметь смысл.

Так!Я использую код БПФ, взятый из ExoCortex, на котором основан Math.Net, без чего-либо еще, и он отлично работает.

И, наконец, я знаю, что это не C#, но я начал присматриваться к использованию FFTW (http://www.fftw.org/).И этот парень уже сделал обертку для C#, так что я собирался проверить ее, но еще не использовал ее.(http://www.sdss.jhu.edu/~tamas/bytes/fftwcsharp.html)

ОЙ!Я не знаю, делаете ли вы это для учебы или работы, но в любом случае есть ОТЛИЧНАЯ серия бесплатных лекций, которую читает профессор Стэнфорда в Университете iTunes.

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

библиотека Iridium в Math.NET предоставляет быстрый, регулярно обновляемый набор математических функций, включая БПФ , Он лицензирован по лицензии LGPL, поэтому вы можете свободно использовать его в коммерческих продуктах.

Я вижу, что это старый поток, но для этого у меня есть бесплатная (MIT License) 1-D реализация C # FFT только для двух длин:    http://gerrybeauregard.wordpress.com/2011/04/ 01 / ан-FFT-в-с /

Я не сравнивал его производительность с другими реализациями C # FFT. Я написал это в основном для сравнения производительности Flash / ActionScript и Silverlight / C #. Последнее намного быстрее, по крайней мере, для сокращения чисел.

http://www.exocortex.org/dsp/ - математика C # с открытым исходным кодом. библиотека с алгоритмами FFT.

Вот еще один; порт C # Ooura FFT. Это достаточно быстро. В пакет также входит свертка с перекрытием / добавлением и некоторые другие DSP-компоненты под лицензией MIT.

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

На сайте Numeric Recipes (http://www.nr.com/) есть БПФ, если вы не против набрать его. Я работаю над проектом по преобразованию программы Labview в C # 2008, из .NET 3.5 в получить данные, а затем посмотреть на частотный спектр. К сожалению, Math.Net использует новейшую платформу .NET, поэтому я не смог использовать этот FFT. Я попробовал Exocortex один - он работал, но результаты совпадали с результатами Labview, и я не знаю достаточно теории FFT, чтобы понять, что является причиной проблемы. Так что я попробовал БПФ на сайте числовых рецептов, и это сработало! Я также смог запрограммировать окно нижней боковой доли Labview (и мне пришлось ввести коэффициент масштабирования).

Вы можете прочитать главу книги «Численные рецепты» в качестве гостя на своем сайте, но книга настолько полезна, что я настоятельно рекомендую ее приобрести. Даже если вы в конечном итоге используете Math.NET FFT.

Старый вопрос, но он все еще отображается в результатах Google ...

Очень неограниченную библиотеку MIT Licensed C # / .NET можно найти по адресу,

https: // www .codeproject.com / статьи / 1107480 / DSPLIB-FFT-ТСП-Фурье-преобразование-библиотека-для-сети

Эта библиотека является быстрой, поскольку она параллельна потокам на нескольких ядрах, и она очень полная и готова к использованию.

Для многопоточной реализации, настроенной для процессоров Intel, я бы заглянул в библиотеку Intel MKL. Это не бесплатно, но это неплохо (менее 100 долларов) и очень быстро - но вам нужно будет называть его C dll через P / Invokes. Проект Exocortex прекратил разработку 6 лет назад, поэтому я буду осторожен с его использованием, если это важный проект.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top