"Marcin Szugajew" <mszugi@gmail.com> wrote in message <i8a2ep$bp6$1@fred.mathworks.com>...
> "Wayne King" <wmkingty@gmail.com> wrote in message <i888vc$glk$1@fred.mathworks.com>...
> > "Marcin Szugajew" <mszugi@gmail.com> wrote in message <i8853k$a4u$1@fred.mathworks.com>...
> > > Hi!
> > > I have a set of points non uniformly distributed on the frequency axis. These points belong to a certain signal (they form a spectrum) and are given in the form a + jb. I want to reproduce the time signal using IFFT. I am thinking about the interpolation of data points so that they are evenly spaced on the frequency axis and after i want to take ifft. How to make complex data interpolation? Separately, real and imaginary parts, or interpolation in polar coordinates? How this task should be done in Matlab? How is interp function performing the task of complex numbers interpolation?
> > >
> > > P.S
> > > Has anyone seen articles or books describing this problem and could give me some titles?
> >
> > Hi Marcin, if you look at the documentation on interp1(), there is a section on complex data
> >
> > >>doc interp1
> >
> > I have found that 'spline' option works well with complexvalued data. I'm not sure how well that process will work in this use case however, because I'm guessing that you will break the conjugate symmetry property of the Fourier transform of a realvalued signal (assuming your input signal is realvalued). Then when you apply the inverse DFT, you will not get a realvalued output.
> >
> > Wayne
>
> Thanks for the reply Wayne!
> My input data is not real it is complex. Is there any other way of takeing IFFT of non uniformly distributed complex data (without interpolation)? Some ideas? What do you mean that it was working well when you mentioned 'spline' option? What was your criterion?
>
> Marcin
Sorry Marcin, just to clarify, I realize that your Fourier transform is complexvalued. When I said input signal, I was referring to the input to fft(). If you are starting with a realvalued signal and you take the DFT of that signal (using fft()). The resulting complexvalued vector will exhibit conjugate symmetry between the "positive" and "negative" frequencies. If you try to interpolate the complexvalued vector you have (the nonuniformly spaced vector) using interp1(), I suspect you will break that conjugate symmetry and the resulting inverse DFT will not be real.
Off the top of my head, I'm not sure what to suggest to actually implement a nonuniform ifft. There are certainly routines and libraries available to implement nonuniform ffts. That topic has been discussed in many threads in this group and there are file exchange submissions:
http://www.mathworks.com/matlabcentral/fileexchange/25135nufftnfftusfft
Wayne
