# fast convolution and normalization

Started by 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

```