Forcing IFFT to start/end at 0 value

  • Thread starter swraman
  • Start date
  • Tags
    Value
In summary, the conversation revolves around using FFTs and DSTs to analyze and manipulate real signals. The main issue is that the IFFT often returns non-zero initial signals, causing a transient in the physical plant. The solution proposed is to use the DST to force the signal to zero at t=0. However, the output is complex instead of strictly real, which leads to further discussion about the properties of DST and FFT. Ultimately, the person is still seeking a solution to their problem and is open to an engineering solution rather than a mathematical one.
  • #1
swraman
167
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
  • #2
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).
 
  • #3
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.
 
  • #4
The output should be strictly real. I'm not sure what is going on here.
 
  • #5
could it be that my transfer function was computed using FFTs?
 
  • #6
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 teh desired output.
 
  • #7
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)
?
 
  • #8
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.
 

What is an IFFT?

An IFFT, or Inverse Fast Fourier Transform, is a mathematical operation that converts a signal from the frequency domain to the time domain.

What does it mean to "force" an IFFT to start/end at 0 value?

Forcing an IFFT to start/end at 0 value means that the signal will begin and end at a value of 0 in the time domain. This is achieved by modifying the phase of the signal in the frequency domain before performing the IFFT.

Why would someone want to force an IFFT to start/end at 0 value?

There are several reasons why someone may want to force an IFFT to start/end at 0 value. One reason is to eliminate any DC offset in the signal, which can affect the accuracy of the signal. Another reason may be to improve the efficiency of the signal processing algorithm.

How is an IFFT forced to start/end at 0 value?

To force an IFFT to start/end at 0 value, the phase of the signal in the frequency domain is modified so that it starts and ends at 0 degrees. This can be achieved by multiplying the signal by a complex exponential function with a phase of 0 degrees.

Are there any disadvantages to forcing an IFFT to start/end at 0 value?

While forcing an IFFT to start/end at 0 value can eliminate DC offset and improve efficiency, it can also introduce artifacts in the signal. This is because modifying the phase of the signal can alter the shape of the signal in the time domain, potentially distorting the original signal. Therefore, it is important to carefully consider the potential trade-offs before forcing an IFFT to start/end at 0 value.

Similar threads

  • Differential Equations
Replies
1
Views
766
Replies
7
Views
2K
  • Differential Equations
Replies
1
Views
655
  • Differential Equations
Replies
1
Views
662
  • Electrical Engineering
Replies
4
Views
310
  • Electrical Engineering
Replies
4
Views
815
Replies
32
Views
369
Replies
4
Views
1K
  • Differential Equations
Replies
2
Views
2K
  • Differential Equations
Replies
3
Views
1K
Back
Top