Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Signal processing fft

  1. Nov 24, 2009 #1

    i'm given a signal h(t) = v(t)*g(t)
    where g(t) is a distortion/noise that got added
    and has a very low frequency compared to v(t)

    i need to devise a method to clean up g(t)

    i'm thinking of to do the fft on the signal h(t),
    and remove the lower frequencies and do the inverse fft,
    but this might not just remove g(t), but it may as well remove v(t)

    any hints?
  2. jcsd
  3. Nov 24, 2009 #2
    I haven't studied this in any good detail, so my answer is not going to be the best. But I think your solution is correct, and that the problem with this is a fundamental problem with removing noise. I have been searching my files because I remember reading all about this, but I can't find what I read anywhere.

    I think the answer is in choosing the right method of suppressing low frequencies, for example, multiplying the Fourier transform by some function which is inversely proportional to frequency.

    I wish I had this book though! By the way, is * a convolution in your notation or multiplication?
  4. Nov 24, 2009 #3


    User Avatar

    Staff: Mentor

    I have the same question as MikeyW. You say in your post that g(t) is added, but are using * as the combination symbol. If the g(t) is just added, and is lower frequency, they it seems that running h(t) through a DSP highpass filter would do what you want?
  5. Nov 24, 2009 #4
    sorry for the confusion. it's a multiplication. by 'add' i meant the two signals got mixed altogether.
  6. Nov 25, 2009 #5


    User Avatar

    Staff: Mentor

    Why are they multiplied? Where is the non-linearity? Or is this just a coursework exercise? What is the context please?
  7. Nov 26, 2009 #6
    i don't know about the non-linearity. this is for a course, and we've only learnt fft and some fourier analysis.

    the questions is we're suppose to receive am radio singal, but due to atmospheric/weather condition, loudness of the signal changes.

    so the original signal we wanted to receive was v(t), but instead we get v(t)*g(t),
    and g(t) has relatively low frequency compared to v(t).
  8. Nov 26, 2009 #7
    Can you double check that it's not a convolution?

    If you multiply two functions v(t)g(t) would be my notation, to me v(t)*g(t) suggests convolution, especially in signal processing... is the question in original form specific about what the symbol "*" means?
  9. Nov 26, 2009 #8
    i've checked and it's multiplication, NOT CONVOLUTION. so v(t)g(t), instead of v(t)*g(t).
    sorry for the confusion.
  10. Nov 26, 2009 #9
    i was able to solve this problem.

    the key was to take log of the function.

    then it becomes logv(t) + log(g(t))
    then we do the usual fft then do the filtering, then do inverse fft to get back the original signal.
  11. Nov 26, 2009 #10


    User Avatar
    Gold Member

    Well you would not have the original signal, you would have log( original signal ).

    BTW, as pointed out above the expression v(t) times g(t) is not an addition of noise, it is a modulation, a non-linear operation for any non-trivial g(t). No linear filter operation will recover the v(t). You'd need another non-linear operation to recover v(t), such as a demodulation.
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook