deconvolution
Martin Czech
martin.czech at intermetall.de
Wed Jan 5 14:18:56 CET 2000
Sorry for all this boring convolution stuff. But at the end of this
text thre is maybe an idea worth thinking about.
Thanks for all the suggestions for deconvolution! Ie. in this case the
task to build a FIR filter that will reconstruct a unit impulse out of
any recorded impulse in order to get a real impulse response.
Or more genrall: a FIR filter that will reconstruct any sequence
out of a given sequence.
After thinking about the problem I now think that no FIR filter can do
the job, ie. finite deconvolution IS IMPOSSIBLE.
Prove:
a(n) recorded sequence (M samples)
b(n) FIR filter coeff. (N samples)
c(n) target sequence (M+N-1 samples)
The linear convolution a**b can be written as a matrix (set of linear
equations):
|a(0) 0 0 0 0 .... | | b(0) | | c(0) |
|a(1) a(0) 0 0 0 .... | | b(1) | | c(1) |
|a(2) a(1) a(0) 0 0 .... | x | b(2) | = | c(2) |
.....................................................
|a(M) ............. a(0) | | b() | | c() |
| 0 a(M) ........... a(1) | | b() | | c() |
.....................................................
| 0 0 0 0 0 a(M) | | b(N) | | c(N+M-1) |
It is a bit hard to see, but it is N+M-1 linear equations with N unknown
variables b(n). This system is overly restricted, ie. it will have no
solution, other then trivial cases. Linear algebra tells us so.
No need to look further? No.
We now know that there is no excact FIR filter solution for our problem.
But maybe we could have a approximation?
The first equation tells us, that
b(0)= c(0)/a(0) ; c(0)=1 in my special case of interest
and further:
b(n)= c(n)/a(0) -1/a(0) * SUM(j=0;j<=n-1){b(j)*a(n-j)}
ie. the diagonal matrix structure leads us to a recursive formula.
In other words, we can try to escape from the fact that N+M-1 > N
by using infinite large values of N, ie. an infinite filter.
I know no means to obtain the order and the poles and zeros
from an infinite impulse response.
But we can do the following:
We have to truncate the recursion somewhere. This truncation will lead
to an error. The truncated FIR filter seems to work perfectly at first,
but as soon as the signal runs (or would run) into the truncated area the
error is obviously there. The idea is now to superimpose a decay function
(exponential or linear) over the untruncated sequence. This will lead
to some error, since cancellation is not perfect, but this error can be
made as small as needed. At some point the decay will make the sequence
samples so small that we can truncate without too much error.
The error within the sequence and at the point of truncation depends
on the sequence length, it can thus be minimised at will.
This is similar to windowing, but the window function is unsymmetrical,
therefore I said "decay".
I tryed it out. It is interesting that some test sequences lead to FIR
sequences b(n) that were allready decaying sufficiently, so truncation
had no large effect for sufficiently large filter order N. But this is
not always the case.
I wanted to gain the unit impulse response in the first place, ie. c(0)=1
and c(n) =0 else. But one could think a bit further, we could use any
sequence c(n) that we want to, if only the filter is long enough.
What will this mean? We have a filter that somehow transforms a given
waveform into another with some unknown approximation error.
How will this sound ? I have no clue.
What does this mean for longer waves, eg. spoken words?
How does it sound if I try to convert one word into another?
How will the approximation error sound?
I have never heard nor seen somebody doing sonething like this.
Any hints?
m.c.
More information about the Synth-diy
mailing list