I am dealing with an inverse Fourier transform of a sampled complex function, $H(\omega)$. I want to obtain a real transformed function $h(t)$, which means that $H(-\omega)=H^{\ast}(\omega)$ has to be fulfilled. In order to have $h(t)$ sampled both for positive and negative times I use following procedure:

 h_c = RotateRight[InverseFourier[RotateLeft[Join[Conjugate[Reverse[H]],H], n/2 \[Minus]1], 
 FourierParameters -> {0, 1}], n/2 \[Minus] 1]

What bothers me is that $h_c$ is generally complex. Then I simply take only its real part, e.g.

 h = Re[h_c]

However, I wonder if this approach is right.


The approach using Re[] is at least questionable and even more important, not necessary. First notice how Mathematica performs the Fourier transformation. It stores $\omega=0$ in the first element of the list. The highest frequencies are in the middle. Doing something like the following results in a real valued transformation

t1Lst=Table[i+ I i Sin[2.1 i],{i,0,3,.1}];
tLst=Join[t1Lst, Conjugate[ Reverse[ Drop[t1Lst , 1] ] ] ];

This list unfortunately has an odd number of elements, though. Naturally you must assure that the $\omega=0$ value is real. If you want an even number of list elements you must also assure that the high frequency value $\omega_\mathrm{max}$ is real valued.

So a list of type $a_0,a_1,\ldots,a_{n-1},a_n, a_{n-1}^* ,\ldots ,a_1^* $ with $a_0 \in \mathbb{R}$ and $a_n \in \mathbb{R}$


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.