MATLAB: Is DFT phase different from FFT phase

dftfftfft magnitudesfft real componentphase

If I compute the DFT using the definition given on Wikipedia, real components relate directly to cosine amplitudes and imaginary components relate directly to sine amplitudes.
I.e.
dft(sin(t))= [0, 0-0.5i, 0, 0, 0, 0, 0, 0+0.5i]
where
t=linspace(2*pi/8,2*pi,8);
but using the fft function:
fft(sin(t))/8= [0, 0.3536-0.3536i, 0, 0, 0, 0, 0, 0.3536+0.3536i]
The magnitudes are equal but I can no longer seperate sine and cosine components with FFT. Is there any way I can pre-treat my data so I can use FFT to give the same outputs as DFT?

Best Answer

The DFT is a linear operator from \mathbb{C}^N to \mathbb{C}^N.
Your vector sin(t) for the argument values you have defined is
0.7071
1.0000
0.7071
0.0000
-0.7071
-1.0000
-0.7071
-0.0000
The 2nd element of the DFT is equal to inner product of your vector and
W = exp(1i*(2*pi)/8*(0:7)');
So
X = [ 0.7071
1.0000
0.7071
0.0000
-0.7071
-1.0000
-0.7071
-0.0000];
dot(W,X)
Why do you expect any other result? The output of fft() matches exactly what you would expect from the DFT (given the definition used in MATLAB).