4
$\begingroup$

I'm trying to understand how DFT works exactly. However, when experimenting around, I compared both Matlab generated FFT result with a dummy approach result and I get similar result.

However, the Imaginary part of both results are negated. The code below is my implementation. The implementation of dummy approach is based on http://en.wikipedia.org/wiki/Discrete_Fourier_transform#Definition

$$ X_k = \sum_{n=0}^{N-1}x_n . e^{-i2\pi kn/N}\,. $$

Fs = 500; % Sampling frequency 
T = 1/Fs; % Sample time 
N = 1000; % Length of signal
t = (0:N-1)*T; % Time vector 
x = cos(2*pi*100*t)+randn(size(t));

% Calculate by using Matlab build-in FFT 
fdft = fft(x);

% A dummy way to calculate DFT
n = 0:N-1;
k = 0:N-1;
kn = bsxfun(@times, n', k);
dummydft = x * exp(-i * 2 * pi * kn / N )';

Is there anything I miss? Thank you.

$\endgroup$
8
$\begingroup$

It should be OK. You did not specify how you obtain the vector $t$ used in generating $x$, but otherwise everything seems fine. I haven't used $\tt{bsxfun}$ but I would simply write the DFT like this: $$\tt{dummydft=x*exp(-2*pi*i*(n'*k)/N);}$$ I've tried it and it gives the same result as $\tt{fft(x)}$.

$\endgroup$
  • $\begingroup$ Hi @matt, I have just tried, the bsxfun(@times, n', k) produces the same result as (n' * k). I would prefer you way, neat! $\endgroup$ – NcJie Apr 24 '13 at 8:11
  • $\begingroup$ So do you get the same result as fft() now? $\endgroup$ – Matt L. Apr 24 '13 at 8:12
  • $\begingroup$ After comparing your equation, I found the reason. The only difference is the ' at the end. The ' makes it yields negated result in imaginary part. Though I'm not sure why. $\endgroup$ – NcJie Apr 24 '13 at 8:13
  • 2
    $\begingroup$ Ah, I just saw it right now. What ' does, it that it gives you a transpose, but in case of complex matrices, it also conjugates your matrix, i.e. it is a conjugate transpose. $\endgroup$ – Matt L. Apr 24 '13 at 8:15
  • $\begingroup$ Alright, thanks for explaining! Now I'm clear. $\endgroup$ – NcJie Apr 24 '13 at 8:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.