[R] FFT (fast fourier transform) function

Brahm, David David.Brahm at fmr.com
Wed May 31 16:48:31 CEST 2000


Here's how I interpret output from fft().  (It's equivalent to Yudi
Pawitan's response, just with different scaling conventions.)
 
y <- 1:4
N <- length(y)   #  N=4
x <- 0:(N-1)      #  x = 0,1,2,3
z <- fft(y)/N     #  z = c(2.5,  -.5+.5i,  -.5+0i,  -.5-.5i)
 
Then the fit function is
yf <- 2.5 - .5 * cos(2*pi*x/N) - .5 * sin(2*pi*x/N) - .5 * cos(4*pi*x/N) -
.5 * cos(6*pi*x/N) + .5 * sin(6*pi*x/N)
 
which exactly matches y for integer values of x.

-- David Brahm 
    Fidelity Investments 
    (617)563-7438 

 

-----Original Message-----
From: mike olsen [mailto:mikeo at syncrasy.com]
Sent: Tuesday, May 30, 2000 7:54 PM
To: r-help at hypatia.math.ethz.ch
Subject: [R] FFT (fast fourier transform) function


I'm having trouble with the fast fourier transform function ("fft").
Apparently, I'm not understanding what R's function is actually doing, let
me show you with the example in the R manual:
 
if I put in:
 
    y <- 1:4
    fft(x)
 
i'll get this back:
 
10+0i    -2+2i    -2+0i    -2-2i
 
this is what I'm assuming:
 
R is interpreting the increasing values of y to have an associated value
that is incremented as x increases (a plot will show y against an index, so
in this case we have something like y=x over the interval 1 to 4).
The real value returned represents the coeffient of the cosine value, the
imaginary value that of the sine, for n=0 to N-1 where N is the number of
data points and n is the coeffient inside the sine/cosine terms, so that the
output would be interpreted as:
 
10 - 2 cos(2 pi*x) + 2 sin (2 pi * x) -2 cos (4 pi * x) -2 cos(6 pi * x) - 2
sin (6 pi * x)
 
which looks nothing like y=x over the interval (1,4).
 
Basically, I want to be able to fit fast fourier transforms to several sets
of empirical data. Controlling the period would also be important here, and
the R function does not seem to have a way of handling that.  I would
appreciate any information on what this function is actually doing, or
information on other R packages that are able to do transforms.
 
Thank you for taking the time to look at this,
 
Michael Olsen

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list