fftComplexInit

Computes the parameters for fftComplex.

Synopsis

fftComplexInit (n)

Required Arguments

int n (Input)
Length of the sequence to be transformed.

Return Value

The internal parameter vector that can then be used by fftComplex when the optional argument params is specified. If no value can be computed, then None is returned.

Description

The routine fftComplexInit should be used when many calls are to be made to fftComplex without changing the sequence length n. This routine computes constants which are necessary for the real Fourier transform.

It uses the system’s high performance library for the computation, if available. Otherwise, the function fftComplexInit is based on the routine CFFTI in FFTPACK, which was developed by Paul Swarztrauber at the National Center for Atmospheric Research.

Example

This example computes three distinct complex FFTs by calling fftComplexInit once, then calling fftComplex 3 times.

from __future__ import print_function
from numpy import *
from pyimsl.math.constant import constant
from pyimsl.math.fftComplex import fftComplex
from pyimsl.math.fftComplexInit import fftComplexInit

n = 7
two_pi = 2 * constant("pi")
p = empty(n, dtype=complex)

work = fftComplexInit(n)
for j in range(0, 3):

    # Fill p with a pure exponential signal
    for k in range(0, n):
        p[k] = exp(complex(0.0, k * two_pi * j / n))
    q = fftComplex(p, params=work)
    print("")
    print("        index    p.re      p.im      q.re      q.im")
    for k in range(0, n):
        print("%11d%10.2f%10.2f%10.2f%10.2f"
              % (k, p[k].real, p[k].imag, q[k].real, q[k].imag))

Output

        index    p.re      p.im      q.re      q.im
          0      1.00      0.00      7.00      0.00
          1      1.00      0.00      0.00      0.00
          2      1.00      0.00     -0.00      0.00
          3      1.00      0.00      0.00      0.00
          4      1.00      0.00      0.00      0.00
          5      1.00      0.00     -0.00      0.00
          6      1.00      0.00      0.00      0.00

        index    p.re      p.im      q.re      q.im
          0      1.00      0.00     -0.00      0.00
          1      0.62      0.78      7.00     -0.00
          2     -0.22      0.97      0.00      0.00
          3     -0.90      0.43      0.00      0.00
          4     -0.90     -0.43     -0.00      0.00
          5     -0.22     -0.97      0.00      0.00
          6      0.62     -0.78     -0.00      0.00

        index    p.re      p.im      q.re      q.im
          0      1.00      0.00      0.00      0.00
          1     -0.22      0.97     -0.00      0.00
          2     -0.90     -0.43      7.00     -0.00
          3      0.62     -0.78      0.00      0.00
          4      0.62      0.78      0.00      0.00
          5     -0.90      0.43      0.00      0.00
          6     -0.22     -0.97      0.00      0.00