Re: deconvolution in time?



Dear Jeremy,

now you discovered some practical limitations of the discussed
deconvolution-in-time 'algorithm'.

Some years before I used this 'algorithm' to determine impulse
responses of microphones: Both a reference microphone and the DUT were
excited by a step response produced by a loudspeaker - even the
deconvolution of both step responses yields the DUT's impulse response
(I do not prove this since it's trivial).

Most of the microphone measurements did work, some did not. I figured
out that a 'usable' signal-to-noise ratio is essential to receive _any_
result at all, otherwise you get undefined data, maybe caused by the
limited precision of the number representation, I did not observe the
phenomenon in detail then but rather tried to get the signal-to-noise
ratio improved by the measurement itself to get useable results. The
non-working measurements where those with dynamic microphones with
small output signals, all condenser microphones measurements that
output higher voltage signals worked well. I do not know exactly what
happens 'under the hood' of the calculus software exactly but maybe I
have some explanations what does happen probably... In our company we
did not continue the work on this measuerment method so I had no
resources to research the details more deeply anymore.

I do not want to bore the entire comp.dsp community with some Maple
worksheets since most of them cannot make any use of this, I better
send them to your email addess directly if you like. If you have no
direct access to the Maple software, I can convert the work*** to a
HTML file with embedded pictures where you can see clearly the results
or the error messages respectively.

Since I did not use Matlab for the deconvolution so I cannot help you
with the details on the error messages you get from this software. I
did all the maths using Maple, but I think the basic behaviour is
similar.

In contrast to you measurement vectors as well as your test vectors in
both cases all vectors I used were of identical length as I did show
with my examples in the beginning of this thread. Moreover I converted
all sampled data to float (with Maple one can adjust the number of
digits for improved precision, I do not know if this is possible with
Matlab).

The range of number represenation is essential to solve that problem
since the numbers tend to become _very_ small with the matrix
inversion, if you use integer maybe this does not work. The Matlab
warning you reports leads you to that direction clearly...

The described method works for all convoluted signals, the phase
behaviour does not affect the deconvolution itself since we are _not_
leaving the time domain we have _no_ 'complex' signals in any way,
only 'real' samples. We do not evaluate frequencies, group delays or
phase responses in any way, so it is absolutely meaningless if signal
has minimum or non-minimum phase behaviour.

The most essential thing is that h(1) =/= 0, otherwise the matrix
cannot be inverted. But what will happen if h(1) is very small?

The determinant that equals h(1)^n will be smaller by the _power_ of n
than h(1) then. Since the adjugate matrix is multiplied by 1/(h(1)^n),
if h(1) is very small the determinant will 'explode' and maybe leave
the number represenation. Probably this is the reason for the
misbehaviour you describe.

All the best

Christian

.