MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: maximum entropy method for deconvolution

  • To: mathgroup at
  • Subject: [mg75432] Re: [mg75403] maximum entropy method for deconvolution
  • From: "turnback" <turnback at>
  • Date: Mon, 30 Apr 2007 03:41:28 -0400 (EDT)
  • References: <>


Your problem is a deconvolution problem.  It is difficult in general.  But 
since your function p is simply a rectangle function, things may not be that 

Let me define t0:=33.6, g(t):=G, f(t):=F

Then according to the definition of convolution, we can get:

g(t)=Integrate[f(s), {s, t-t0, t}]

and for any small dt, we can get:

==>  g(t+dt)=Integrate[f(s), {s, t+dt-t0, t+dt}]

==>  g(t+dt)-g(t)
=Integrate[f(s), {s, t+dt-t0, t+dt}]-Integrate[f(s), {s, t-t0, t}]
=Integrate[f(s), {s, t, t+dt}]-Integrate[f(s), {s, t-t0, t-t0+dt}]
=Integrate[f(s)-f(s-t0), {s, t, t+dt}]

define l(t):=f(t)-f(t-t0), then

g(t+dt)-g(t)=Integrate[l(s), {s,t,t+dt}]
==>  Limit[(g(t+dt)-g(t))/dt,dt->0] = Limit[(Integrate[l(s), 

Suppose g(t) is differentiable, then

==> g'(t)=l(t)=f(t)-f(t-t0)

then performing Fourier transform:

==>  I*w*G(w)=(1-Exp[-I*w*t0])*F(w)

==> F(w)=G(w)*I*w/(1-Exp[-I*w*t0])

With inverse transform, you get f(t).

By the way, According to my knowledge, p's Fourier transform is a Sinc 
function.  When you claim function p has a lot of zeros in the frequency 
domain, you may implement the transform by using Discrete Fourier Transform 
and you pick up a specific sampling rate.   If real time performance is not 
your concern, try to increase your sampling rate a lot.  You should get 
correct result with your original approach.

After all, I just realise that instead of writing 
p=UnitStep[t]*UnitStep[33.6-t], you can write it as: 
p[t]=UnitStep[t]-UnitStep[t-33.6].  You may find much easier proof.


----- Original Message ----- 
From: "dantimatter" <dantimatter at>
To: <mathgroup at>
Sent: Saturday, April 28, 2007 6:00 AM
Subject: [mg75432] [mg75403] maximum entropy method for deconvolution

> hello all,
> first off, many thanks to 'Roman' et al for all the previous help with
> my inversion problem.
> i have a convolution function G which is the convolution of F and p (G
> = F**p).   i know G and i know p, and i'd like to extract F.  i can do
> this by taking the Fourier transform of G, dividing by the Fourier
> transform of p, and inverting the result to get F.  the problem is
> that p is a step function (p = UnitStep[t]*UnitStep[33.6-t]) which has
> a lot of zeros in frequency space, and thus  it is difficult to get at
> F via inversion.  Mathematica is happily doing the inversion but the
> results are very noticeably wrong.
> i understand from my conversations with some of you and much time
> spent in the library that this is in general a difficult problem, but
> there are some methods that are known to make this type of problem
> tractable, such as the maximum entropy method (MEM) for inversion.  is
> anyone aware of an implementation of a MEM algorithm in Mathematica?
> i have read Numerical Recipes a couple of times and i am unable to get
> my head around the relevant chapter.  If there isn't a Mathematica
> implementation, perhaps someone could offer some advice on where else
> to look?  if it exists, a "for dummies" type book with step-by-step
> instructions would be the best resource for me...
> cheers,
> dan

Find out how you can get spam free email.

  • Prev by Date: Re: Finding cardinality of set based on random selection from set
  • Previous by thread: maximum entropy method for deconvolution
  • Next by thread: Re: maximum entropy method for deconvolution