Что такое функции БПФ Window?

#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:

Прошло много времени, но я помню эту библиотеку кода как очень быструю и простую в компиляции:

http://fftw.org/

Комментарии:

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 на другом конце. Для этого просто требуется простая атрибуция в документах.