Forcing IFFT to start/end at 0 value

  • Context: Graduate 
  • Thread starter Thread starter swraman
  • Start date Start date
  • Tags Tags
    Value
Click For Summary
SUMMARY

The discussion focuses on the challenge of ensuring that the Inverse Fast Fourier Transform (IFFT) of a signal starts and ends at zero when working with real signals and their frequency response functions. The user employs the Discrete Sine Transform (DST) and its inverse (idst) in MATLAB to achieve this, but encounters issues with complex outputs despite needing strictly real signals. The key finding is that for the IFFT to yield a zero-starting signal, the condition Real(sum([R(f) ./ H(f)])) must equal zero, and the user seeks an engineering solution to modify the input signal accordingly.

PREREQUISITES
  • Understanding of Fast Fourier Transform (FFT) and Inverse Fast Fourier Transform (IFFT)
  • Familiarity with Discrete Sine Transform (DST) and its inverse (idst)
  • Basic knowledge of signal processing concepts, particularly with real signals
  • Experience using MATLAB for signal processing tasks
NEXT STEPS
  • Research methods to modify input signals to ensure zero-starting conditions in IFFT
  • Explore the properties and applications of Discrete Sine Transform (DST) in signal processing
  • Learn about the implications of using FFT versus DST in system identification
  • Investigate MATLAB functions for signal manipulation to achieve desired output characteristics
USEFUL FOR

Signal processing engineers, MATLAB users, and researchers working with real signals and frequency response functions who need to ensure specific output characteristics in their systems.

swraman
Messages
165
Reaction score
0
Hi,

I am not sure if this is the correct forum, but...

I am working with FFTs of real signals. I have a FFT of a time signal (call it R(f)) and a frequency response (output/input) function (call it H(f)).

The math is simple, I want to know what I need to put into my system defined by H(f) to get R(f) out. This is simple division:

input(t) = IFFT[R(f) ./ H(f)]

The problem arises because the IFFT often returns signals that do not begin/end at 0 - so when I apply the signal to my physical plant, there is a transient created by the instant jump from 0 to input(t=0). The FFT assumes a continuous repetition of my input(t) signal, which is why it is OK for it to output a non-zero-initial signal as it starts and ends at the same non-zero value.

From my basic analysis, I have found that Real(sum([R(f) ./ H(f)])) must be zero.

Any ideas on how to force the IFFT of the signal to be zero?
 
Physics news on Phys.org
To force a signal to zero at ##t=0##, you can do a sine transform, which corresponds to expanding the signal on sines only. You seem to be using Matlab, so check out dst and idst.

Note also that this means that the solution you get doesn't correspond exactly to IFFT[R(f) ./ H(f)], but to some modified R(f) or H(f).
 
Interesting, I've never used the DST.

Perhaps I just do not understand the DST yet, but it looks like whenever I idst() my sine domain function, it returns a complex time signal. WHen using the fft, the imaginary part of the ifft() is neglegable, but using dst it is not.

I am dealing with strictly real signals, so all my ffts are symetric, and thus all my iffts are real. Does this property not hold for the dst?

Thanks.
 
The output should be strictly real. I'm not sure what is going on here.
 
could it be that my transfer function was computed using FFTs?
 
I completed the entire system identification using DST instead of FFTs.
Code:
H = dst(output) / dst(input) % input was a broadband random signal
necessary_input = desired_output ./ H; % desired output is the DST of the desired output waveform
necessary_input_time = idst(necessary_input);

I do get a purely real signal when I do this, but it is not the correct input signal to my system to result in the desired output.
 
I don't fully understand what you are doing, but shouldn't
Code:
H = dst(output) / dst(input)
be
Code:
H = dst(output) ./ dst(input)
?
 
yes it was, i was not copy and pasting.

I could not find out a solution to this problem and am seeking a more 'engineering' solution one rather than a mathematical one now. Thanks for the ideas though.
 

Similar threads

  • · Replies 7 ·
Replies
7
Views
4K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 85 ·
3
Replies
85
Views
11K