Got Questions? Get Answers.
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
Complex Signal Interpolation

Subject: Complex Signal Interpolation

From: Marcin Szugajew

Date: 2 Oct, 2010 20:36:04

Message: 1 of 4

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?

Subject: Complex Signal Interpolation

From: Wayne King

Date: 2 Oct, 2010 21:42:04

Message: 2 of 4

"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 complex-valued 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 real-valued signal (assuming your input signal is real-valued). Then when you apply the inverse DFT, you will not get a real-valued output.

Wayne

Subject: Complex Signal Interpolation

From: Marcin Szugajew

Date: 3 Oct, 2010 14:03:05

Message: 3 of 4

"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 complex-valued 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 real-valued signal (assuming your input signal is real-valued). Then when you apply the inverse DFT, you will not get a real-valued 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

Subject: Complex Signal Interpolation

From: Wayne King

Date: 3 Oct, 2010 14:38:03

Message: 4 of 4

"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 complex-valued 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 real-valued signal (assuming your input signal is real-valued). Then when you apply the inverse DFT, you will not get a real-valued 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 complex-valued. When I said input signal, I was referring to the input to fft(). If you are starting with a real-valued signal and you take the DFT of that signal (using fft()). The resulting complex-valued vector will exhibit conjugate symmetry between the "positive" and "negative" frequencies. If you try to interpolate the complex-valued vector you have (the non-uniformly 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 non-uniform ifft. There are certainly routines and libraries available to implement non-uniform ffts. That topic has been discussed in many threads in this group and there are file exchange submissions:

http://www.mathworks.com/matlabcentral/fileexchange/25135-nufft-nfft-usfft

Wayne

Tags for this Thread

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us