Реализация быстрого преобразования Фурье (БПФ) в C# [закрыт]
где я могу найти бесплатную, очень быструю и надежную реализацию БПФ в C#?
Что можно использовать в продукте? Или есть какие-то ограничения?
9 ответов:
AForge.net - это бесплатная (с открытым исходным кодом) библиотека с поддержкой быстрого преобразования Фурье. (См. Sources / Imaging/ComplexImage.cs для использования, источники / математика/FourierTransform.cs для реализации)
парень, который сделал AForge сделал довольно хорошую работу, но это не коммерческое качество. Это здорово учиться, но вы можете сказать, что он тоже учился, поэтому у него есть некоторые довольно серьезные ошибки, такие как предположение о размере изображения вместо использования правильных бит на пиксель.
Я не нокаутирую парня, я уважаю его за то, что он узнал все это и показал нам, как это сделать. Я думаю, что он теперь доктор философии или, по крайней мере, он собирается быть таким, что он действительно умный, это просто не коммерчески полезная библиотека.
Math.Net библиотека имеет свои странности при работе с преобразованиями Фурье и сложными изображениями / числами. Например, если я не ошибаюсь, он выводит преобразование Фурье в удобном для просмотра формате, который хорош для людей, если вы хотите посмотреть на изображение преобразования, но это не так хорошо, когда вы ожидаете, что данные будут в определенном формате (нормальный формат). Я мог ошибаться насчет этого, но я просто помню, что была какая-то странность, поэтому я действительно пошел исходный код, который они использовали для Фурье-материала, и он работал намного лучше. (ExocortexDSP v1. 2http://www.exocortex.org/dsp/)
Math.net также были некоторые другие фанки, которые мне не нравились при работе с данными из БПФ, я не могу вспомнить, что это было, я просто знаю, что было намного проще получить то, что я хотел из библиотеки ExoCortex DSP. Хотя я не математик и не инженер; для этих парней это может иметь смысл.
Так! Я использую код БПФ выдернули из Экзокортекса, который Math.Net основан на, без чего-либо еще, и он отлично работает.
и, наконец, я знаю, что это не C#, но я начал смотреть на использование FFTW (http://www.fftw.org/). и этот парень уже сделал обертку C#, поэтому я собирался проверить ее, но еще не использовал ее. (http://www.sdss.jhu.edu/~tamas/bytes/fftwcsharp.html)
о! Я не знаю, если вы делаете это для школы или работы, но в любом случае есть отличная серия бесплатных лекций, прочитанных профессором Стэнфордского университета в iTunes University.
http://deimos3.apple.com/WebObjects/Core.woa/Browse/itunes.stanford.edu.1617315771
Math.NET s библиотека иридия обеспечивает быстрый, регулярно обновляемый набор математических функций, в том числе БПФ. Он лицензирован под LGPL, поэтому вы можете использовать его в коммерческих продуктах.
Я вижу, что это старый поток, но для чего это стоит, у меня есть бесплатная (лицензия MIT) 1-D power-of-2-length-only реализация C# FFT здесь: http://gerrybeauregard.wordpress.com/2011/04/01/an-fft-in-c/
Я не сравнивал его производительность с другими реализациями C# FFT. Я написал его в основном для сравнения производительности Flash/ActionScript и Silverlight / C#. Последний гораздо быстрее, по крайней мере, для хруста числа.
http://www.exocortex.org/dsp/-это математическая библиотека C# с открытым исходным кодом и алгоритмами БПФ.
вот еще один; порт C# Ooura FFT. Это достаточно быстро. Пакет также включает в себя перекрытие / добавление свертки и некоторые другие материалы DSP под лицензией MIT.
http://github.com/hughpyle/inguz-DSPUtil/commits/master/Fourier.cs
веб-сайт числовых рецептов (http://www.nr.com/) имеет БПФ, если вы не против ввести его. Я работаю над проектом преобразования программы Labview в C# 2008, .NET 3.5 для получения данных, а затем посмотрите на частотный спектр. К сожалению, Math.Net использует последнюю платформу .NET framework, поэтому я не мог использовать этот БПФ. Я попробовал Exocortex one-он работал, но результаты соответствовали результатам Labview, и я не знаю достаточно теории БПФ, чтобы знать, что вызывает проблему. Поэтому я попробовал FFT на веб-сайте числовых рецептов, и это сработало! Я также смог запрограммировать окно Labview low sidelobe (и должен был ввести коэффициент масштабирования).
вы можете прочитать главу книги числовых рецептов в качестве гостя на своем сайте, но книга настолько полезна, что я настоятельно рекомендую ее приобрести. Даже если вы в конечном итоге используете Math.NET БПФ.
для многопоточной реализации, настроенной для процессоров Intel, я бы проверил библиотеку MKL Intel. Это не бесплатно, но это доступно (менее $100) и быстро горит - но вам нужно будет назвать это c dll через P/Invokes. Проект Exocortex прекратил разработку 6 лет назад, поэтому я был бы осторожен, используя его, если это важный проект.
старый вопрос, но он все еще отображается в результатах Google...
очень не ограничивающая MIT лицензионная библиотека C# / .NET можно найти по адресу,
https://www.codeproject.com/articles/1107480/dsplib-fft-dft-fourier-transform-library-for-net
эта библиотека быстра, поскольку она параллельна потокам на нескольких ядрах и очень полна и готова к использованию.