FFT convolution shifts resulting waveform

15 views (last 30 days)
Maarten
Maarten on 21 Feb 2012
I have a problem regarding a FFT convolution. I convolve a time signal (swept sine) with a frequency response curve (magnitude and phase) in the frequency domain. The frequency response curve is in fact the frequency response of a sensor that I (later) need to inverse to correct the measured waveform (the swept sine). Let’s forget the inversion for now. I do the following:
1. ensure that the frequency response (symmetric, with the first bin/DC equal to zero) has the same number of frequency bins (real and imaginary) then the measured swept sine 2. calculate the DFT (FFT) of the swept sine 3. perform an element-wise multiplication of both FRF's 4. calculate the inverse DFT (IFFT) of the multiplied FRF's to end up with the corrected time wave.
The problem is that the resulting wave has a slope. The slope has a 'frequency' much lower than there could be present in either frequency bins. The DC bins are also zero. And the resulting wave(red) has an initial offset and transient.
Can someone explain this phenomenon? And hopefully give me a hint to correct this?

Answers (2)

Dr. Seis
Dr. Seis on 21 Feb 2012
Yes... that can happen. If your frequency response is boosting low frequencies, then "strange" things like that can happen. Using the "detrend" function can help. Typically this happens to me when I am deconvolving the instrument response from a recorded seismogram... then I will usually try to remove these linear trends and/or DC offsets before I filter to a desired frequency band.

Maarten
Maarten on 21 Feb 2012
Hello Elige,
Thanks for your reply. DETREND works, but is not the way to go I think. I want to know the fundamental thing that is happening such that I can corrected it. I am not boosting the low frequencies. In fact I am lowering them (about a few per cent only).
Regarding your experience with instrument response corrections I would like to reformulate the question:
What would in your opinion be the best way to achieve the following:
I have a measured time wave (about 100 sec long) from an accelerometer measuring vibrations of some machinery. I also have the frequency response of the accelerometer in question. This frequency response is given for both its amplitude and phase. I have an analytic equation describing the frequency response and therefore I am able to calculate the amplitude and phase at each frequency necessary. Completing this to the Fourier coefficients is easy, I just set the first bin to zero and copy the vector as a flipped complex conjugate and concatenate it to the end of the initial vector (without the first bin of course). This results in 2*N+1 bins.
Now having both the time wave and the frequency response I would like to correct the time wave with the inverse of the frequency response of the accelerometer to end up with the actual physical accelerations. What would be the best way? FFT convolution? The frequency response is such that I would not be feasible to fit a transfer function to it (with invfreqz for example).
  1 Comment
Dr. Seis
Dr. Seis on 21 Feb 2012
It doesn't make sense to me how a trend like that could be formed without boosting the low frequencies. Can you provide the frequency domain representation of the response function you are using for convolution?
As far as removing the response, I will have to check out my code when I get home. I had a list of poles, zeros, and gain that I used to form the response function in the frequency domain. I removed this response from the recorded data via deconvolution, which in the frequency domain is simply element-by-element division.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!