2
$\begingroup$

In this section from Wikipedia about IDFT, three methods are given for expressing the Inverse Discrete Fourier Transform in terms of the direct transform.

Being curious, I implemented the three methods in Octave:

% define TD signal
N = 1024; n = [1:N]-1; f = [4 8];
x0 = sin(2*pi*n'*f/N);
x0 = sum(x0');

% calculate FD spectrum
y0 = fft(x0);

% trick #1
y1 = fliplr(y0);
x1 = fft(y1) / N;

% trick #2
y2 = conj(y0);
x2 = conj(fft(y2)) / N;

% trick #3
y3 = imag(y0) + i*real(y0);
x3 = fft(y3) / N;
x3 = imag(x3) + i*real(x3);

% plot results
plot(n,x0,'m-o', n,x1,'r-*', n,x2,'g-^', n,x3,'bxo');
axis tight

If happens that tricks #2 and #3 work well, while trick #1 fails to generate the correct result.

Am I missing something in the explanation, or is there an error in Wikipedia?

UPDATE: It seems like the magnitude of the y1 result is actually OK, it is just that the angle is doing funny things. Replacing the plot line with:

plot(n,abs(x0),'m-o', n,abs(x1),'r-*', n,abs(x2),'g-^', n,abs(x3),'bxo');

shows the overlap.

  • 0
    In your definition of $n$, you create a row vector. `x0` would then be a row vector, except that you take the sin of `n'`: n-transposed. So `x0` would, I believe, be a column vector. Which means that `y0` would be a column vector, and so `fliplr` would be operating on a column vector and hence do nothing (at least, this would be the case if Octave works as MATLAB does). Did you check that `y0` is a row vector, as expected?2012-09-06
  • 0
    @EdGorcenski - `x0` is being transposed in the `sum()` as well, so I end up with a row vector. Typing `whos` shows all vectors have a `1` in their 1st dimension.2012-09-06
  • 0
    Ah, so it is; I missed that!2012-09-06
  • 0
    @EdGorcenski - I just posted an update to the question.2012-09-06

1 Answers 1

3

I found my mistake. According to Wikipedia, using the 1st method, the indices of the reversed series are modulo N. So the correct code is:

% trick #1
y1 = [y0(1) fliplr(y0(2:N))];
x1 = fft(y1) / N;

and not as posted in the question.