On 2009-12-16 15:00:17 -0400, Greg Berchin
<gberchin@comicast.net.invalid> said:
> On Wed, 16 Dec 2009 10:23:39 -0700, Eric Jacobsen <eric.jacobsen@ieee.org>
> wrote:
>
>> You can apply some trig identities and probably get there.
>
> I don't see how. I've been working with the math in the "exp(j�)" form, where
> trig identities appear as simple rotations, and I cannot make FFT{I+jR} equal
> IFFT(R+jI).
>
>> Shameless plug, but relevant:
>>
>> http://www.dsprelated.com/showarticle/51.php
>
> The closest that I can get, using the arguments presented in your article, is
> that FFT{I+jR} equals IFFT(R+jI) to within a pi/2 phase shift. That's not the
> same as FFT{I+jR} == IFFT(R+jI).
>
> Greg
The trick you are looking for is about data structures. The usual FT
code requires
both the size of the data and the data and maybe other stuff. The data
may be either
a single complex array or two real arrays, one of the real parts and
the other of the
imaginary parts. So you will see FTSubr ( n, x, y ) where x is the
array of reals parts
and y is the array of imaginary parts. The trick is to use FTSub ( n,
y, x ) for the
inverse. The bother with normalization is left as an exercise for the reader.
Now the FT is just a matrix multiply by F and what we want is a matrix multiply
by F* (* for complex conjugate). So what algebra do we use to turn F into F*?
Now to turn x+iy (i is the imaginary unit and nor current - I use j for
indexing
- sorry) into y+ix we start with (x+iy)* which is x-iy which is not it
so i(x+iy)*
which is ix-iiy or y+ix. The trick above is the F{i(x+iy)*} and if we
undo the x-y
swap it turns into i(F{i(x+iy)*})* and unwinding the brackets gets
F*ii*(x+iy)**
but ii* is 1 and (x+iy)** is (x+iy) so we have just F*(x+iy). No need for any
properties beyond those of complex conjugate. We want F* because that is the
inverse as F is unitary (or at least when correctly normalized). And it
does not
matter if the FT is fast or slow.
Reply by Greg Heath●December 16, 20092009-12-16
On Dec 15, 10:46�am, Philip Pemberton <usene...@philpem.me.uk> wrote:
> On Tue, 15 Dec 2009 08:54:54 -0500, Jerry Avins wrote:
> > Search comp.dsp for the author's name. That should narrow it down.
>
> Huh, I can't believe I didn't think of that first... I guess I'm too used
> to books cribbing code from USENET and then saying nothing about where it
> came from.
>
> >> How would I go about converting this from an FFT to an inverse-FFT?
>
> >> I've had a quick look round the 'net, and the most I've found was a
> >> quick note on Wikipedia -- "the inverse DFT is the same as the DFT, but
> >> with the opposite sign in the exponent and a 1/N factor". Do I really
> >> just need to flip the sign on PI (i.e. make it negative)?
>
> >> Sorry if this seems like a stupid question, it just seems a little too
> >> easy...!
>
> > It is that easy.
>
> Do I need to apply any additional processing to the input data?
> What about the "1/n factor"?
For any unfamiliar fft code:
fft one period of a cosine. If you don't get 2 spikes
with magnitude 0.5 then worry about the multipliers
1,1/N and 1/sqrt(N).
Hope this helps.
Greg
Reply by Vladimir Vassilevsky●December 15, 20092009-12-15
kevin wrote:
> On Dec 15, 6:48 pm, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
>
>>kevin wrote:
>>
>>>On Dec 15, 6:26 pm, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
>>
>>>>This is wrong. Check for yourself.
>>
>>>I and others have been using it for more than 20 years. With
>>>appropriate scaling, it does indeed work.
>>
>>Yes. You are right.
>>
> Actually, Vlad, I should have caveated by mentioning that it works
> only if using an FFT for complex inputs - if your FFT is for real
> only, then 'reversing the list' won't work.
I know it, and this is what got me confused :)
VLV
Reply by kevin●December 15, 20092009-12-15
On Dec 15, 6:48=A0pm, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
> kevin wrote:
> > On Dec 15, 6:26 pm, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
>
> >>This is wrong. Check for yourself.
>
> > I and others have been using it for more than 20 years. With
> > appropriate scaling, it does indeed work.
>
> Yes. You are right.
>
> VLV
Actually, Vlad, I should have caveated by mentioning that it works
only if using an FFT for complex inputs - if your FFT is for real
only, then 'reversing the list' won't work.
Kevin McGee
Reply by kevin●December 15, 20092009-12-15
On Dec 15, 6:48�pm, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
> kevin wrote:
> > On Dec 15, 6:26 pm, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
>
> >>This is wrong. Check for yourself.
>
> > I and others have been using it for more than 20 years. With
> > appropriate scaling, it does indeed work.
>
> Yes. You are right.
>
> VLV
Actually, Vlad, I should have caveated by mentioning that it works
only if using an FFT for complex inputs - if your FFT is for real
only, then 'reversing the list' won't work.
Kevin McGee
Reply by Vladimir Vassilevsky●December 15, 20092009-12-15
kevin wrote:
> On Dec 15, 6:26 pm, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
>
>
>>This is wrong. Check for yourself.
>
>
> I and others have been using it for more than 20 years. With
> appropriate scaling, it does indeed work.
Yes. You are right.
VLV
Reply by Jerry Avins●December 15, 20092009-12-15
kevin wrote:
> On Dec 15, 6:26 pm, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
>
>> This is wrong. Check for yourself.
>
> I and others have been using it for more than 20 years. With
> appropriate scaling, it does indeed work. See:
>
> [DUHAM88] P. Duhamel, B. Piron, J. M. Etcheto, �On Computing the
> Inverse DFT,� IEEE Transactions on Acoustics, Speech and Signal
> Processing, vol. 36, Feb. 1988, pp. 285-286. (�reverse the list� or
> �exchange� method for an inverse).
To reverse the rotation of a three-phase induction motor, exchange any
two of the three supply wires. Likewise, there are several inversions
that exploit the symmetry of the FT/IFT pair. I'm not sure we've heard
them all yet.
Jerry
--
Engineering is the art of making what you want from things you can get.
�����������������������������������������������������������������������
Reply by kevin●December 15, 20092009-12-15
On Dec 15, 6:26�pm, Vladimir Vassilevsky <nos...@nowhere.com> wrote:
> This is wrong. Check for yourself.
I and others have been using it for more than 20 years. With
appropriate scaling, it does indeed work. See:
[DUHAM88] P. Duhamel, B. Piron, J. M. Etcheto, �On Computing the
Inverse DFT,� IEEE Transactions on Acoustics, Speech and Signal
Processing, vol. 36, Feb. 1988, pp. 285-286. (�reverse the list� or
�exchange� method for an inverse).
Kevin McGee
Reply by Vladimir Vassilevsky●December 15, 20092009-12-15
kevin wrote:
> On 15 Dec 2009 12:46:41 GMT, Philip Pemberton <usene...@philpem.me.uk>
> wrote:
>
>
>>How would I go about converting this from an FFT to an inverse-FFT?
>
>
> For an inverse FFT, just reverse the list of arguments. If r[n] and i
> [n] are two N point arrays for the real and imaginary inputs/outputs,
> and:
>
> FFT (r,i)
>
> is your forward FFT, then an inverse FFT is:
>
> FFT (i,r)
This is wrong. Check for yourself.
VLV
Reply by Vladimir Vassilevsky●December 15, 20092009-12-15
kevin wrote:
> On 15 Dec 2009 12:46:41 GMT, Philip Pemberton <usene...@philpem.me.uk>
> wrote:
>
>
>>How would I go about converting this from an FFT to an inverse-FFT?
>
>
> For an inverse FFT, just reverse the list of arguments. If r[n] and i
> [n] are two N point arrays for the real and imaginary inputs/outputs,
> and:
>
> FFT (r,i)
>
> is your forward FFT, then an inverse FFT is:
>
> FFT (i,r)