DSPRelated.com
Forums

fast convolution and normalization

Started by Florian Schmidt November 30, 2005
Hi,

i searched the web for quite some time now and just don't grok how to
normalize when doing partitioned frequency domain convolution.

Basically for an unnormalized FFT/IFFT pair (i use fftw, so all the
FFT/IFFT i use is unnormalized), the necessary normalization factor
would be 1/N applied once or 1/sqrt(N) applied twice. But now i have
IFF(FFT(signal)*FFT(response)) and i wonder what normalization factor to
use. And especially: where :)

I tried all kinds of combinations with N and sqrt(N) and even third
root(N), but everything is either too loud or too quite or seems to
depend on partitionsize (a sign for getting it wrong). What do i miss?
Did i simply misinterpret my output?

Right now i use 1/(3 * N) normalization at output which seems to work
ok. But what is the right number? As i use padded FFT/IFFT actually N is
2*N', where N' is the partitionsize.

Flo


-- 
Palimm Palimm!
http://tapas.affenbande.org

Florian Schmidt wrote:
> Hi, > > i searched the web for quite some time now and just don't grok how to > normalize when doing partitioned frequency domain convolution. > > Basically for an unnormalized FFT/IFFT pair (i use fftw, so all the > FFT/IFFT i use is unnormalized), the necessary normalization factor > would be 1/N applied once or 1/sqrt(N) applied twice. But now i have > IFFT(FFT(signal)*FFT(response)) and i wonder what normalization factor to > use. And especially: where :)
shouldn't matter where if you're doing this in floating-point. there should be a 1/N attached to the IFFT if "FFT(response)" is the DFT of the impulse response h[n].
> I tried all kinds of combinations with N and sqrt(N) and even third > root(N), but everything is either too loud or too quite or seems to > depend on partitionsize (a sign for getting it wrong). What do i miss?
perhaps your impulse response h[n] is large enough to give it that gain to make it too loud.
> Did i simply misinterpret my output? > > Right now i use 1/(3 * N) normalization at output which seems to work > ok.
sounds like, to me, that all of your h[n] or the FFT of it (H[k]) should be reduced by a factor of 3. r b-j