6
$\begingroup$

First I create a table of sin(x) within 0, 10

In[97]:= Table[Sin[1.0 x], {x, 0, 10}]
Out[97]= {0.,0.841471,0.909297,0.14112,-0.756802,-0.958924,-0.279415,0.656987,0.989358,0.412118,-0.544021}

Then I try to apply fft on this data (wolfram Link)

In[100]:= Fourier[{0.,0.841471,0.909297,0.14112,-0.756802,-0.958924,-0.279415,0.656987,0.989358,0.412118,-0.544021}]//MatrixForm
Out[100]//MatrixForm= (
     0.425489 +0.I
     0.570407 -0.270821I
    -0.860518+1.09804I
    -0.0342615+0.218599I
     0.0450821 +0.095328I
     0.0665458 +0.0283187I
     0.0665458 -0.0283187I
     0.0450821 -0.095328I
    -0.0342615-0.218599I
    -0.860518-1.09804I
     0.570407 +0.270821I)

I do the same using octave

fft([0.;0.841471;0.909297;0.14112;-0.756802;-0.958924;-0.279415;0.656987;0.989358;0.412111])
ans =

   1.41119 + 0.00000i
   1.89183 + 0.89821i
  -2.85402 - 3.64178i
  -0.11363 - 0.72501i
   0.14952 - 0.31617i
   0.22071 - 0.09392i
   0.22071 + 0.09392i
   0.14952 + 0.31617i
  -0.11363 + 0.72501i
  -2.85402 + 3.64178i
   1.89183 - 0.89821i

Which one of them is correct ?

UPDATE

using FourierParameters as suggested, However wolfram alpha online gives different result

In[101]:= Fourier[{0.,0.841471,0.909297,0.14112,-0.756802,-0.958924,
                     -0.279415,0.656987,0.989358,0.412118,-0.544021},
                  FourierParameters->{1,-1}] // MatrixForm
Out[101]//MatrixForm= (
     1.41119  +0.I
     1.89183  +0.898211I
    -2.85402  -3.64178I
    -0.113633 -0.725012I
     0.149521 -0.316167I
     0.220708 -0.0939226I
     0.220708 +0.0939226I
     0.149521 +0.316167I
    -0.113633 +0.725012I
    -2.85402  +3.64178I
     1.89183 -0.898211I)

But why these are different ?

$\endgroup$
4
  • 3
    $\begingroup$ Take a look at the Details section in the documentation of Fourier, paying special attention to FourierParameters, and compare the formula there with the one given e.g. by the MATLAB docs (Octave copies MATLAB.) $\endgroup$
    – Szabolcs
    Sep 27, 2016 at 13:35
  • $\begingroup$ All of the results are rounded, so the Wolfram alpha online result is the same as octave, but for the formatting and number of digits. Are you sure you calculated the same thing with numpy? According to this site, jakevdp.github.io/blog/2013/08/28/understanding-the-fft numpy should also use FourierParameters->{1,-1}. $\endgroup$
    – bill s
    Sep 27, 2016 at 14:22
  • $\begingroup$ Sorry the numpy one was wrong, Thank You $\endgroup$
    – Neel Basu
    Sep 28, 2016 at 16:41
  • 1
    $\begingroup$ This is covered in the answer Fourier transforms do not return the expected result in the What are the most common pitfalls awaiting new users? Q&A. $\endgroup$
    – C. E.
    Sep 28, 2016 at 19:03

1 Answer 1

10
$\begingroup$

Read the docs for Fourier. There are different conventions, and Mathematica lets you choose which convention you want using the FourierParameters option. For example, to reproduce Octave's (and MATLAB's) convention, use

dat = Table[Sin[1.0 x], {x, 0, 10}]
Fourier[dat, FourierParameters -> {1, -1}]

This is what the docs call the "signal processing convention". The meaning of the options is given in the help file under details and options where it says:

enter image description here

So for example, with $a=1$, the term outside the sum is $1/n^0 = 1$ and there is no scaling on the forward Fourier transform. With $a=-1$, the scaling would be $1/n$. Similarly for $b$, though it appears in the exponent of the e in the sum. $b=-1$ means the forward transform has a minus sign in the exponent while $b=1$ means it has a plus sign.

$\endgroup$
4
  • 1
    $\begingroup$ Yes, that -1 is important, even though it makes no difference with the OP's input :-) $\endgroup$
    – Szabolcs
    Sep 27, 2016 at 13:42
  • 2
    $\begingroup$ I've often wished that "signal processing" was the default! $\endgroup$
    – bill s
    Sep 27, 2016 at 13:44
  • $\begingroup$ Would you mind explaining the difference between the conversions ? $\endgroup$
    – Neel Basu
    Sep 28, 2016 at 16:43
  • $\begingroup$ I added a bit about the meaning of the options, mostly cribbed from the documentation. $\endgroup$
    – bill s
    Sep 28, 2016 at 19:37

Not the answer you're looking for? Browse other questions tagged or ask your own question.