4
$\begingroup$

This question already has an answer here:

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$

marked as duplicate by J. M. is away Dec 11 '16 at 12:27

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 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 '16 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 '16 at 14:22
  • $\begingroup$ Sorry the numpy one was wrong, Thank You $\endgroup$ – Neel Basu Sep 28 '16 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 '16 at 19:03
9
$\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$
  • 1
    $\begingroup$ Yes, that -1 is important, even though it makes no difference with the OP's input :-) $\endgroup$ – Szabolcs Sep 27 '16 at 13:42
  • 1
    $\begingroup$ I've often wished that "signal processing" was the default! $\endgroup$ – bill s Sep 27 '16 at 13:44
  • $\begingroup$ Would you mind explaining the difference between the conversions ? $\endgroup$ – Neel Basu Sep 28 '16 at 16:43
  • $\begingroup$ I added a bit about the meaning of the options, mostly cribbed from the documentation. $\endgroup$ – bill s Sep 28 '16 at 19:37

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