In general I want to know how to use FFT to do curve fitting. If I could understand the following example I would be happy:
In Matlab I do
Y=[10.6534 9.6646 8.7137 8.2863 8.2863 8.7137 9.0000 9.5726 11.0000 12.7137 13.4274 13.2863 13.0000 12.7137 12.5726 13.5726 15.7137 17.4274 18.0000 18.0000 17.4274 15.7137 14.0297 12.4345];
In answer to another question Emre wrote:
You can dispatch this problem with one line of MATLAB, f=fit(t',Y,'fourier8'), the result of which is:
f =
General model Fourier8: f(x) = a0 + a1*cos(x*w) + b1*sin(x*w) + a2*cos(2*x*w) + b2*sin(2*x*w) + a3*cos(3*x*w) + b3*sin(3*x*w) + a4*cos(4*x*w) + b4*sin(4*x*w) + a5*cos(5*x*w) + b5*sin(5*x*w) + a6*cos(6*x*w) + b6*sin(6*x*w) + a7*cos(7*x*w) + b7*sin(7*x*w) + a8*cos(8*x*w) + b8*sin(8*x*w) Coefficients (with 95% confidence bounds): a0 = 4.889 (-4.318, 14.09) a1 = -13.85 (-26.55, -1.152) b1 = 6.884 (-5.952, 19.72) a2 = -2.135 (-2.839, -1.431) b2 = 13 (-2.486, 28.48) a3 = 6.205 (-2.355, 14.76) b3 = 8.53 (0.1128, 16.95) a4 = 6.537 (-2.725, 15.8) b4 = 3.137 (2.424, 3.851) a5 = 5.048 (0.8798, 9.216) b5 = -1.603 (-6.124, 2.918) a6 = 1.68 (1.289, 2.071) b6 = -2.345 (-5.843, 1.153) a7 = -0.158 (-1.539, 1.223) b7 = -1.358 (-2.395, -0.3211) a8 = -0.5341 (-1.093, 0.02453) b8 = -0.3162 (-0.6587, 0.02635) w = 0.1994 (0.19, 0.2087)
But I want to know how to do this notwithstanding Matlab. How do I go from this
fft(Y)
ans =
1.0e+02 *
3.0392
-0.1112 + 0.4621i -0.1005 + 0.1813i -0.0228 - 0.0925i 0.0069 + 0.0316i 0.0031 - 0.0007i 0.0034 - 0.0179i -0.0036 + 0.0147i -0.0055 + 0.0015i -0.0041 - 0.0017i -0.0033 - 0.0022i -0.0021 - 0.0024i -0.0027 -0.0021 + 0.0024i -0.0033 + 0.0022i -0.0041 + 0.0017i -0.0055 - 0.0015i -0.0036 - 0.0147i 0.0034 + 0.0179i 0.0031 + 0.0007i 0.0069 - 0.0316i -0.0228 + 0.0925i -0.1005 - 0.1813i -0.1112 - 0.4621i
To the above result produced by Matlab's "fit" function? I apologize if the answer should be obvious.