LINUX.ORG.RU

Вычисление FFT на GPU


0

0
Нужно очень быстро считать БПФ. Исходно массив - набор комплексных чисел, где каждая из составляющих это 16 битное целое знаковое число.

Подскажите что можно полезного почитать по теме?.. поиском находятся противоположенные мнения.

★★★★
Ну и не только к FFT - хотелось-бы простенький пример, так сказать Getting Started.

Подразумевается NVidia, если это важно.

alexru ★★★★
() автор топика
Ответ на: комментарий от anonymous
Да нет, считать нужно еще быстрее. Более того считать нужно ПФ от непрерывно поступающих данных с окном постоянной длинны. Причем желательно чтобы окно каждый раз смещалось только на 1. Реальное смещение будет зависеть от производительности того что получится.
alexru ★★★★
() автор топика
Ответ на: комментарий от alexru
Если смещение на 1 сэмпл, это означает, что из предыдущего спектра надо выкинуть линию, которая ушла из-за смещения, и прибавить новую?
anonymous
()
Ответ на: комментарий от anonymous
Хотя... не совсем погнал. Если смещение будет каждый раз одинаковым, то каждый раз надо будет отнять одну частоту, добавить новую и умножить на постоянную, которая зависит от смещения. А преобразование для каждого окна делать не придётся.
anonymous
()
Ответ на: комментарий от anonymous
Ну а теперь алгоритмик в двух словах как это сделать не пересчитывая все?

А для проверки можно например подать сначала много нулей, а потом много нулей-1 и единичку и посмотерть, что изменилась далеко не одна частота.

alexru ★★★★
() автор топика
Ответ на: комментарий от alexru
По-моему, основной недостаток преобразования Фурье заключается в том, что он позволяет локализовать частотную составляющую сигнала с абсолютной точностью, а временную --- не локализует вообще. Присмотрись к вейвлетам, возможно они сильно облегчат твою жизнь.
ugoday ★★★★★
()
Ответ на: комментарий от alexru
Пусть есть две последовательности чисел {a0, a1, ..., aN} i {a1, a2, ..., aN+1}, которые отличаются только первым и последним элементами. если FT1={b0, ..., bN} - преобразование первой последовательности, то для второй будет: bk = FT1*eхp(-ik/(N+1)) - sum(a0*eхp(i(k-1)n/(N+1)) + sum(a(N+1)*eхp(ikn/(N+1))
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.