Chronology Current Month Current Thread Current Date
[Year List] [Month List (current year)] [Date Index] [Thread Index] [Thread Prev] [Thread Next] [Date Prev] [Date Next]

Re: Fourier transforms



On 10/18/2003 04:22 AM, Ludwik Kowalski wrote:
> REPOSTING WHAT I THINK WAS LOST.

Good move. I received only this one copy (4:22 AM).

>>On Thursday, Oct 16, 2003 Roger Haar wrote:
...
>>the FFT's frequencies include 100 HZ and 105 Hz,
>>but nothing in between, the analysis gives a
>>non-zero amplitude to both 100 and 105 Hz and
>>usually a bit in 90, 95, 110, and 115.

> I do not know how the FFT
> analysis is performed by Roger (please share the details) but
> I suspect that his hardware captures a certain finite number of
> cycles to be processed. That is why the output is never a
> single value of w.

You guys are slightly talking past each other.
Things to be extra-careful of include:
-- Fourier series versus Fourier integral transform.
-- a finite sample with presumed periodic continuation
versus a finite sample presumed padded with
ordinate=0 on both ends forever.

Note that FFT is an algorithm (quite a fast algorithm)
for finding the Fourier series for a presumed-periodic
function. Ludwik appears to be interested in the
Fourier integral transform for a zero-padded function.

Also note that if you are sufficiently motivated you
can "persuade" the nice fast FFT algorithm to give
you frequency-abscissas spaced more closely than
those described by Roger. The quick & dirty way to
get N-fold closer spacing is to create a dataset that
is N times longer in the time direction (by padding
the original dataset with periodic copies or with
zeros, as appropriate). There are computationally
more-efficient ways of doing it, but they require
more effort from the programmer ... probably not
worth it unless you are going to be doing numerous
and/or large transforms.

[My thesis work involved tens of thousands of large
transforms, back when computers were ten thousand
times slower than they are today, so I was motivated
to do a good job on the software.]

> 2) And here is my own question. What meaning should be
> attached to negative w which my program generates?

Multiple interpretations are possible.

1) Consider the periodic motion of a point on the
rim of a wheel. If positive frequency corresponds
to CW motion of the wheel, negative frequency
corresponds to CCW motion.

The two are indistinguishable if you record only
the Y-component of the point's position. The two
are readily distinguishable if you record both the
X and Y components of the position.

X(t) and Y(t) can be represented as the RealPart and
ImaginaryPart of some complex-valued function Z(t).
Remember that complex numbers are isomorphic to
vectors in the plane. They are also isomorphic
to the even subalgebra of the Clifford algebra in
two dimensions, as discussed at
http://www.av8n.com/physics/complex-clifford.htm
so don't be too quick to dismiss the ImaginaryPart of
Z(t) as unphysical. The terminology of RealPart and
ImaginaryPart are unduly pejorative IMHO. The ImaginaryPart
is often no less *real* than the RealPart :-)

2) Similarly if you have a narrowband signal, negative
frequency is a good way to represent the lower sideband
i.e. stuff below the carrier frequency, while positive
frequency represents the upper sideband.

3) For a signal with time-samples spaced every delta_t,
the negative frequency omega is entirely synonymous
with the positive frequency (2pi/delta_t - omega) ...
because of aliasing. The signal in frequency-space
is guaranteed periodic; you have the choice of
whether the period you choose to display is
-- from -pi/delta_t to +pi/delta_t
(showing lots of negative frequencies)
-- from 0 to 2pi/delta_t
(showing the same thing using only positive f)
-- from 0 to pi/delta_t
(which suffices if A(f) [which some people are
calling F(w)] is known to be an even function)
(be sure to put back the other half of the data
before attempting to calculate the inverse transform)

> The
> distributions of F(w), for the f(t)=cos(A*t) wave trains, are
> always symmetrical with respect to w=0;

That assumes Z(t) is a real-valued function, which
may be the only case of interest to you, but is not
"always" true, as I mentioned above.