Skip to main content

Fourier in Mathematica different from octave



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 ?



Answer



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.


Comments