Signal Integrity: Back to Basics

The Trouble With IFFT

May 15, 2009 · Leave a Comment

(Syndicated content from: http://signal-integrity-tips.com/2009/the-trouble-with-ifft/)
Consider the following MATLAB code which models a lossless delay by its amplitude and phase frequency response, then applies a simple inverse discrete Fourier transform, then plots one period of the time domain response:


close all
clear all
npts = 256;
delta_t = 1e-9; % s
t = 0:delta_t:delta_t*(npts-1);
f = linspace(-(npts-1)/(2*npts*delta_t),1/(2*delta_t),npts); % Hz
amplitude = ones(size(f));
delay = 10.5e-9; %s
phase = -2 * pi * f * delay;
fresp = amplitude .* exp(j * phase);
tresp = ifft(ifftshift(fresp));
plot(t,tresp)

The resulting plot shows that this method cannot be used to create an accurate impulse response:

one period of the time domain response

The pulse is spread out so badly that the skirt of the next period leaks into the end of this one.

The fundamental issues is that to get an impulse response, you have to do an inverse Laplace transform, not an inverse Fourier transform. (The output of an inverse Fourier transform isn’t an impulse response at all: it’s one period of the repeated pulse train response.) “But,” you say, “I don’t have the frequency response in the complex plane, I only have the steady state response on the upper half of the f = j ω line.” Kramers-Kronig relation to the rescue! This relation says that if you have a real physical system i.e. a causal system the frequency response it is possible to construct the impulse response (causal of course) from the steady state data alone.

If you don’t want to do the math (and I don’t blame you for that), don’t worry we’ve done it for you in ADS (US patent pending, application 20080281893).

Categories: RSS

0 responses so far ↓

  • There are no comments yet...Kick things off by filling out the form below.

Leave a Comment