- #1
wu_weidong
- 32
- 0
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
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