FPGA Central - World's 1st FPGA / CPLD Portal

FPGA Central

World's 1st FPGA Portal

 

Go Back   FPGA Groups > NewsGroup > DSP

DSP comp.dsp newsgroup, mailing list

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 09-07-2009, 11:15 PM
nigelh
Guest
 
Posts: n/a
Default Cleanup after freq.domain manipulation

Please excuse this question from a DSP novice. I want to filter an audi
signal to remove specific (varying) tones by reducing the magnitude o
their coefficients in the frequency domain. (So, for each "block" of inpu
samples I perform an FFT, symmetrically adjust the complex coefficients
perform an inverse FFT, and append the result to the output signal.) Afte
attenuating selective frequencies in a "notch-like" fashion and convertin
back to the time domain, I observe ripples near the edges of the signa
that create high-frequency noise. To remedy this, I have tried usin
constant-overlap-add, which has reduced but not eliminated th
high-frequency noise.

I understand that multiplication in the frequency domain = convolution i
the time domain, and that the attenuation operation I am performin
probably resembles the application of some FIR filter in the time domain.

What strategies are commonly used to avoid these time-domain artefact
from frequency-domain operations? Would a subsequent low-pass filter (i
the time domain) be the best I can do?


Reply With Quote
  #2 (permalink)  
Old 09-08-2009, 02:07 AM
robert bristow-johnson
Guest
 
Posts: n/a
Default Re: Cleanup after freq.domain manipulation

On Sep 7, 5:15*pm, "nigelh" <nigel.ho...@hydrix.com> wrote:
> ... *I want to filter an audio
> signal to remove specific (varying) tones by reducing the magnitude of
> their coefficients in the frequency domain. *(So, for each "block" of input
> samples I perform an FFT, symmetrically adjust the complex coefficients,
> perform an inverse FFT, and append the result to the output signal.) *After
> attenuating selective frequencies in a "notch-like" fashion and converting
> back to the time domain, I observe ripples near the edges of the signal
> that create high-frequency noise. *To remedy this, I have tried using
> constant-overlap-add, which has reduced but not eliminated the
> high-frequency noise.


do you know for sure that you're doing your overlap-add correctly?

you need to make sure that the impulse response associated with the
frequency response you just dialed in is limited in length to L
samples. then if N is the size of your FFT, the most you can advance
per frame with overlap-add (or overlap-save) is N-L+1 samples.

> I understand that multiplication in the frequency domain = convolution in
> the time domain,


with the Discrete Fourier Transform (which is what you are doing if
you're doing this with a computer), then multiplication in the
frequency domain causes *circular* convolution in the time domain.
this is a property of the DFT (or "FFT") that is fundamental. the DFT
or FFT really does things to periodic signals, so you need to do a
"work-around" to apply that circular tool to non-periodic signals.
overlap-add and overlap-save are the only work-arounds i know of to
perform linear convolution with something that inherently does
circular convolutions.

> and that the attenuation operation I am performing
> probably resembles the application of some FIR filter in the time domain.


yeah, in the *circular* time domain.

> What strategies are commonly used to avoid these time-domain artefacts
> from frequency-domain operations?


i think the only ones are overlap-add and overlap-save.

r b-j
Reply With Quote
  #3 (permalink)  
Old 09-08-2009, 02:41 AM
Jerry Avins
Guest
 
Posts: n/a
Default Re: Cleanup after freq.domain manipulation

nigelh wrote:
> Please excuse this question from a DSP novice. I want to filter an audio
> signal to remove specific (varying) tones by reducing the magnitude of
> their coefficients in the frequency domain. (So, for each "block" of input
> samples I perform an FFT, symmetrically adjust the complex coefficients,
> perform an inverse FFT, and append the result to the output signal.) After
> attenuating selective frequencies in a "notch-like" fashion and converting
> back to the time domain, I observe ripples near the edges of the signal
> that create high-frequency noise. To remedy this, I have tried using
> constant-overlap-add, which has reduced but not eliminated the
> high-frequency noise.
>
> I understand that multiplication in the frequency domain = convolution in
> the time domain, and that the attenuation operation I am performing
> probably resembles the application of some FIR filter in the time domain.
>
> What strategies are commonly used to avoid these time-domain artefacts
> from frequency-domain operations? Would a subsequent low-pass filter (in
> the time domain) be the best I can do?


The sharper a filter's cutoff, the more pronounced the ringing you
observe -- look up "Gibbs phenomenon" -- will be. Filtering by diddling
DFT coefficients is what the Marines call a "recruit" thing to do.

Jerry
--
Engineering is the art of making what you want from things you can get.
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Reply With Quote
  #4 (permalink)  
Old 09-08-2009, 01:09 PM
Rune Allnor
Guest
 
Posts: n/a
Default Re: Cleanup after freq.domain manipulation

On 7 Sep, 23:15, "nigelh" <nigel.ho...@hydrix.com> wrote:
> Please excuse this question from a DSP novice. *I want to filter an audio
> signal to remove specific (varying) tones by reducing the magnitude of
> their coefficients in the frequency domain. *(So, for each "block" of input
> samples I perform an FFT, symmetrically adjust the complex coefficients,
> perform an inverse FFT, and append the result to the output signal.) *After
> attenuating selective frequencies in a "notch-like" fashion and converting
> back to the time domain, I observe ripples near the edges of the signal
> that create high-frequency noise. *


This ripple ort ringing effect is the reason why no one
manipulate DFT coefficients directly.

> What strategies are commonly used to avoid these time-domain artefacts
> from frequency-domain operations? *


The way do do this is to

a) Realize that filter design is to come up with an acceptable
trade-off between desired effects and unwandted side effects
b) Learn how the desired effecst and unwanted side effects interact
c) Use a method that lets you balance the two.

You have already see a) in action - a very narrow filter
gives ringing in time domain. You have already seen explanations
that indicate that the cause of the ringing is a combination
of very narrow stopband and very steep edges towards the
passband.

The way to deal with the situation is to come up with a
'classic' filter response where you specify

1) What largest stop-band is acceptable
2) What smallest stop-band attenuation is acceptable
3) What largest transition band is acceptable
4) What largest passband ripple is acceptable

Once you have the spec, you use one of the standard filter
design packages to ctually come up with the filter
coefficients.

Rune
Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Low freq to high freq conversion paryanz DSP 18 06-07-2008 06:32 AM
Q) MIMO-OFDM and freq-domain equalization lsw00kor DSP 1 11-08-2007 05:30 PM
Why not set unnecessary frequency components to zero in freq domain? adolf123 DSP 8 10-12-2007 10:18 PM
Some questions about transformation to time domain from freq. domain kawait DSP 0 10-24-2005 03:41 AM
filtering in freq domain sundar DSP 15 11-12-2004 09:28 AM


All times are GMT +1. The time now is 02:13 AM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright 2008 @ FPGA Central. All rights reserved