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