# Re: [music-dsp] "Factorization" of filter kernels

```I've only seen this kind of thing done on 2D signals (i.e. images),
where it is much faster to use two 1D convolution passes (one in each
dimension) than to use the much larger 2D kernel. The term I'm used to
is a "separable" filter. It works fine as a technique, but you are
very restricted in the kernels you can use.```
```
In 1D, are you really gaining anything? Won't two 512 sample kernels
take the same time to process as one 1024 sample kernel?

A different technique I've used to create very long convolutions with
less processing time for images (but should work for sound as well) is
to downsample, apply convolution, then upsample. Of course, you're
going to lose the higher frequencies in the downsampling step, but it
can be useful in situations where that is an acceptable trade.

On Tue, Jan 18, 2011 at 2:46 AM, Uli Brueggemann
<uli.brueggem...@gmail.com> wrote:
> Hi,
>
> a convolution of two vectors with length size n and m gives a result
> of length n+m-1.
> So e.g. two vectors of length 512 with result in a vector of length 1023.
>
> Now let's assume we have a vector (or signal or filter kernel) of size
> 1024, the last taps is 0.
> How to decompose it to two vectors of half length? The smaller vectors
> can be of any arbitrary contents but their convolution must result
> must be equal to the original vector.
>
> It would be even interesting to "factorize"  given kernel into n
> smaller kernels. Again the smaller kernels may have any arbitrary but
> senseful contents, they can be identical but this is not a must.
>
> Is there a good method to carry out the kernel decomposition? (e.g.
> like calculating n identical factors x of a number y by x =
> Exp(Log(y)/n) with x^n = x*x*...*x = y)
>
> Uli
> --
> dupswapdrop -- the music-dsp mailing list and website:
> subscription info, FAQ, source code archive, list archive, book reviews, dsp