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:
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
Post a Comment