Составители:
2.5 Программа, реализующая БПФ
Реализация БПФ на языке программирования C
/*************************************************************************
Алгоритм проводит быстрое преобразование Фурье комплексной
функции, заданной nn отсчетами на действительной оси.
В зависимости от переданных параметров, может выполняться
как прямое, так и обратное преобразование.
Входные параметры:
nn - Число значений функции. Должно быть степенью
двойки. Алгоритм не проверяет правильность
переданного значения.
a - array [0 .. 2*nn-1] of Real
Значения функции. I-ому значению соответствуют
элементы a[2*I] (вещественная
часть)
и a[2*I+1] (мнимая часть).
InverseFFT
- направление преобразования.
True, если обратное, False, если прямое.
Выходные параметры:
a - результат преобразования.
*************************************************************************/
void fastfouriertransform(ap::real_1d_array& a, int nn, bool inversefft)
{
int ii;
int jj;
int n;
int mmax;
int m;
int j;
int istep;
int i;
int isign;
double wtemp;
double wr;
double wpr;
double wpi;
double wi;
double theta;
double tempr;
double tempi;
if( inversefft )
{
isign = -1;
}
else
{
isign = 1;
}
n = 2*nn;
j = 1;
for(ii = 1; ii <= nn; ii++)
{
i = 2*ii-1;
if( j>i )
{
tempr = a(j-1);
tempi = a(j);
a(j-1) = a(i-1);
a(j) = a(i);
Страницы
- « первая
- ‹ предыдущая
- …
- 152
- 153
- 154
- 155
- 156
- …
- следующая ›
- последняя »