Reply by Shafik September 23, 20042004-09-23
I am in fact using a real FFT with packed output, so I do infact
expect only one spike. The output was the following:

[0,0,0,0, 0.5,0,0,0].  (Correct within scaling)

Motorola's documentation says the output is in the following format:
z[0], z[n/2], z[1], z[2], etc...

The zeros were 0.0's

--Shafik

Reply by Dirk Bell September 23, 20042004-09-23
If you are not using a real FFT with packed output I would expect 2
real spikes. How big were the spikes and the input.  Are the zeroes
exactly zero? If not, what are they? You need to provide the detailed
answers to the questions in this and the previous posts or I can't
help.

Last chance,

Dirk Bell

"Shafik" <shafik@u.arizona.edu> wrote in message news:<1095890215.159251.48010@k26g2000oda.googlegroups.com>...
> I ran the FFT routine on the data packet above, and it yielded expected > results: a single real spike at one of the frequencies, with no > imaginary parts. > > Packet used was {1,0,-1,0,1,0,-1,0} > > --Shafik
Reply by Shafik September 22, 20042004-09-22
I ran the FFT routine on the data packet above, and it yielded expected
results: a single real spike at one of the frequencies, with no
imaginary parts.

Packet used was {1,0,-1,0,1,0,-1,0}

--Shafik

Reply by Dirk Bell September 21, 20042004-09-21
"Shafik" <shafik@u.arizona.edu> wrote in message news:<1095788064.185387.186660@k17g2000odb.googlegroups.com>...
> The routines are 16-bit fractionals ranging from -1.0 to 0.999... My > normal voice input usually swings +0.3 to -0.3, which I figured was on > the same order of magnitude as 1.0. > > Keep in mind the routines weren't written by me, theyre Motorola's. > Whether or not the imaginary parts were taken into account should be > their problem, not mine. But just to make sure I'll step through and > see if what FFT(x) gives me. > > As much as I'd like to blaim Motorola, I cannot assume that their > simple FFT and IFFT routines arent functional. Can you think of > anything else that I might be doing wrong? > Thanks for your time btw :-) > --Shafik
What I have suggested will help rule out (if appropriate) the routines or your use of them as a problem so you can focus your examination where it might be productive. Why assume? Why guess? Dirk Bell
Reply by Shafik September 21, 20042004-09-21
The routines are 16-bit fractionals ranging from -1.0 to 0.999... My
normal voice input usually swings +0.3 to -0.3, which I figured was on
the same order of magnitude as 1.0.

Keep in mind the routines weren't written by me, theyre Motorola's.
Whether or not the imaginary parts were taken into account should be
their problem, not mine. But just to make sure I'll step through and
see if what FFT(x) gives me.

As much as I'd like to blaim Motorola, I cannot assume that their
simple FFT and IFFT routines arent functional. Can you think of
anything else that I might be doing wrong?
Thanks for your time btw :-)
--Shafik

Reply by Dirk Bell September 21, 20042004-09-21
Shafik

Since it is not working on speech I would say your IFFT(FFT(x)) != x.

I am just trying to check things methodically that people sometimes
overlook.

For example, from your post I am not sure the imaginary parts of the
final result are 0.  You may have implied it, but sometimes people
take the real part as the output when the imag part is not 0. Also the
one tone does not test all of the IFFT(FFT()) processing.

What is the tone amplitude relative to the max possible input
amplitude?

Dirk

"Shafik" <shafik@u.arizona.edu> wrote in message news:<1095748182.462519.3880@k17g2000odb.googlegroups.com>...
> Why does it matter as long as IFFT(FFT(x)) == x? > > I'll run the above experiments anyway next time I'm at work :-) > --Shafik
Reply by Shafik September 21, 20042004-09-21
Why does it matter as long as IFFT(FFT(x)) == x?

I'll run the above experiments anyway next time I'm at work :-)
--Shafik

Reply by Dirk Bell September 20, 20042004-09-20
Shafik,

Break it down into more steps, so we have more to look at.

Put the same sequence (0, 1, 0, -1, 0, 1, 0 -1)into the real part of
the fft input.
Verify that the imaginary parts of the fft input are zero.
Tell us what the real and imaginary parts of the fft output are.
Put the fft outputs (real and imaginary) into the ifft input.
Tell us what the real and imaginary parts of the ifft output are.

Repeat these steps with the sequence obtained by shifting the previous
input by 1 sample, ie use
{1, 0, -1, 0, 1, 0, -1, 0)

If any imaginary parts are zero, show that.

Dirk Bell


"Shafik" <shafik@u.arizona.edu> wrote in message news:<1095701778.647486.247330@k26g2000oda.googlegroups.com>...
> Dirk, > > The smallest size I can do is an 8 point FFT. I put in the sequence (0, > 1, 0, -1, 0, 1, 0 -1) and got out an almost exact sequence: > > (0, 0.99987, 0, -0.99987, 0, etc...) > What does that tell you? > > --Shafik
Reply by Shafik September 20, 20042004-09-20
Dirk,

The smallest size I can do is an 8 point FFT. I put in the sequence (0,
1, 0, -1, 0, 1, 0 -1) and got out an almost exact sequence:

(0, 0.99987, 0, -0.99987, 0, etc...)
What does that tell you?

--Shafik

Reply by Dirk Bell September 19, 20042004-09-19
Shafik,

If you can change the FFT size by simply changing parameters in the
code, then read my post to your question on 09/16.

Dirk Bell


"Shafik" <shafik@u.arizona.edu> wrote in message news:<1095587215.974772.271280@h37g2000oda.googlegroups.com>...
> So far nothing has worked. I do realize if I manipulate the FFT data in > the frequency domain then I would get aliasing in the time domain after > the IFFT. Still, I want a simple frame to be FFTed then IFFTed with no > problem at all, since everyone here at least agrees that IFFT(FFT(x)) > == x and Im unable to get that with the Motorola product. > > The best Ive gotten was with the 64 size FFT. Am I just barking up the > wrong tree with using fixed-point FFT for voice processing? Should I be > using a true floating-point processor? > > --Shafik