#c #winapi #fft
#c #winapi #БПФ
Вопрос:
Я пишу приложение Win32, используя только вызовы C и WinAPI. Мне нужно запустить БПФ с 8192 точками в течение 20 мс данных WAVEFORMATEX. Какой был бы наиболее эффективным методом достижения этой цели?
Комментарии:
1. Я думаю, вы имели в виду 8192-точечный БПФ.
2. Вы правы, отредактированы.
3. msdn.microsoft.com/en-us/library/ee415925 (v= против 85).aspx
4. тодда прав. Интересно, что эта страница некоторое время не отображается, когда вы гуглите «msdn fft». Появляется только FFPolar. Прошу прощения, но, похоже, я должен был легко найти это с помощью Google.
5. Он появляется , когда вы ищете
msdn fourier transform
.
Ответ №1:
Прошло много времени, но я помню эту библиотеку кода как очень быструю и простую в компиляции:
Комментарии:
1. Однако лицензирование может быть проблемой
2. Угу… Я пропустил штамп GNU. Похоже, они действительно предлагают платную лицензию, но я предполагаю, что это будет и рука, и нога. Не помешает позвонить им и спросить. fftw.org/faq/section1.html#nonfree
3. В прошлый раз, когда я проверял, это было 5000 долларов за коммерческую лицензию.
Ответ №2:
Как мы уточнили в комментариях, документация MSDN для функций XDSP может иметь для вас значение.
Функции, похоже, не выполняются WAVEFORMATEX
напрямую, но если вы можете преобразовать их в соответствующий формат, который вы можете использовать FFT
, чтобы делать то, что хотите.
Обратите внимание, что это часть DirectX SDK, поэтому вы вводите новую зависимость.
Ответ №3:
KISSFFT сам по себе не является Windows api. Однако он достаточно мал, чтобы его можно было легко встроить в любой проект — около 30 КБ исходного кода ANSI C для базового преобразования от комплекса к комплексу. В отличие от других сверхмалых библиотек БПФ, он быстр, функциональен, точен и может использоваться в многопоточной программе.
Одной из ключевых особенностей является то, что KISSFFT может выполнять смешанный радиус (кратные 2,3,5 являются самыми быстрыми). Другие «встроенные» функции доступны в каталоге tools . Используйте только те части, которые вам нужны: многомерные преобразования, преобразования, оптимизированные для реального времени (т. Е. Половина спектра), Быстрая свертка и т. Д
Скорость, как правило, достаточно высока для большинства приложений — не так быстро, как fftw или библиотеки поставщиков, но быстрее, чем у остальных.
Точность KISSFFT так же хороша, как и у любой библиотеки БПФ.
Лицензия представляет собой BSD с 3 пунктами, которые могут легально использоваться внутри коммерческого приложения на одном конце спектра или приложения GPL на другом конце. Для этого просто требуется простая атрибуция в документах.