Forums

Fourier Transform

Started by wu_weidong September 25, 2006
Hi all,
I'm new to Matlab, and I'm trying to evaluate a function via fast
fourier transform using Matlab, then compare the values at each
gridpoint with the exact value.

The function is
y1 = cos(x)-20*sin(5*x)+6*sin(12*x)
on the interval [-pi, pi], using n = 9 gridpoints.

I first tried to find the Fourier coefficients F1:
n = 9;
x = -pi:(2*pi/(n-1)):pi;
y1 = cos(x)-20*sin(5*x)+6*sin(12*x);
F1 = fft(y1);

I checked the values of my coefficients with the formula given by my
teacher:
F1_k = SUM[y1(x_j)*exp(pi*i*j*k/m)]
where m = n/2, k = 0, 1, ..., 2m-1, and SUM is from j = 0 to j = 2m-1.
The coefficients matched.

Then I tried to compute the function F(x) at each grid point x_j using
the formula
F(x) = (1/m)*SUM(F1_k*exp(i*k*x))
where SUM is from k = 0 to 2m-1
(This is the formula given by my teacher.)

for j=1:1:n
sum=0;
for k=1:1:n
sum=sum+(F1(k)*(exp(i*(k-1)*x(j))));
end
F(j)=sum/(n/2);
end

However, the values for F(x) that I got were

-0.2222 -14.8231i
-15.3243 +36.4597i
22.2864 -22.5086i
-4.6765 + 1.8450i
-2.0000 + 0.0000i
-30.6032 -12.5842i
26.5710 +26.7933i
-7.6067 -17.8277i
-0.2222 -14.8231i

instead of the actual values

-1
-14.849242
20
-13.435029
1
14.849242
-20
13.435029
-1

What is wrong with my program?

Thank you.

Regards,
Rayne