8
$\begingroup$

Does the inverse continuous time Fourier transform exist for a Dirac delta (A single causal/non-causal spike)?

$\endgroup$
  • 1
    $\begingroup$ See the answers to a related recent question on math.SE which will also tell you how to use tables of common Fourier transform pairs with respect to the radian frequency variable $\omega$ radians/second to obtain Fourier transform pairs with respect to frequency variable $f$ in Hertz. For the particular case of impulses in time or frequency, the key is the sifting property: $$\int_{-\infty}^{\infty} x(y) \delta(y-a)\mathrm dy = x(a) ~ \text{if}~x(y)~\text{is continuous at}~a.$$ $\endgroup$ – Dilip Sarwate Feb 22 '12 at 18:30
4
$\begingroup$

Yes, this is a complex exponential $e^{2 \pi i f_0 t}$, at a frequency determined by the delta's "position" $f_0$ (your input being $\delta(f - f_0)$). Write the integral for the inverse Fourier transform, use the definition of $\delta$ and you'll see it "selects" at this particular frequency the complex exponential being integrated.

$\endgroup$
  • 1
    $\begingroup$ This is a very important transform that is often found in a table of common Fourier transforms like this one. $\endgroup$ – Jason R Feb 22 '12 at 14:26
3
$\begingroup$

As a side note: forward and inverse Fourier Transform are mostly the same thing. For example a rectangle in one domain corresponds to a sin(x)/x in the other domain (regardless whether it starts in time or frequency). The same goes for a delta: impulse in one domain corresponds to a complex exponential in the other.

You can implement an inverse FFT (based on a forward FFT) as follows:

  1. take the conjugate
  2. forward FFT
  3. take the conjugate again
  4. divide by length of the sequence

In Matlab that would look like this

n = 1024;
x0 = randn(n,1) + j*rand(n,1); % random sequence
fx = fft(x0);  % take the FFT
x1 = conj(fft(conj(fx)))/n; % inverse fft based on fw fft
% print an error metric how close we got to the orginal signal
fprintf('Error = %6.2f dB\n', 10*log10(sum( (x1-x0).* conj(x1-x0))./sum(x0.*conj(x0))));
$\endgroup$
  • $\begingroup$ I wouldn't include step #4 in your list above, as it won't necessarily be the case. There is no single agreed-upon notion of how scaling is handled in the DFT/IDFT. What you indicated does work with MATLAB's implementation, but it's possible that another would not require the division by $N$. $\endgroup$ – Jason R Feb 23 '12 at 14:02
  • 1
    $\begingroup$ That's true. Matlab's scaling is probably the most common (and seen in most textbooks). 1/sqrt(N) for both forward and inverse would be better is it ensure the cleanest version of Parseval's theorem, i.e energy in the time domain equals energy in the frequency domain. $\endgroup$ – Hilmar Feb 24 '12 at 0:03

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.