Цитата(thermit @ Apr 19 2012, 15:48)

Дык, в чем проблема-то? Делаем бпф над буфером как есть и умножаем результат на комплексную экспоненту.
В вашем случае exp(j*2*pi*3*(0:7)/8). Иначе - надо изобретать собственное бпф под ваш порядок входных данных.
ps
Если интересует только модуль дпф - умножать ничего не надо.
К сожалению, интересует не только модуль.
Умножать весь массив на фазосдвигающие коэффициенты займёт практически столько же времени (если не больше) сколько и сдвигание массива перед тем, как делать БПФ.
Я думал, может трюк есть, вот и спросил... сейчас понял, что трюка нет

Цитата(mihalevski @ Apr 20 2012, 09:21)

Как я понял вы делаете скачущее преобразование Фурье. Сделайте два условно независимых параллельно протекающих процесса. Первый процесс заполнение буфера входными данными с закругляемыми порядковыми номерами по размеру выделенного буфера. Размер этого буфера должен быть больше размеров FFT. Второй процесс вычисление номеров элементов буфера в качестве входных отсчетов FFT с учетом их цикличности.
Ничего не понял. То, что я делаю, у нас называют БПФ с перекрытием (можно сказать, наверно, что оно и есть скачущее).
Если даже циклический буфер больше по размерам, чем разрядность БПФ, всё равно рано или поздно в этом циклическом буфере данные завернут через край:
6 7 8 _ _ _ _ _ _ _ _ 1 2 3 4 5
И тогда никак...
Можно сделать вот так вот (циклический буфер остаётся, но к нему добавляются уши слева и справа):
_ _ _ _ 6 7 8 1 2 3 4 5 _ _ _ _
и можно тогда так сделать:
_ _ _ _ 6 7 8 1 2 3 4 5 6 7 8 _
(чтоб получить непрерывную последовательность), но для этого надо слева и справа от буфера хранить "уши" суммарного размера равного размеру буфера - что для меня неприемлемо.
Сообщение отредактировал Daddy Torque - Apr 20 2012, 11:19