Алгоритм известный, есть в книжках по ЦОС и около этого


[an error occurred while processing this directive]
     Отправлено Alexandr 27 мая 2000 г. 22:33:48
     В ответ на: А что это за алгоритм и где его взять? отправлено Сергей 25 мая 2000 г. 15:49:35
Достаточно подробное описание я нашел в книге:
Нуссбаумер Г. Быстрое преобразование Фурье и алгоритмы вычисления сверток: пер. с англ. - М.: Радио и связь, 1985.- 248 с., ил.

Там же есть и алгоритмы Рейдера для матоточечных БПФ. В том числе и с их помощью удается ускорить вычисление.

Насчет примера, если очень нужен, могу прислать мой вариант на C++(он без комментариев) для 20 и 40-точечных БПФ, если запросишь по e-mail Sasha@geo.ufanet.ru

Но самому помучиться будет много полезнее!!!
Да и реализовывать потом на ассме будет много проще и сделать это сможешь эффективнее.

Мои варианты на асме для 20 точечного БПФ работают за 1124 такта с выполнением всех необходимых вычислений блоковых экспонент(что быстрее, чем fft16 из библиотеки от Analog Devices - 1251 такт)
А мой вариант для 40 точек выполняется за 2478 тактов, что сравнимо с fft32 из тойже библиотеки -2436 тактов.

Так что ускорение явно есть, тем более что этот алгоритм взаимно простых относительно множителей легко реализовывать для разнообразных N=N1*N2, где НОД(N1,N2)=1, что позволяет выполнять БПФ только над нужным числом точек.

Только на перестановку входных данных и выходных данных уходит приличное количество тактов, а именно 8*N.

Составить ответ ||| Конференция «Цифровые сигнальные процессоры (DSP) и их применение»

Ответы


Отправка ответа

Имя:(обязательно)
E-Mail:

Тема:(обязательно)

Сообщение:(обязательно)

Ссылка на URL:
Имя ссылки:
URL изображения:


Перейти к списку ответов ||| Конференция «Цифровые сигнальные процессоры (DSP) и их применение»