PDL::FFT
FFT(T)         User Contributed Perl Documentation         FFT(T)



NAME
       PDL::FFT - FFTs for PDL

DESCRIPTION
       FFTs for PDL.  These work for arrays of any dimension,
       although ones with small prime factors are likely to be
       the quickest.

       Each routine works `inplace'.

SYNOPSIS
               use PDL::FFT qw/:Func/;

               fft($real,$imag);
               ifft($real,$imag);
               realfft($real);
               realifft($real);

               fftnd($real,$imag);
               ifftnd($real,$imag);

               $kernel = kernctr($image,$smallk);
               fftconvolve($image,$kernel);


ALTERNATIVE FFT PACKAGES
       Various other modules - such as PDL::FFTW and PDL::Slatec
       - contain FFT routines.  However, unlike PDL::FFT, these
       modules are optional, and so may not be installed.

FUNCTIONS
       fft

         Signature: ([o,nc]real(l); [o,nc]imag(g))

       Complex FFT of the "real" and "imag" arrays [inplace]

       ifft

         Signature: ([o,nc]real(l); [o,nc]imag(g))

       Complex Inverse FFT of the "real" and "imag" arrays
       [inplace]

       realfft()

       One-dimensional FFT of real function [inplace].

       The real part of the transform ends up in the first half
       of the array and the imaginary part of the transform ends
       up in the second half of the array.

               realfft($real);


       realifft()

       Inverse of one-dimensional realfft routine [inplace].

               realifft($real);



       fftnd()

       N-dimensional FFT (inplace)

               fftnd($real,$imag);


       ifftnd()

       N-dimensional inverse FFT

               ifftnd($real,$imag);


       fftconvolve()

       N-dimensional convolution

               $kernel = kernctr($image,$smallk);
               fftconvolve($image,$kernel);

       fftconvolve works inplace, and returns an error array in
       kernel as an accuracy check -- all the values in it should
       be negligible.

       The sizes of the image and the kernel must be the same.
       kernctr centres a small kernel to emulate the behaviour of
       the direct convolution routines.

       The speed cross-over between using straight convolution
       (PDL::Image2D::conv2d()) and these fft routines is for
       kernel sizes roughly 7x7.

       kernctr()

       `centre' a kernel (auxiliary routine to fftconvolve)

               $kernel = kernctr($image,$smallk);
               fftconvolve($image,$kernel);

       kernctr centres a small kernel to emulate the behaviour of
       the direct convolution routines.

       convmath

         Signature: ([o,nc]a(a); [o,nc]b(b))

       Internal routine doing maths for convolution

       cmul

         Signature: (ar(); ai(); br(); bi(); [o]cr(); [o]ci())

       Complex multiplication

       cdiv

         Signature: (ar(); ai(); br(); bi(); [o]cr(); [o]ci())

       Complex division

BUGS
       Where the source is marked `FIX', could re-implement using
       phase-shift factors on the transforms and some real-space
       bookkeeping, to save some temporary space and redundant
       transforms.

AUTHOR
       This file copyright (C) 1997, 1998 R.J.R. Williams
       (rjrw@ast.leeds.ac.uk), Karl Glazebrook
       (kgb@aaoepp.aao.gov.au), Tuomas J. Lukka, (lukka@husc.har-
       vard.edu).  All rights reserved. There is no warranty. You
       are allowed to redistribute this software / documentation
       under certain conditions. For details, see the file COPY-
       ING in the PDL distribution. If this file is separated
       from the PDL distribution, the copyright notice should be
       included in the file.



perl v5.6.1                 2002-04-08                     FFT(T)