Path: news.mathworks.com!newsfeed.mathworks.com!enews.sgi.com!pln-w!spln!dex!extra.newsguy.com!newsp.newsguy.com!enews3
From: Randy Poe <rpoe@nospam.com>
Newsgroups: comp.dsp,comp.soft-sys.matlab
Subject: Re: DFT of an irregular time-spacing signal
Date: Tue, 22 Oct 2002 11:55:28 -0400
Organization: http://extra.newsguy.com
Lines: 34
Message-ID: <ap3sdg0a4o@enews3.newsguy.com>
References: <ap102a$6ce$1@scotsman.ed.ac.uk> <ap3otm$sh2$1@news.mathworks.com> <_let9.606$wm6.507@nwrddc01.gnilink.net>
NNTP-Posting-Host: p-387.newsdawg.com
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
User-Agent: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.1) Gecko/20020827
X-Accept-Language: en, es, ru
Xref: news.mathworks.com comp.dsp:134859 comp.soft-sys.matlab:140278



Ken Davis wrote:
> Hello,
> 
> I believe that there is no simple way to write a DFT for unevenly spaced
> data. The DFT/FFT (they are the same function, but the FFT is a fast
> algorithm for computing the DFT), requires evenly spaced data in it's
> underlying assumptions. If the set of samples is not not evenly spaced,
> then, in general, the spectrum will not be a finite, discrete set of
> frequencies.
> 
> If you take the "naive" approach and just take the inner product of your
> sample vector with a collection of complex sinusoids sampled with the same
> uneven spacing, you will get a set of numbers, but those numbers will not be
> a very good representation of the power spectrum since the unevenly sampled
> sinusoids will not form an orthonormal set.

However, if you properly approximate the INTEGRAL of
exp(j*w*t) * f(t) where f(t) is your function, then
you should get a reasonable estimate of the Fourier
component at w.

Fourier theory says the frequency spacing of the DFT
is governed by the limits of the integral, the time
interval [A,B] over which you sample. w will be
integer multiples of 2*pi/(B-A).

Approximating the integral suggests that you
should calculate something roughly like
exp(j*w*t).*f(t).*diff(t). (diff(t) is
the wrong length so this is not exactly
correct).

          - Randy