[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено -=ВН=- 09 февраля 2005 г. 15:57
В ответ на: оптимизация FFT для работы с входными real ? отправлено ruslan 09 февраля 2005 г. 13:53

Вообще, судя по Вашим сообщениям, функция fft1024 имеет слишком большое время выполнения. Больше 100000 циклов - не в дугу и не в тую.
Даже не знаю за счет чего. Или прерывания (или IDMA) какие-нибудь молотят, или, если на C написано - C такой.
Когда работал с 218x у меня получалось тысяч около 40 циклов. Самопального fft. AD в своих апплик. вроде что-то сходное приводил.
Но это же около 4 лет назад я с ними последний раз общался, с процессорами. Неужто наука так сильно за 4 года вперед шагнула, что теперь и 100000 циклов мало?
Теперь по вопросу.


Сами ф-ии fftN предназначены для работы с комплексными вх. данными?
Если да, то для действительных вх. данных время расчета спектра можно существенно уменьшить. Почти в 2 раза.
Рассматривая входной действит. массив длины N как комплексный, длины N/2. Соответственно fft длины N/2.
Исходный действительный массив, x(n), длины N. n от 0 до N-1.
Образуете из него компл. массив, y(m)=Re(y(m))+j*Im(y(m)), длины N/2. m от до N/2-1.
Причем Re(y(m))=x(2m), Im(y(m))=x(2m+1).
Далее fft длиной N/2 над y. Это ф-ия fftN/2 сделает. Ее результат Y(k). k от 0 до N/2-1.
Y(k)=sum[y(m)*exp(-j*2pi*mk/0.5N)]=
=sum{[Re(y(m))+j*Im(y(m))]*exp(-j*2pi*mk/0.5N)}=REY(k)+j*IMY(k).
REY(k)=sum[Re(y(m))*exp(-j*2pi*mk/0.5N)].
IMY(k)=sum[Im(y(m))*exp(-j*2pi*mk/0.5N)].
REY(k) - преобразование Фурье (ПФ) над реальной частью y, т.е. над Re(y(m)), IMY(k) - ПФ над мнимой, т.е. над Im(y(m)).
Далее нужно написать процедурку, получающую из Y(k) преобразование Фурье (ПФ) над исходным массивом x.
Суть. Из Y(k) выделяются REY(k) и IMY(k). При выделении REY(k), IMY(k) пользуются тем, что и Re(y(m)) и Im(y(m)) действительные массивы, сл-но их спектры обладают св-вом комплексно-сопряженной симметрии полож. и отриц. частот. Т.е. REY(k)=REY'(N/2-k), IMY(k)=IMY'(N/2-k). Апостроф - компл. сопряжение.
Т.к. Re(y(m))=x(2m), Im(y(m))=x(2n+1), то REY(k),IMY(k) - ПФ над четными и нечетными отсчетами x(n), соответственно.
И из алгоритма БПФ с прореживанием по времени:
X(k)=REY(k)+exp(-j2pi*k/N)*IMY(k).
X(k+N/2)=REY(k)-exp(-j2pi*k/N)*IMY(k).
Вообще 2-ую строчку достаточно вычислить только при k=0. Т.к. x(n) - действительный.




Составить ответ  |||  Конференция  |||  Архив

Ответы


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

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

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

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru