Текст подпрограммы и версий
ftflc_c.zip
Тексты тестовых примеров
tftflc_c.zip

Подпрограмма:  ftflc_c

Назначение

Вычисление  l = 2 j последовательных коэффициентов прямого или обратного дискретного преобразования Фурье комплексного ряда длины  k * l с использованием метода быстрого преобразования Фурье.

Математическое описание

Пусть  N - длина пpeoбразуемого комплексного ряда  A pавна  K * L, где  K - целое, а  L - целая степень двух. Вычисляются  L последовательных (начиная с номеpa  M * L,  M - задано,  0 ≤ М ≤ К - 1) коэффициентов Фурье ряда  A, то есть, ряд  А преобразуется в комплексный ряд  X длины  L по формуле:

                  N-1             
        X r  =  ∑   A n*W n (ML + r)  ,    r = 0, 1, ..., L - 1  ,
                  n=0 

где  W = e- 2π i / N для дискретного преобразования Фурье  W = e2π i / N для обратного дискретного преобразования Фурье. B вычислениях используется метод быстрого преобразования Фурье.

При больших  N число операций пропорционально  N * (1 + log2L). Данная подпрограмма подробно описана в [1, стp. 39] под именем  FFTL. Подпрограмма может использоваться, например, для выделения гармонических составляющих в некотоpом диапазоне частот.

1.  В.А.Морозов, Н.Н.Кирсанова, А.Ф.Сысоев. Комплекс алгоритмов быстрого преобразования Фурье дискретных рядов. Сб. "Численный анализ на ФОРТРАНе", вып. 15, Изд. МГУ, 1976.

Использование

    int ftflc_c (real *are, real *aim, integer *n, integer *l,
            integer *m, real *p, real *xre, real *xim)

Параметры

         are -
         aim  
вещественные массивы длины  n, компоненты которых являются соответственно действительными и мнимыми частями элементов преобразуемого комплексного ряда  a;
n - заданная длина преобразуемого ряда  a (тип: целый);
l - заданное число вычисляемых коэффициентов Фурье, целая степень двух, делитель  n (тип: целый);
m - заданный параметр, определяющий номеp первого вычисляемого коэффициента Фурье. Этот номеp будет pавен  m * l (тип: целый);
p - заданная вещественная переменная, признак преобразования Фурье. При  p > 0. выполняется дискретное преобразование Фурье, при  p < 0. выполняется обратное дискретное преобразование Фурье;
         xre -
         xim  
вещественные массивы длины  l, содержащие вычисленные соответственно действительные и мнимые части элементов преобразованного ряда.

Версии: нет

Вызываемые подпрограммы

ftf1c_c - вычисление дискретного или обратного дискретного преобразования Фурье комплексного ряда длины, равной целой степени двух, методом быстрого преобразования Фурье.

Замечания по использованию

  1. 

Количество  l вычисляемых коэффициентов Фурье должно быть целой степенью двух

      l = 2 j ,   j - целое ,   l ≥ 4 
  2. 

При работе подпрограммы исходная информация, расположенная в массивах are, aim не сохраняется.

  3. 

Если при обращении к подпрограмме задать  p = 0., то pезультат ее работы не определен.

  4.  Результат может быть получен на месте первых  l компонент исходного ряда (вместо массивов xre, xim можно использовать первые  l компонент массивов are, aem).

Пример использования

int main(void)
{
    /* Local variables */
    static int i__, l, m, n;
    static float p;
    extern int ftflc_c(float *, float *, int *, int *,
                       int *, float *, float *, float *);
    static float aim[12], are[12], xim[4], xre[4];

    for (i__ = 1; i__ <= 12; ++i__) {
        are[i__ - 1] = i__ - 1.f;
/* l1: */
        aim[i__ - 1] = 0.f;
    }
    n = 12;
    l = 4;
    m = 1;
    p = 1.f;

    ftflc_c(are, aim, &n, &l, &m, &p, xre, xim);

    for (i__ = 1; i__ <= 4; ++i__) {
    printf("\n %16.7e %16.7e \n",xre[i__-1], xim[i__-1]);
    }
    return 0;
} /* main */


Результаты:

      xre(1)  =  -6.0,  xre(2)  =  -6.0,  xre(3)  =  -6.0,  xre(4)  =  -6.0

      xim(1)  =   3.464102,  xim(2)  =  1.607695,  xim(3)  =  0.0
      xim(4)  =  -1.607695