Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: derivative of discrete fourier transform interpolation
Replies: 8   Last Post: Jun 6, 2013 7:24 AM

 Messages: [ Previous | Next ]
 Rusty Posts: 108 Registered: 6/16/05
Re: derivative of discrete fourier transform interpolation
Posted: Oct 1, 2005 5:35 AM

<stevenj@alum.mit.edu> wrote in message
> Peter Spellucci wrote:
>> the FFT gives a real sin/cos series only for special N and in this case
>> is running from -N/2 to N/2 . the real sin/cos (Fourier ) sum can then be
>> differentiated in the usual manner with no trouble.

>
> Special N?? The DFT of real inputs x_n, for any N, can be interpreted
> as the amplitudes of a real sin/cos series (with real derivatives).
>
> To see this, you pair the output X_k with X_{n-k}=X_k^*, by the
> Hermitian symmetry of the output. Equivalently, you are using the
> aliasing property to think of the X_{n-k} output, for k > n/2, as the
> X_{-k} amplitude (i.e. a negative frequency -k), and so you get
> complex-conjugate pairs of sinusoids. (The k=n/2 Nyquist element, for
> even n, must be treated specially. Since it is purely real, it can be
> thought of as 1/2 k=-n/2 and 1/2 k=+n/2.)
>
> In order to take the derivative, you need to realize that the
> interpolation implied by the DFT, and hence the slope, is not unique
> because of aliasing. Normally, however, you want the interpolation
> corresponding to exactly the aliasing described above: the k > n/2
> outputs are *negative* frequency amplitudes.
>
> This choice means that your frequencies run from -N/2+1 to N/2 (for
> even N). Not only does it guarantee real derivatives from real
> inputs, but it also corresponds to the interpolation with the *minimal*
> mean-square slope.

I was trying to remember the trick with the middle coefficient. Here is the
MatLab code which puts half its amplitude in the upper band and half in the
lower, giving a real valued interpolation. The ripples are a bit excessive
unless the function starts off well band limited, which could be done by
FFT.

PS: why is Matlab alone in not using array indices starting at zero ? It
makes a pigs ear of DFT's
Rusty

N=16

x=(1:N)'

x=x

X=fft(x)

s=0.25

ix=0;

for k=1:N/2

ix=ix+X(k)*exp(2*pi*1i*(k-1)*s/N);

end

for k=1:N/2-1

ix=ix+X(N+1-k)*exp(-2*pi*1i*k*s/N);

end

ix=ix+X(N/2+1)*cos(-2*pi*s/2);

ix=ix/N

Date Subject Author
9/30/05 Gareth Davies
9/30/05 Rusty
9/30/05 Rusty
9/30/05 Rusty
9/30/05 Rusty
9/30/05 Peter Spellucci
9/30/05 Steven G. Johnson
10/1/05 Rusty
6/6/13 Wesley