Re: maximum entropy method for deconvolution

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

```Hi,

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),
{s,t,t+dt}])/dt,dt->0]

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.

hui.

----- Original Message -----
From: "dantimatter" <dantimatter at gmail.com>
To: <mathgroup at smc.vnet.net>
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.
http://www.bluebottle.com

```

• 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