ИННОВАЦИИ БИЗНЕСУ

ПОДРОБНАЯ ИНФОРМАЦИЯ

Заявку на получение дополнительной информации по этому проекту можно заполнить здесь.

Номер

19-012-03

Наименование проекта

Эффективная реализация алгоритма быстрого преобразования Фурье (БПФ)

Назначение

Прямое и обратное дискретные преобразования Фурье комплексных векторов

Рекомендуемая область применения

Программно-технические комплексы цифровой обработки и анализа данных, в в частности средства компрессии цифровой видео- и аудиоинформации

Описание

Описание к ил № 19-012-03

Результат выполнения научно-исследовательской работы.

Предлагаемая программная реализация БПФ использует итерационную форму рекуррентных соотношений:

,где и

Ниже приведен её полный исходный текст, который включает две основные функции - прямого (fft) и обратного (ifft) БПФ, и одну вспомогательную (reverse) - для обращения порядка битов индекса. Текст может быть откомпилирован средствами ВС++ v5.02.

//Программная реализация БПФ.copyright© Юрий А. Гаджиев, 2003. Все права защищены.

#include

#define m 10 /*двоичный логарифм n (см. ниже)*/

const int n=(1

typedef complex vec[n];

//Вспомогательная процедура для обращения порядка следования m битов индекса i

int reverse(int i, int m)

{

int j,k;

for (k=j=0; j>=1)

{

k<>

if (i&1) k|=1;

}

return k;

}

//Функция прямого БПФ

void fft(vec c /*вектор коэффициентов Фурье*/, vec v /*исходный вектор*/)

{

int j,i,l,a,b,na,bm;

vec t,p;

for (i=0; i

{

if (i&1) t[i]=(v[reverse(i&~1, m)] - v[reverse(i|1, m)])/2.0;

else t[i]=(v[reverse(i&~1, m)] + v[reverse(i|1, m)])/2.0;

}

for(l=1; l

{

a=1<>

for (i=0; i

na=~a; bm=b-1;

if (l&1) for(i=0; i

else for(i=0; i

}

#if m&1

memcpy(c, t, sizeof (complex) * n);

#endif

}

//Функция обратного БПФ

void ifft(vec v /*восстанавливаемый вектор*/, vec c /*вектор коэффициентов*/)

{

int j,i,l,a,b,na,bm;

vec t,p;

for (i=0; i

{

if (i&1) t[i]=c[reverse(i&~1, m)] - c[reverse(i|1, m)];

else t[i]=c[reverse(i&~1, m)] + c[reverse(i|1, m)];

}

for(l=1; l

{

a=1<>

for (i=0; i

na=~a; bm=b-1;

if (l&1) for(i=0; i

else for(i=0; i

}

#if m&1

memcpy(v, t, sizeof(complex) * n);

#endif

Преимущества перед известными аналогами

Универсальность применения, компактность программного кода.

Стадия освоения

Проверено в лабораторных условиях

Результаты испытаний

Соответствуют технической характеристике

Технико-экономический эффект

Снижение затрат времени центрального процессора ЭВМ в отношении , где - размерность обрабатываемого вектора данных

Возможность передачи за рубеж

Возможна передача за рубеж

Дата поступления материала

10.02.2003

Инновации и люди

У павильонов Уральской выставки «ИННОВАЦИИ 2010» (г. Екатеринбург, 2010 г.)

Мероприятия на выставке "Инновации и инвестиции - 2008" (Югра, 2008 г.)

Открытие выставки "Малый бизнес. Инновации. Инвестиции" (г. Магнитогорск, 2007 г.)

Демонстрация разработок на выставке "Малый бизнес. Инновации. Инвестиции" (г. Магнитогорск, 2007 г.)